embarista 1.1.4 → 1.1.5

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.
@@ -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