embarista 1.1.4 → 1.1.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,79 @@
1
+ require 'spec_helper'
2
+
3
+ describe Embarista::Filters::ManifestUrlFilter do
4
+ let(:file_wrapper_class) { MemoryFileWrapper }
5
+
6
+ let(:input_js) {
7
+ <<-JS
8
+ var a = manifest_url('baz.jpg');
9
+ var b = manifest_url("baz/bar.jpg");
10
+ var c = manifest_url("doesnt-exist.jpg");
11
+ JS
12
+ }
13
+
14
+ let(:input_files) {
15
+ [
16
+ MemoryFileWrapper.new("/path/to/input", "foo/bar.js", "UTF-8", input_js)
17
+ ]
18
+ }
19
+
20
+ let(:output_root) { '/path/to/output' }
21
+
22
+ let(:urls_manifest) {
23
+ {
24
+ '/editor/images/baz.jpg' => '/editor/images/baz-123abc.jpg',
25
+ '/editor/images/baz/bar.jpg' => '/editor/images/baz/bar-456def.jpg'
26
+ }
27
+ }
28
+
29
+ let(:options) {
30
+ { path: "/path/to/manifest.json",
31
+ prefix: '/editor/images',
32
+ prepend: "'//' + YappEditorConfig.assetsCdn + "
33
+ }
34
+ }
35
+
36
+ let(:rake_application) {
37
+ Rake::Application.new
38
+ }
39
+
40
+
41
+ let(:subject) {
42
+ filter = described_class.new(options)
43
+ filter.file_wrapper_class = file_wrapper_class
44
+ filter.manifest = MemoryManifest.new
45
+ filter.last_manifest = MemoryManifest.new
46
+ filter.input_files = input_files
47
+ filter.output_root = output_root
48
+ filter.rake_application = rake_application
49
+ filter.urls_manifest = urls_manifest
50
+ filter
51
+ }
52
+
53
+ it "rewrites manifest_url based on provided manifest and options" do
54
+ tasks = subject.generate_rake_tasks
55
+ tasks.each(&:invoke)
56
+
57
+ file = MemoryFileWrapper.files["/path/to/output/foo/bar.js"]
58
+ file.body.should eq(<<-JS)
59
+ var a = ('//' + YappEditorConfig.assetsCdn + '/editor/images/baz-123abc.jpg');
60
+ var b = ('//' + YappEditorConfig.assetsCdn + '/editor/images/baz/bar-456def.jpg');
61
+ var c = ('//' + YappEditorConfig.assetsCdn + '/editor/images/doesnt-exist.jpg');
62
+ JS
63
+ file.encoding.should eq('UTF-8')
64
+ end
65
+
66
+ it "gracefully rewrites manifest_url when path is not found" do
67
+ subject.urls_manifest = nil
68
+ tasks = subject.generate_rake_tasks
69
+ tasks.each(&:invoke)
70
+
71
+ file = MemoryFileWrapper.files["/path/to/output/foo/bar.js"]
72
+ file.body.should eq(<<-JS)
73
+ var a = ('//' + YappEditorConfig.assetsCdn + '/editor/images/baz.jpg');
74
+ var b = ('//' + YappEditorConfig.assetsCdn + '/editor/images/baz/bar.jpg');
75
+ var c = ('//' + YappEditorConfig.assetsCdn + '/editor/images/doesnt-exist.jpg');
76
+ JS
77
+ file.encoding.should eq('UTF-8')
78
+ end
79
+ end
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embarista
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.4
5
4
  prerelease:
5
+ version: 1.1.5
6
6
  platform: ruby
7
7
  authors:
8
8
  - Luke Melia
@@ -10,107 +10,168 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-11-23 00:00:00.000000000Z
13
+ date: 2013-01-17 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: rake-pipeline
17
- requirement: &2157681120 !ruby/object:Gem::Requirement
16
+ version_requirements: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ! '>'
19
+ - !ruby/object:Gem::Version
20
+ version: 0.6.0
18
21
  none: false
