guard-sprockets 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,60 +1,89 @@
1
1
  require 'guard'
2
2
  require 'guard/guard'
3
- require 'erb'
4
3
 
5
4
  require 'sprockets'
5
+ require 'execjs'
6
6
 
7
7
  module Guard
8
8
  class Sprockets < Guard
9
9
  def initialize(watchers=[], options={})
10
- super
11
-
12
- # init Sprocket env for use later
13
- @sprockets_env = ::Sprockets::Environment.new
14
-
10
+ super
11
+
12
+ @sprockets = ::Sprockets::Environment.new
13
+
15
14
  @asset_paths = options.delete(:asset_paths) || []
16
- # add the asset_paths to the Sprockets env
17
15
  @asset_paths.each do |p|
18
- @sprockets_env.append_path p
16
+ @sprockets.append_path p
17
+ end
18
+
19
+ if options.delete(:minify)
20
+ begin
21
+ require 'uglifier'
22
+ @sprockets_env.js_compressor = ::Uglifier.new
23
+ UI.info "Sprockets will compress output (minify)."
24
+ rescue
25
+ UI.error "minify: Uglifier cannot be loaded. No compression will be used.\nPlease include 'uglifier' in your Gemfile.\n#{$!}"
26
+ end
19
27
  end
20
28
  # store the output destination
21
29
  @destination = options.delete(:destination)
30
+ @root_file = options.delete(:root_file)
31
+
22
32
  @opts = options
23
33
  end
24
34
 
25
35
  def start
26
- UI.info "Sprockets waiting for asset file changes..."
27
- UI.info " -- external asset paths = [#{@asset_paths.inspect}]" unless @asset_paths.empty?
28
- UI.info " -- destination path = [#{@destination.inspect}]"
36
+ UI.info "Sprockets activated."
37
+ UI.info " - external asset paths = #{@asset_paths.inspect}" unless @asset_paths.empty?
38
+ UI.info " - destination path = #{@destination.inspect}"
39
+ UI.info "Sprockets guard is ready and waiting for some file changes..."
40
+
41
+ run_all
29
42
  end
30
-
43
+
31
44
  def run_all
45
+ run_on_change([ @root_file ]) if @root_file
46
+
32
47
  true
33
48
  end
34
49
 
35
50
  def run_on_change(paths)
36
- paths.each{ |js| sprocketize(js) }
51
+ if @root_file
52
+ sprocketize(@root_file)
53
+ else
54
+ paths.each do |file|
55
+ sprocketize(file)
56
+ end
57
+ end
58
+
37
59
  true
38
60
  end
39
-
61
+
40
62
  private
41
-
63
+
42
64
  def sprocketize(path)
43
65
  changed = Pathname.new(path)
44
66
 
45
- @sprockets_env.append_path changed.dirname
67
+ @sprockets.append_path changed.dirname
46
68
 
47
69
  output_basename = changed.basename.to_s
48
- if match = output_basename.match(/^(.*\.(?:js|css))\.[^.]+$/)
49
- output_basename = match[1]
50
- end
70
+ output_basename.gsub!(/^(.*\.(?:js|css))\.[^.]+$/, '\1')
51
71
 
52
72
  output_file = Pathname.new(File.join(@destination, output_basename))
53
- UI.info "Sprockets creating file #{output_file}"
73
+
74
+ UI.info "Sprockets: compiling #{output_file}"
75
+
54
76
  FileUtils.mkdir_p(output_file.parent) unless output_file.parent.exist?
55
77
  output_file.open('w') do |f|
56
- f.write @sprockets_env[output_basename]
78
+ f.write @sprockets[output_basename]
57
79
  end
80
+
81
+ UI.info "Sprockets finished compiling #{output_file}"
82
+ Notifier.notify "Compiled #{output_basename}"
83
+ rescue ExecJS::ProgramError => e
84
+ UI.error "Sprockets failed to compile #{output_file}"
85
+ UI.error e.message
86
+ Notifier.notify "Syntax error in #{output_basename}: #{e.message}", :priority => 2, :image => :failed
58
87
  end
59
88
  end
60
89
  end
@@ -1,3 +1,3 @@
1
- guard 'sprockets', :destination => "public/javascripts", :asset_paths => ['/app/assets/javascripts'] do
1
+ guard 'sprockets', :destination => "public/javascripts", :asset_paths => ['app/assets/javascripts'] do
2
2
  watch (%r{app/assets/javascripts/application.js})
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guard-sprockets
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,22 +10,22 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-12-16 00:00:00.000000000 Z
13
+ date: 2012-03-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: guard
17
- requirement: &70194669080740 !ruby/object:Gem::Requirement
17
+ requirement: &70307030217180 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
- - - ! '>='
20
+ - - ~>
21
21
  - !ruby/object:Gem::Version
22
22
  version: 0.2.2
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70194669080740
25
+ version_requirements: *70307030217180
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: sprockets
28
- requirement: &70194669079080 !ruby/object:Gem::Requirement
28
+ requirement: &70307030213960 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,7 +33,7 @@ dependencies:
33
33
  version: '2'
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *70194669079080
36
+ version_requirements: *70307030213960
37
37
  description: guard file for sprockets
38
38
  email:
39
39
  - aaron@aaroncruz.com
@@ -43,7 +43,6 @@ extensions: []
43
43
  extra_rdoc_files: []
44
44
  files:
45
45
  - lib/guard/sprockets/templates/Guardfile
46
- - lib/guard/sprockets/version.rb
47
46
  - lib/guard/sprockets.rb
48
47
  homepage: http://aaroncruz.com
49
48
  licenses: []
@@ -1,6 +0,0 @@
1
- # encoding: utf-8
2
- module Guard
3
- module Sprockets
4
- VERSION = '0.2.0'
5
- end
6
- end