coyote 1.1.0 → 1.2.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +8 -0
- data/Guardfile +21 -0
- data/Manifest +73 -8
- data/README.md +110 -1
- data/Rakefile +15 -5
- data/bin/coyote +2 -1
- data/coyote.gemspec +12 -12
- data/lib/coyote.rb +7 -45
- data/lib/coyote/assets.rb +24 -0
- data/lib/coyote/assets/base.rb +33 -0
- data/lib/coyote/assets/coffeescript.rb +10 -16
- data/lib/coyote/assets/javascript.rb +4 -4
- data/lib/coyote/assets/less.rb +21 -16
- data/lib/coyote/bundles.rb +22 -0
- data/lib/coyote/bundles/base.rb +112 -0
- data/lib/coyote/bundles/css.rb +19 -0
- data/lib/coyote/bundles/javascript.rb +21 -0
- data/lib/coyote/cli.rb +4 -5
- data/lib/coyote/compiler.rb +46 -0
- data/lib/coyote/dsl.rb +29 -0
- data/lib/coyote/fs_listeners.rb +42 -0
- data/lib/coyote/fs_listeners/base.rb +46 -0
- data/lib/coyote/fs_listeners/darwin.rb +4 -4
- data/lib/coyote/fs_listeners/linux.rb +4 -4
- data/lib/coyote/fs_listeners/polling.rb +2 -2
- data/lib/coyote/fs_listeners/windows.rb +3 -3
- data/lib/coyote/notifier.rb +43 -0
- data/lib/coyote/rake.rb +15 -36
- data/lib/coyote/version.rb +3 -0
- data/spec/assets/asset/script.coffee +0 -0
- data/spec/assets/asset/script.js +0 -0
- data/spec/assets/asset/stylesheet.less +0 -0
- data/spec/assets/asset/weird.asdf +0 -0
- data/spec/assets/assets/coffeescript/script1.coffee +4 -0
- data/spec/assets/assets/coffeescript/script2.coffee +1 -0
- data/spec/assets/assets/coffeescript/script3.js +1 -0
- data/spec/assets/assets/coffeescript/script4.coffee +1 -0
- data/spec/assets/assets/javascript/script1.js +3 -0
- data/spec/assets/assets/javascript/script2.js +3 -0
- data/spec/assets/assets/javascript/script3.js +1 -0
- data/spec/assets/assets/javascript/script4.js +0 -0
- data/spec/assets/assets/javascript/script5.js +1 -0
- data/spec/assets/assets/javascript/scripts/script6.js +0 -0
- data/spec/assets/assets/javascript/scripts/script7.js +1 -0
- data/spec/assets/assets/javascript/scripts2/script8.js +0 -0
- data/spec/assets/assets/less/stylesheet1.less +5 -0
- data/spec/assets/assets/less/stylesheet2.less +3 -0
- data/spec/assets/assets/less/stylesheet3.less +0 -0
- data/spec/assets/assets/less/stylesheet4.less +0 -0
- data/spec/assets/assets/less/stylesheet5.css +0 -0
- data/spec/assets/bundle/script.js +0 -0
- data/spec/assets/bundle/stylesheet.css +0 -0
- data/spec/assets/bundle/weird.asdf +0 -0
- data/spec/assets/bundles/base/directory1/directory1_script.js +4 -0
- data/spec/assets/bundles/base/directory1/directory2/directory2_script.js +0 -0
- data/spec/assets/bundles/base/jquery.js +1 -0
- data/spec/assets/bundles/base/output.js +3 -0
- data/spec/assets/bundles/base/script1.js +3 -0
- data/spec/assets/bundles/base/script2.js +3 -0
- data/spec/assets/bundles/base/script3.js +1 -0
- data/spec/assets/bundles/base/script4.js +0 -0
- data/spec/assets/bundles/base/script5.js +3 -0
- data/spec/assets/bundles/base/script6.js +3 -0
- data/spec/assets/bundles/css/stylesheet1.css +0 -0
- data/spec/assets/bundles/css/weird_file.asdf +1 -0
- data/spec/assets/bundles/javascript/script1.js +0 -0
- data/spec/assets/bundles/javascript/weird_file.asdf +1 -0
- data/spec/assets/compiler/javascript/output.js +3 -0
- data/spec/assets/compiler/javascript/script3.js +3 -0
- data/spec/assets/compiler/javascript/script4.js +1 -0
- data/spec/assets/integration/javascript/output.js +3 -0
- data/spec/assets/integration/javascript/script1.js +3 -0
- data/spec/assets/integration/javascript/script2.js +1 -0
- data/spec/coyote/assets/base_spec.rb +54 -0
- data/spec/coyote/assets/coffeescript_spec.rb +20 -0
- data/spec/coyote/assets/less_spec.rb +22 -0
- data/spec/coyote/assets_spec.rb +27 -0
- data/spec/coyote/bundles/base_spec.rb +123 -0
- data/spec/coyote/bundles/css_spec.rb +17 -0
- data/spec/coyote/bundles/javascript_spec.rb +17 -0
- data/spec/coyote/bundles_spec.rb +26 -0
- data/spec/coyote/cli_spec.rb +1 -0
- data/spec/coyote/compiler_spec.rb +113 -0
- data/spec/coyote/dsl_spec.rb +21 -0
- data/spec/coyote/fs_listeners_spec.rb +38 -0
- data/spec/coyote/notifier_spec.rb +25 -0
- data/spec/coyote_spec.rb +21 -0
- data/spec/spec_helper.rb +6 -0
- metadata +108 -29
- data/test/scripts/input1.js +0 -1
- data/test/scripts/input2.js +0 -1
- data/test/scripts/input3.js +0 -1
- data/test/scripts/input4.js +0 -1
- data/test/scripts/lib/input5.coffee +0 -3
- data/test/scripts/lib/input6.js +0 -1
- data/test/scripts/lib/keystone/input7.js +0 -2
- data/test/scripts/vendor/input8.coffee +0 -1
data/Gemfile
ADDED
data/Guardfile
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# A sample Guardfile
|
2
|
+
# More info at https://github.com/guard/guard#readme
|
3
|
+
require 'growl'
|
4
|
+
|
5
|
+
|
6
|
+
guard 'rspec', :version => 2, :notification => true do
|
7
|
+
watch(%r{^spec/.+_spec\.rb$})
|
8
|
+
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
9
|
+
watch('spec/spec_helper.rb') { "spec" }
|
10
|
+
|
11
|
+
# Rails example
|
12
|
+
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
13
|
+
watch(%r{^app/(.*)(\.erb|\.haml)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
|
14
|
+
watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
|
15
|
+
watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
|
16
|
+
watch('config/routes.rb') { "spec/routing" }
|
17
|
+
watch('app/controllers/application_controller.rb') { "spec/controllers" }
|
18
|
+
# Capybara request specs
|
19
|
+
watch(%r{^app/views/(.+)/.*\.(erb|haml)$}) { |m| "spec/requests/#{m[1]}_spec.rb" }
|
20
|
+
end
|
21
|
+
|
data/Manifest
CHANGED
@@ -1,28 +1,93 @@
|
|
1
|
+
Gemfile
|
2
|
+
Guardfile
|
1
3
|
README.md
|
2
4
|
Rakefile
|
3
5
|
bin/coyote
|
4
6
|
coyote.gemspec
|
5
7
|
lib/coyote.rb
|
6
8
|
lib/coyote/asset.rb
|
9
|
+
lib/coyote/assets.rb
|
10
|
+
lib/coyote/assets/base.rb
|
7
11
|
lib/coyote/assets/coffeescript.rb
|
8
12
|
lib/coyote/assets/javascript.rb
|
9
13
|
lib/coyote/assets/less.rb
|
10
14
|
lib/coyote/bundle.rb
|
15
|
+
lib/coyote/bundles.rb
|
16
|
+
lib/coyote/bundles/base.rb
|
17
|
+
lib/coyote/bundles/css.rb
|
18
|
+
lib/coyote/bundles/javascript.rb
|
11
19
|
lib/coyote/cli.rb
|
12
20
|
lib/coyote/closure_compiler.rb
|
21
|
+
lib/coyote/compiler.rb
|
22
|
+
lib/coyote/dsl.rb
|
13
23
|
lib/coyote/fs_listener.rb
|
24
|
+
lib/coyote/fs_listeners.rb
|
25
|
+
lib/coyote/fs_listeners/base.rb
|
14
26
|
lib/coyote/fs_listeners/darwin.rb
|
15
27
|
lib/coyote/fs_listeners/linux.rb
|
16
28
|
lib/coyote/fs_listeners/polling.rb
|
17
29
|
lib/coyote/fs_listeners/windows.rb
|
18
30
|
lib/coyote/notifications.rb
|
31
|
+
lib/coyote/notifier.rb
|
19
32
|
lib/coyote/rake.rb
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
33
|
+
lib/coyote/version.rb
|
34
|
+
spec/assets/asset/script.coffee
|
35
|
+
spec/assets/asset/script.js
|
36
|
+
spec/assets/asset/stylesheet.less
|
37
|
+
spec/assets/asset/weird.asdf
|
38
|
+
spec/assets/assets/coffeescript/script1.coffee
|
39
|
+
spec/assets/assets/coffeescript/script2.coffee
|
40
|
+
spec/assets/assets/coffeescript/script3.js
|
41
|
+
spec/assets/assets/coffeescript/script4.coffee
|
42
|
+
spec/assets/assets/javascript/script1.js
|
43
|
+
spec/assets/assets/javascript/script2.js
|
44
|
+
spec/assets/assets/javascript/script3.js
|
45
|
+
spec/assets/assets/javascript/script4.js
|
46
|
+
spec/assets/assets/javascript/script5.js
|
47
|
+
spec/assets/assets/javascript/scripts/script6.js
|
48
|
+
spec/assets/assets/javascript/scripts/script7.js
|
49
|
+
spec/assets/assets/javascript/scripts2/script8.js
|
50
|
+
spec/assets/assets/less/stylesheet1.less
|
51
|
+
spec/assets/assets/less/stylesheet2.less
|
52
|
+
spec/assets/assets/less/stylesheet3.less
|
53
|
+
spec/assets/assets/less/stylesheet4.less
|
54
|
+
spec/assets/assets/less/stylesheet5.css
|
55
|
+
spec/assets/bundle/script.js
|
56
|
+
spec/assets/bundle/stylesheet.css
|
57
|
+
spec/assets/bundle/weird.asdf
|
58
|
+
spec/assets/bundles/base/directory1/directory1_script.js
|
59
|
+
spec/assets/bundles/base/directory1/directory2/directory2_script.js
|
60
|
+
spec/assets/bundles/base/jquery.js
|
61
|
+
spec/assets/bundles/base/output.js
|
62
|
+
spec/assets/bundles/base/script1.js
|
63
|
+
spec/assets/bundles/base/script2.js
|
64
|
+
spec/assets/bundles/base/script3.js
|
65
|
+
spec/assets/bundles/base/script4.js
|
66
|
+
spec/assets/bundles/base/script5.js
|
67
|
+
spec/assets/bundles/base/script6.js
|
68
|
+
spec/assets/bundles/css/stylesheet1.css
|
69
|
+
spec/assets/bundles/css/weird_file.asdf
|
70
|
+
spec/assets/bundles/javascript/script1.js
|
71
|
+
spec/assets/bundles/javascript/weird_file.asdf
|
72
|
+
spec/assets/compiler/javascript/output.js
|
73
|
+
spec/assets/compiler/javascript/script3.js
|
74
|
+
spec/assets/compiler/javascript/script4.js
|
75
|
+
spec/assets/integration/javascript/output.js
|
76
|
+
spec/assets/integration/javascript/script1.js
|
77
|
+
spec/assets/integration/javascript/script2.js
|
78
|
+
spec/coyote/assets/base_spec.rb
|
79
|
+
spec/coyote/assets/coffeescript_spec.rb
|
80
|
+
spec/coyote/assets/less_spec.rb
|
81
|
+
spec/coyote/assets_spec.rb
|
82
|
+
spec/coyote/bundles/base_spec.rb
|
83
|
+
spec/coyote/bundles/css_spec.rb
|
84
|
+
spec/coyote/bundles/javascript_spec.rb
|
85
|
+
spec/coyote/bundles_spec.rb
|
86
|
+
spec/coyote/cli_spec.rb
|
87
|
+
spec/coyote/compiler_spec.rb
|
88
|
+
spec/coyote/dsl_spec.rb
|
89
|
+
spec/coyote/fs_listeners_spec.rb
|
90
|
+
spec/coyote/notifier_spec.rb
|
91
|
+
spec/coyote_spec.rb
|
92
|
+
spec/spec_helper.rb
|
28
93
|
Manifest
|
data/README.md
CHANGED
@@ -1,4 +1,113 @@
|
|
1
1
|
COYOTE
|
2
2
|
=============
|
3
3
|
|
4
|
-
|
4
|
+
##A speedy tool for combining and compressing your JavaScript, CoffeeScript, CSS and LESS source files.
|
5
|
+
|
6
|
+
Coyote combines your source files into a single script or stylesheet to reduce HTTP overhead and make development easier. It has built-in support for <a href="https://github.com/sstephenson/sprockets">Sprockets-style</a> dependency syntax (`#= require x`) and a lightning-fast, built-in watch mechanism to detect changes to your source files and recompile on the fly. For increased optimization, you can optionally run the final compilation through the Google Closure Compiler before save.
|
7
|
+
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
###Installation
|
12
|
+
|
13
|
+
$ gem install coyote
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
###Command Line Interface
|
18
|
+
|
19
|
+
**Syntax:**
|
20
|
+
|
21
|
+
$ coyote [input_filepath]:[output_filepath]
|
22
|
+
|
23
|
+
**Example**
|
24
|
+
|
25
|
+
$ coyote src/application.coffee:build/application.min.js
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
###Options
|
30
|
+
|
31
|
+
<table>
|
32
|
+
<thead>
|
33
|
+
<th>Option</th>
|
34
|
+
<th>Description</th>
|
35
|
+
</thead>
|
36
|
+
<tbody>
|
37
|
+
<tr>
|
38
|
+
<th>-c, --compress</th>
|
39
|
+
<td>Compress the final compilation with the Google Closure Compiler</td>
|
40
|
+
</tr>
|
41
|
+
<tr>
|
42
|
+
<th>-w, --watch</th>
|
43
|
+
<td>Use the built-in watch mechanism to observe your source files and re-compile when something changes</td>
|
44
|
+
</tr>
|
45
|
+
<tr>
|
46
|
+
<th>-q, --quiet</th>
|
47
|
+
<td>Quiet the command-line output</td>
|
48
|
+
</tr>
|
49
|
+
<tr>
|
50
|
+
<th>-v, --version</th>
|
51
|
+
<td>Get the version of your Coyote gem</td>
|
52
|
+
</tr>
|
53
|
+
</tbody>
|
54
|
+
</table>
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
###Requiring Source Files
|
59
|
+
|
60
|
+
Coyote has support for [Sprockets-style](https://github.com/sstephenson/sprockets) requires, with one exception. Instead of using `require_tree`, you can simply use `require` and Coyote will automatically detect if the path is a source file or a directory.
|
61
|
+
|
62
|
+
|
63
|
+
**Syntax:** (JavaScript)
|
64
|
+
|
65
|
+
//= require other_file.js
|
66
|
+
//= require some_directory
|
67
|
+
|
68
|
+
**Syntax:** (CoffeeScript)
|
69
|
+
|
70
|
+
#= require other_file.coffee
|
71
|
+
#= require some_directory
|
72
|
+
|
73
|
+
Paths used in `require` statements are evaluated relative to the file which contains them.
|
74
|
+
|
75
|
+
|
76
|
+
###Using with Rake
|
77
|
+
|
78
|
+
Coyote ships with convenience methods for neatly defining tasks in your Rakefile:
|
79
|
+
|
80
|
+
|
81
|
+
require 'coyote/rake'
|
82
|
+
|
83
|
+
coyote :build do |config|
|
84
|
+
config.input = "src/application.coffee"
|
85
|
+
config.output = "build/application.min.js"
|
86
|
+
config.options = { :compress => true }
|
87
|
+
end
|
88
|
+
|
89
|
+
coyote :watch do |config|
|
90
|
+
config.input = "src/application.coffee"
|
91
|
+
config.output = "build/application.min.js"
|
92
|
+
config.options = { :quiet => true }
|
93
|
+
end
|
94
|
+
|
95
|
+
|
96
|
+
This will create two Rake tasks, `build` and `watch`, which you can run as standard tasks: `rake build` and `rake watch`.
|
97
|
+
|
98
|
+
|
99
|
+
###Contribute
|
100
|
+
**We'd love your help. Fork us so we can make Coyote better.**
|
101
|
+
|
102
|
+
$ git clone git://github.com/imulus/coyote
|
103
|
+
|
104
|
+
|
105
|
+
###Download
|
106
|
+
|
107
|
+
You can download this project in either
|
108
|
+
[zip](http://github.com/imulus/coyote/zipball/master) or [tar](http://github.com/imulus/coyote/tarball/master) formats.
|
109
|
+
|
110
|
+
or get the source code on GitHub : [imulus/coyote](http://github.com/imulus/coyote)
|
111
|
+
|
112
|
+
|
113
|
+
|
data/Rakefile
CHANGED
@@ -6,26 +6,32 @@ require 'echoe'
|
|
6
6
|
$: << File.expand_path(File.dirname(__FILE__) + "/lib")
|
7
7
|
require 'coyote'
|
8
8
|
|
9
|
+
task :default => :spec
|
10
|
+
|
11
|
+
task :spec do
|
12
|
+
sh "rspec ."
|
13
|
+
end
|
14
|
+
|
9
15
|
Echoe.new('coyote', Coyote::VERSION) do |p|
|
10
|
-
p.description = "
|
11
|
-
p.summary = "Coyote
|
16
|
+
p.description = "A speedy tool for combining and compressing your JavaScript, CoffeeScript, CSS and LESS source files."
|
17
|
+
p.summary = "Coyote combines your source files into a single script or stylesheet to reduce HTTP overhead and make development easier. It has built-in support for Sprockets-style dependency syntax (`#= require x`) and a lightning-fast, built-in watch mechanism to detect changes to your source files and recompile on the fly. For increased optimization, you can optionally run the final compilation through the Google Closure Compiler before save."
|
12
18
|
p.url = "http://github.com/imulus/coyote"
|
13
19
|
p.author = "Imulus"
|
14
20
|
p.email = "developer@imulus.com"
|
15
|
-
p.ignore_pattern = ["tmp/*", "test/*"]
|
21
|
+
p.ignore_pattern = ["./spec/*", "./tmp/*", "./test/*"]
|
16
22
|
|
17
23
|
dependencies = Array.new
|
18
24
|
target_os = Config::CONFIG['target_os']
|
19
25
|
|
20
26
|
if target_os =~ /darwin/i
|
21
27
|
dependencies << "rb-fsevent >=0.4.0"
|
22
|
-
dependencies << "
|
28
|
+
dependencies << "colored >=1.2"
|
23
29
|
elsif target_os =~ /linux/i
|
24
30
|
dependencies << "rb-inotify >=0.8.4"
|
25
31
|
elsif target_os =~ /mswin|mingw/i
|
26
32
|
dependencies << "rb-fchange >=0.0.5"
|
27
33
|
end
|
28
|
-
|
34
|
+
|
29
35
|
p.development_dependencies = dependencies
|
30
36
|
p.runtime_dependencies = dependencies
|
31
37
|
end
|
@@ -35,3 +41,7 @@ task :build do
|
|
35
41
|
`rake build_gemspec`
|
36
42
|
`gem build coyote.gemspec`
|
37
43
|
end
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
|
data/bin/coyote
CHANGED
data/coyote.gemspec
CHANGED
@@ -2,41 +2,41 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "coyote"
|
5
|
-
s.version = "1.
|
5
|
+
s.version = "1.2.0.rc1"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Imulus"]
|
9
|
-
s.date = "2012-
|
10
|
-
s.description = "
|
9
|
+
s.date = "2012-06-11"
|
10
|
+
s.description = "A speedy tool for combining and compressing your JavaScript, CoffeeScript, CSS and LESS source files."
|
11
11
|
s.email = "developer@imulus.com"
|
12
12
|
s.executables = ["coyote"]
|
13
|
-
s.extra_rdoc_files = ["README.md", "bin/coyote", "lib/coyote.rb", "lib/coyote/asset.rb", "lib/coyote/assets/coffeescript.rb", "lib/coyote/assets/javascript.rb", "lib/coyote/assets/less.rb", "lib/coyote/bundle.rb", "lib/coyote/cli.rb", "lib/coyote/closure_compiler.rb", "lib/coyote/fs_listener.rb", "lib/coyote/fs_listeners/darwin.rb", "lib/coyote/fs_listeners/linux.rb", "lib/coyote/fs_listeners/polling.rb", "lib/coyote/fs_listeners/windows.rb", "lib/coyote/notifications.rb", "lib/coyote/rake.rb"]
|
14
|
-
s.files = ["README.md", "Rakefile", "bin/coyote", "coyote.gemspec", "lib/coyote.rb", "lib/coyote/asset.rb", "lib/coyote/assets/coffeescript.rb", "lib/coyote/assets/javascript.rb", "lib/coyote/assets/less.rb", "lib/coyote/bundle.rb", "lib/coyote/cli.rb", "lib/coyote/closure_compiler.rb", "lib/coyote/fs_listener.rb", "lib/coyote/fs_listeners/darwin.rb", "lib/coyote/fs_listeners/linux.rb", "lib/coyote/fs_listeners/polling.rb", "lib/coyote/fs_listeners/windows.rb", "lib/coyote/notifications.rb", "lib/coyote/rake.rb", "
|
13
|
+
s.extra_rdoc_files = ["README.md", "bin/coyote", "lib/coyote.rb", "lib/coyote/asset.rb", "lib/coyote/assets.rb", "lib/coyote/assets/base.rb", "lib/coyote/assets/coffeescript.rb", "lib/coyote/assets/javascript.rb", "lib/coyote/assets/less.rb", "lib/coyote/bundle.rb", "lib/coyote/bundles.rb", "lib/coyote/bundles/base.rb", "lib/coyote/bundles/css.rb", "lib/coyote/bundles/javascript.rb", "lib/coyote/cli.rb", "lib/coyote/closure_compiler.rb", "lib/coyote/compiler.rb", "lib/coyote/dsl.rb", "lib/coyote/fs_listener.rb", "lib/coyote/fs_listeners.rb", "lib/coyote/fs_listeners/base.rb", "lib/coyote/fs_listeners/darwin.rb", "lib/coyote/fs_listeners/linux.rb", "lib/coyote/fs_listeners/polling.rb", "lib/coyote/fs_listeners/windows.rb", "lib/coyote/notifications.rb", "lib/coyote/notifier.rb", "lib/coyote/rake.rb", "lib/coyote/version.rb"]
|
14
|
+
s.files = ["Gemfile", "Guardfile", "README.md", "Rakefile", "bin/coyote", "coyote.gemspec", "lib/coyote.rb", "lib/coyote/asset.rb", "lib/coyote/assets.rb", "lib/coyote/assets/base.rb", "lib/coyote/assets/coffeescript.rb", "lib/coyote/assets/javascript.rb", "lib/coyote/assets/less.rb", "lib/coyote/bundle.rb", "lib/coyote/bundles.rb", "lib/coyote/bundles/base.rb", "lib/coyote/bundles/css.rb", "lib/coyote/bundles/javascript.rb", "lib/coyote/cli.rb", "lib/coyote/closure_compiler.rb", "lib/coyote/compiler.rb", "lib/coyote/dsl.rb", "lib/coyote/fs_listener.rb", "lib/coyote/fs_listeners.rb", "lib/coyote/fs_listeners/base.rb", "lib/coyote/fs_listeners/darwin.rb", "lib/coyote/fs_listeners/linux.rb", "lib/coyote/fs_listeners/polling.rb", "lib/coyote/fs_listeners/windows.rb", "lib/coyote/notifications.rb", "lib/coyote/notifier.rb", "lib/coyote/rake.rb", "lib/coyote/version.rb", "spec/assets/asset/script.coffee", "spec/assets/asset/script.js", "spec/assets/asset/stylesheet.less", "spec/assets/asset/weird.asdf", "spec/assets/assets/coffeescript/script1.coffee", "spec/assets/assets/coffeescript/script2.coffee", "spec/assets/assets/coffeescript/script3.js", "spec/assets/assets/coffeescript/script4.coffee", "spec/assets/assets/javascript/script1.js", "spec/assets/assets/javascript/script2.js", "spec/assets/assets/javascript/script3.js", "spec/assets/assets/javascript/script4.js", "spec/assets/assets/javascript/script5.js", "spec/assets/assets/javascript/scripts/script6.js", "spec/assets/assets/javascript/scripts/script7.js", "spec/assets/assets/javascript/scripts2/script8.js", "spec/assets/assets/less/stylesheet1.less", "spec/assets/assets/less/stylesheet2.less", "spec/assets/assets/less/stylesheet3.less", "spec/assets/assets/less/stylesheet4.less", "spec/assets/assets/less/stylesheet5.css", "spec/assets/bundle/script.js", "spec/assets/bundle/stylesheet.css", "spec/assets/bundle/weird.asdf", "spec/assets/bundles/base/directory1/directory1_script.js", "spec/assets/bundles/base/directory1/directory2/directory2_script.js", "spec/assets/bundles/base/jquery.js", "spec/assets/bundles/base/output.js", "spec/assets/bundles/base/script1.js", "spec/assets/bundles/base/script2.js", "spec/assets/bundles/base/script3.js", "spec/assets/bundles/base/script4.js", "spec/assets/bundles/base/script5.js", "spec/assets/bundles/base/script6.js", "spec/assets/bundles/css/stylesheet1.css", "spec/assets/bundles/css/weird_file.asdf", "spec/assets/bundles/javascript/script1.js", "spec/assets/bundles/javascript/weird_file.asdf", "spec/assets/compiler/javascript/output.js", "spec/assets/compiler/javascript/script3.js", "spec/assets/compiler/javascript/script4.js", "spec/assets/integration/javascript/output.js", "spec/assets/integration/javascript/script1.js", "spec/assets/integration/javascript/script2.js", "spec/coyote/assets/base_spec.rb", "spec/coyote/assets/coffeescript_spec.rb", "spec/coyote/assets/less_spec.rb", "spec/coyote/assets_spec.rb", "spec/coyote/bundles/base_spec.rb", "spec/coyote/bundles/css_spec.rb", "spec/coyote/bundles/javascript_spec.rb", "spec/coyote/bundles_spec.rb", "spec/coyote/cli_spec.rb", "spec/coyote/compiler_spec.rb", "spec/coyote/dsl_spec.rb", "spec/coyote/fs_listeners_spec.rb", "spec/coyote/notifier_spec.rb", "spec/coyote_spec.rb", "spec/spec_helper.rb", "Manifest"]
|
15
15
|
s.homepage = "http://github.com/imulus/coyote"
|
16
16
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Coyote", "--main", "README.md"]
|
17
17
|
s.require_paths = ["lib"]
|
18
18
|
s.rubyforge_project = "coyote"
|
19
19
|
s.rubygems_version = "1.8.17"
|
20
|
-
s.summary = "Coyote
|
20
|
+
s.summary = "Coyote combines your source files into a single script or stylesheet to reduce HTTP overhead and make development easier. It has built-in support for Sprockets-style dependency syntax (`#= require x`) and a lightning-fast, built-in watch mechanism to detect changes to your source files and recompile on the fly. For increased optimization, you can optionally run the final compilation through the Google Closure Compiler before save."
|
21
21
|
|
22
22
|
if s.respond_to? :specification_version then
|
23
23
|
s.specification_version = 3
|
24
24
|
|
25
25
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
26
26
|
s.add_runtime_dependency(%q<rb-fsevent>, [">= 0.4.0"])
|
27
|
-
s.add_runtime_dependency(%q<
|
27
|
+
s.add_runtime_dependency(%q<colored>, [">= 1.2"])
|
28
28
|
s.add_development_dependency(%q<rb-fsevent>, [">= 0.4.0"])
|
29
|
-
s.add_development_dependency(%q<
|
29
|
+
s.add_development_dependency(%q<colored>, [">= 1.2"])
|
30
30
|
else
|
31
31
|
s.add_dependency(%q<rb-fsevent>, [">= 0.4.0"])
|
32
|
-
s.add_dependency(%q<
|
32
|
+
s.add_dependency(%q<colored>, [">= 1.2"])
|
33
33
|
s.add_dependency(%q<rb-fsevent>, [">= 0.4.0"])
|
34
|
-
s.add_dependency(%q<
|
34
|
+
s.add_dependency(%q<colored>, [">= 1.2"])
|
35
35
|
end
|
36
36
|
else
|
37
37
|
s.add_dependency(%q<rb-fsevent>, [">= 0.4.0"])
|
38
|
-
s.add_dependency(%q<
|
38
|
+
s.add_dependency(%q<colored>, [">= 1.2"])
|
39
39
|
s.add_dependency(%q<rb-fsevent>, [">= 0.4.0"])
|
40
|
-
s.add_dependency(%q<
|
40
|
+
s.add_dependency(%q<colored>, [">= 1.2"])
|
41
41
|
end
|
42
42
|
end
|
data/lib/coyote.rb
CHANGED
@@ -1,50 +1,12 @@
|
|
1
|
-
require '
|
2
|
-
require '
|
3
|
-
require 'coyote/
|
4
|
-
require 'coyote/fs_listener'
|
5
|
-
require 'coyote/notifications'
|
1
|
+
require 'coyote/version'
|
2
|
+
require 'coyote/compiler'
|
3
|
+
require 'coyote/notifier'
|
6
4
|
include Coyote::Notifications
|
7
5
|
|
8
6
|
module Coyote
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
@@input_path = input_path
|
13
|
-
@@output_path = output_path
|
14
|
-
@@options = options
|
15
|
-
@@bundle = Coyote::Bundle.new(input_path, output_path)
|
16
|
-
build { |bundle| bundle.update! }
|
17
|
-
watch if @@options[:watch]
|
18
|
-
end
|
19
|
-
|
20
|
-
def self.options
|
21
|
-
['compress', 'watch', 'quiet', 'version']
|
22
|
-
end
|
23
|
-
|
24
|
-
def self.build(&block)
|
25
|
-
time = Benchmark.realtime do
|
26
|
-
yield @@bundle unless block.nil?
|
27
|
-
notify @@bundle.manifest unless @@options[:quiet]
|
28
|
-
@@bundle.compress! if @@options[:compress]
|
29
|
-
@@bundle.save
|
30
|
-
end
|
31
|
-
|
32
|
-
notify "#{Time.new.strftime("%I:%M:%S")} Saved bundle to #{@@output_path} [#{@@bundle.files.length} files in #{(time).round(5)}s]", :success
|
7
|
+
|
8
|
+
def self.compile(input, output, options={})
|
9
|
+
Compiler.new(input, output, options).compile!
|
33
10
|
end
|
34
11
|
|
35
|
-
|
36
|
-
listener = Coyote::FSListener.select_and_init
|
37
|
-
|
38
|
-
listener.on_change do |changed_files|
|
39
|
-
changed_files = @@bundle.files & changed_files
|
40
|
-
|
41
|
-
if changed_files.length > 0
|
42
|
-
notify "#{Time.new.strftime("%I:%M:%S")} Detected change, recompiling...", :warning
|
43
|
-
build { |bundle| bundle.update! changed_files }
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
notify "#{Time.new.strftime("%I:%M:%S")} Watching for changes to your bundle. CTRL+C to stop."
|
48
|
-
listener.start
|
49
|
-
end
|
50
|
-
end
|
12
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'coyote/assets/base'
|
2
|
+
require 'coyote/assets/javascript'
|
3
|
+
require 'coyote/assets/coffeescript'
|
4
|
+
require 'coyote/assets/less'
|
5
|
+
|
6
|
+
module Coyote
|
7
|
+
|
8
|
+
module Asset
|
9
|
+
def self.new(path)
|
10
|
+
Coyote::Assets.choose(path)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
module Assets
|
15
|
+
def self.choose(path)
|
16
|
+
case File.extname(path)
|
17
|
+
when /\.js/i ; JavaScript.new(path)
|
18
|
+
when /\.coffee/i ; CoffeeScript.new(path)
|
19
|
+
when /\.less/i ; Less.new(path)
|
20
|
+
else ; Base.new(path)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Coyote::Assets
|
2
|
+
class Base
|
3
|
+
|
4
|
+
class << self
|
5
|
+
def require_pattern(pattern = nil)
|
6
|
+
@require_pattern ||= pattern || Regexp.new(/\/\/=\s*require\s*(.*)$/i)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
|
11
|
+
require_pattern Regexp.new(/\/\/=\s*require\s*(.*)$/i)
|
12
|
+
|
13
|
+
attr_accessor :contents
|
14
|
+
attr_reader :path, :relative_path, :contents, :dependencies
|
15
|
+
|
16
|
+
def initialize(path)
|
17
|
+
@path = File.expand_path path
|
18
|
+
@relative_path = @path.gsub("#{Dir.pwd}/", '')
|
19
|
+
update!
|
20
|
+
end
|
21
|
+
|
22
|
+
def find_dependencies
|
23
|
+
matches = self.contents.scan self.class.require_pattern
|
24
|
+
@dependencies = matches.reverse.map { |match| match.last.strip }
|
25
|
+
end
|
26
|
+
|
27
|
+
def update!
|
28
|
+
self.contents = IO.read(@path)
|
29
|
+
find_dependencies
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|