22
+ prerelease: false
23
+ name: rake-pipeline
24
+ requirement: !ruby/object:Gem::Requirement
19
25
  requirements:
20
26
  - - ! '>'
21
27
  - !ruby/object:Gem::Version
22
28
  version: 0.6.0
29
+ none: false
23
30
  type: :runtime
24
- prerelease: false
25
- version_requirements: *2157681120
26
31
  - !ruby/object:Gem::Dependency
27
- name: rake-pipeline-web-filters
28
- requirement: &2157680140 !ruby/object:Gem::Requirement
32
+ version_requirements: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ! '>='
35
+ - !ruby/object:Gem::Version
36
+ version: 0.6.0
29
37
  none: false
38
+ prerelease: false
39
+ name: rake-pipeline-web-filters
40
+ requirement: !ruby/object:Gem::Requirement
30
41
  requirements:
31
42
  - - ! '>='
32
43
  - !ruby/object:Gem::Version
33
44
  version: 0.6.0
45
+ none: false
34
46
  type: :runtime
35
- prerelease: false
36
- version_requirements: *2157680140
37
47
  - !ruby/object:Gem::Dependency
38
- name: ruby_gntp
39
- requirement: &2157677340 !ruby/object:Gem::Requirement
48
+ version_requirements: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ! '>='
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
40
53
  none: false
54
+ prerelease: false
55
+ name: barber
56
+ requirement: !ruby/object:Gem::Requirement
41
57
  requirements:
42
58
  - - ! '>='
43
59
  - !ruby/object:Gem::Version
44
60
  version: '0'
61
+ none: false
45
62
  type: :runtime
46
- prerelease: false
47
- version_requirements: *2157677340
48
63
  - !ruby/object:Gem::Dependency
49
- name: listen
50
- requirement: &2157674140 !ruby/object:Gem::Requirement
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
51
69
  none: false
70
+ prerelease: false
71
+ name: ruby_gntp
72
+ requirement: !ruby/object:Gem::Requirement
52
73
  requirements:
53
74
  - - ! '>='
54
75
  - !ruby/object:Gem::Version
55
76
  version: '0'
77
+ none: false
56
78
  type: :runtime
57
- prerelease: false
58
- version_requirements: *2157674140
59
79
  - !ruby/object:Gem::Dependency
60
- name: colored
61
- requirement: &2157673280 !ruby/object:Gem::Requirement
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ! '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
62
85
  none: false
86
+ prerelease: false
87
+ name: listen
88
+ requirement: !ruby/object:Gem::Requirement
63
89
  requirements:
64
90
  - - ! '>='
65
91
  - !ruby/object:Gem::Version
66
92
  version: '0'
93
+ none: false
67
94
  type: :runtime
68
- prerelease: false
69
- version_requirements: *2157673280
70
95
  - !ruby/object:Gem::Dependency
71
- name: rb-fsevent
72
- requirement: &2157671760 !ruby/object:Gem::Requirement
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ! '>='
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
73
101
  none: false
102
+ prerelease: false
103
+ name: colored
104
+ requirement: !ruby/object:Gem::Requirement
74
105
  requirements:
75
106
  - - ! '>='
76
107
  - !ruby/object:Gem::Version
77
108
  version: '0'
109
+ none: false
78
110
  type: :runtime
111
+ - !ruby/object:Gem::Dependency
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ! '>='
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ none: false
79
118
  prerelease: false
80
- version_requirements: *2157671760
119
+ name: rb-fsevent
120
+ requirement: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ! '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ none: false
126
+ type: :runtime
81
127
  - !ruby/object:Gem::Dependency
82
- name: rspec
83
- requirement: &2157670420 !ruby/object:Gem::Requirement
128
+ version_requirements: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ! '>='
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
84
133
  none: false
134
+ prerelease: false
135
+ name: rspec
136
+ requirement: !ruby/object:Gem::Requirement
85
137
  requirements:
86
138
  - - ! '>='
87
139
  - !ruby/object:Gem::Version
88
140
  version: '0'
141
+ none: false
89
142
  type: :development
90
- prerelease: false
91
- version_requirements: *2157670420
92
143
  - !ruby/object:Gem::Dependency
93
- name: rb-readline
94
- requirement: &2157669240 !ruby/object:Gem::Requirement
144
+ version_requirements: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - ! '>='
147
+ - !ruby/object:Gem::Version
148
+ version: '0'
95
149
  none: false
150
+ prerelease: false
151
+ name: rb-readline
152
+ requirement: !ruby/object:Gem::Requirement
96
153
  requirements:
97
154
  - - ! '>='
98
155
  - !ruby/object:Gem::Version
99
156
  version: '0'
157
+ none: false
100
158
  type: :development
101
- prerelease: false
102
- version_requirements: *2157669240
103
159
  - !ruby/object:Gem::Dependency
104
- name: execjs
105
- requirement: &2157668140 !ruby/object:Gem::Requirement
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - ! '>='
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
106
165
  none: false
166
+ prerelease: false
167
+ name: execjs
168
+ requirement: !ruby/object:Gem::Requirement
107
169
  requirements:
108
170
  - - ! '>='
109
171
  - !ruby/object:Gem::Version
110
172
  version: '0'
173
+ none: false
111
174
  type: :development
112
- prerelease: false
113
- version_requirements: *2157668140
114
175
  description: A collection of web filters for rake-pipeline
115
176
  email:
116
177
  - tech@yapp.us
@@ -120,6 +181,7 @@ extra_rdoc_files: []
120
181
  files:
121
182
  - .gitignore
122
183
  - .rspec
184
+ - .rvmrc
123
185
  - .travis.yml
124
186
  - Gemfile
125
187
  - LICENSE
@@ -127,22 +189,28 @@ files:
127
189
  - Rakefile
128
190
  - embarista.gemspec
129
191
  - lib/embarista.rb
130
- - lib/embarista/digest_helper.rb
192
+ - lib/embarista/dynamic_index.rb
131
193
  - lib/embarista/filters.rb
132
194
  - lib/embarista/filters/erb_filter.rb
195
+ - lib/embarista/filters/manifest_url_filter.rb
133
196
  - lib/embarista/filters/precompile_handlebars_filter.rb
134
197
  - lib/embarista/filters/rewrite_minispade_requires_filter.rb
135
198
  - lib/embarista/filters/strip_ember_asserts_filter.rb
136
199
  - lib/embarista/git.rb
137
200
  - lib/embarista/helpers.rb
138
201
  - lib/embarista/javascript_pipeline.rb
139
- - lib/embarista/manifest_helper.rb
202
+ - lib/embarista/manifest_builder.rb
140
203
  - lib/embarista/s3sync.rb
141
204
  - lib/embarista/sass_functions.rb
142
205
  - lib/embarista/server.rb
206
+ - lib/embarista/tasks.rb
207
+ - lib/embarista/tasks/coffeelint.rb
208
+ - lib/embarista/tasks/updater.rb
143
209
  - lib/embarista/version.rb
144
210
  - spec/erb_filter_spec.rb
145
211
  - spec/helpers_spec.rb
212
+ - spec/manifest_builder_spec.rb
213
+ - spec/manifest_url_filter_spec.rb
146
214
  - spec/precompile_handlebars_filter_spec.rb
147
215
  - spec/rewrite_minispade_requires_filter_spec.rb
148
216
  - spec/spec_helper.rb
@@ -158,26 +226,26 @@ rdoc_options: []
158
226
  require_paths:
159
227
  - lib
160
228
  required_ruby_version: !ruby/object:Gem::Requirement
161
- none: false
162
229
  requirements:
163
230
  - - ! '>='
164
231
  - !ruby/object:Gem::Version
165
232
  version: '0'
166
233
  segments:
167
234
  - 0
168
- hash: 1063299569121955153
169
- required_rubygems_version: !ruby/object:Gem::Requirement
235
+ hash: -2852364876393853144
170
236
  none: false
237
+ required_rubygems_version: !ruby/object:Gem::Requirement
171
238
  requirements:
172
239
  - - ! '>='
173
240
  - !ruby/object:Gem::Version
174
241
  version: '0'
175
242
  segments:
176
243
  - 0
177
- hash: 1063299569121955153
244
+ hash: -2852364876393853144
245
+ none: false
178
246
  requirements: []
179
247
  rubyforge_project:
180
- rubygems_version: 1.8.10
248
+ rubygems_version: 1.8.24
181
249
  signing_key:
182
250
  specification_version: 3
183
251
  summary: A collection of web filters for rake-pipeline used to build Yapp Ember.js
@@ -185,6 +253,8 @@ summary: A collection of web filters for rake-pipeline used to build Yapp Ember.
185
253
  test_files:
186
254
  - spec/erb_filter_spec.rb
187
255
  - spec/helpers_spec.rb
256
+ - spec/manifest_builder_spec.rb
257
+ - spec/manifest_url_filter_spec.rb
188
258
  - spec/precompile_handlebars_filter_spec.rb
189
259
  - spec/rewrite_minispade_requires_filter_spec.rb
190
260
  - spec/spec_helper.rb
@@ -1,59 +0,0 @@
1
- module Embarista
2
- module DigestHelper
3
- include FileUtils
4
- extend self
5
-
6
- def digest_and_copy_file(filename, target_dir = 'tmp')
7
- file = Pathname.new(filename)
8
- target_dir = Pathname.new(target_dir)
9
-
10
- md5 = Digest::MD5.file(file).hexdigest
11
- ext = file.extname
12
- dirname = file.dirname
13
- name_without_ext = file.basename.to_s.gsub(/#{ext}$/,'')
14
-
15
- new_filename = "#{name_without_ext}-#{md5}#{ext}"
16
- target_dir_with_path = target_dir + dirname
17
- target_full_path = target_dir_with_path + new_filename
18
-
19
- mkdir_p(target_dir_with_path)
20
- cp(filename, target_full_path)
21
-
22
- return dirname + new_filename
23
- end
24
-
25
- def digest_directory(origin, target)
26
- origin = Pathname.new(origin).expand_path
27
- target = Pathname.new(target).expand_path
28
-
29
- target_base_dir = target + origin.basename
30
-
31
- rm_rf target_base_dir
32
- mkdir_p target_base_dir
33
-
34
- cd(origin) do
35
- glob_pattern_with_symlink_support = "**{,/*/**}/*.*" # http://stackoverflow.com/questions/357754/can-i-traverse-symlinked-directories-in-ruby-with-a-glob
36
- files = Dir.glob(glob_pattern_with_symlink_support).reject { |file| File.directory?(file) }.reject { |file| file =~ /manifest*\.yml/ }
37
-
38
- manifest_hash = files.each_with_object({}) do |file, manifest|
39
- manifest[file.to_s] = digest_and_copy_file(file, target_base_dir).to_s
40
- end
41
-
42
- manifest_hash = ManifestHelper.prefix_manifest('/', manifest_hash)
43
-
44
- open('manifest.yml', 'w') do |file|
45
- YAML.dump(manifest_hash, file)
46
- end
47
-
48
- open('manifest.json', 'w') do |file|
49
- JSON.dump(manifest_hash, file)
50
- end
51
-
52
- cp('manifest.yml', target_base_dir + 'manifest-latest.yml')
53
- cp('manifest.json', target_base_dir + 'manifest-latest.json')
54
-
55
- return manifest_hash
56
- end
57
- end
58
- end
59
- end
@@ -1,14 +0,0 @@
1
- module Embarista
2
- module ManifestHelper
3
- extend self
4
-
5
- def prefix_manifest(prefix, manifest)
6
- manifest.each_with_object({}) do |entry, new_manifest|
7
- key = prefix + entry.first
8
- value = prefix + entry.last
9
-
10
- new_manifest[key] = value
11
- end
12
- end
13
- end
14
- end