bpm 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -2,3 +2,4 @@ tmp
2
2
  devbin
3
3
  .bundle
4
4
  Gemfile.lock
5
+ *.gem
data/lib/bpm/cli/base.rb CHANGED
@@ -81,12 +81,9 @@ module BPM
81
81
  # find project
82
82
  project = find_project
83
83
 
84
- begin
85
- project.add_dependencies deps, true
86
- project.build :debug, true
87
- rescue Exception => e
88
- abort e.message
89
- end
84
+ # This was wrapped in a begin/rescue Exception, but we should be selective if we rescue
85
+ project.add_dependencies deps, true
86
+ project.build :debug, true
90
87
  end
91
88
 
92
89
  desc "remove [PACKAGE]", "Remove package from project"
@@ -128,7 +125,7 @@ module BPM
128
125
 
129
126
  begin
130
127
  project = find_project
131
- project.fetch_dependencies options[:verbose]
128
+ project.rebuild_dependencies nil, options[:verbose]
132
129
  project.build options[:mode], options[:verbose]
133
130
  rescue Exception => e
134
131
  abort e.message
@@ -31,9 +31,8 @@ module BPM
31
31
  def convert_package(destination_root)
32
32
  package = BPM::Package.new(destination_root)
33
33
  package.load_json
34
- File.open("#{name}.json", "w") do |f|
35
- f.write JSON.pretty_generate(package.as_json)
36
- end
34
+ new_json = JSON.pretty_generate(package.as_json)
35
+ File.open("#{name}.json", "w"){|f| f.write new_json }
37
36
  puts "created #{name}.json from package.json"
38
37
  end
39
38
 
data/lib/bpm/package.rb CHANGED
@@ -108,6 +108,28 @@ module BPM
108
108
  read && parse
109
109
  end
110
110
 
111
+ def expanded_deps(project)
112
+ ret = []
113
+ seen = []
114
+ todo = [self]
115
+ while todo.size > 0
116
+ pkg = todo.shift
117
+ pkg.dependencies.each do |dep_name, dep_vers|
118
+ next if seen.include? dep_name
119
+ seen << dep_name
120
+ found = project.local_deps.find { |x| x.name == dep_name }
121
+ if found
122
+ todo << found
123
+ ret << found
124
+ else
125
+ puts "COULD NOT FIND DEP: #{dep_name}"
126
+ end
127
+ end
128
+
129
+ end
130
+ ret
131
+ end
132
+
111
133
  # TODO: Make better errors
112
134
  # TODO: This might not work well with conflicting versions
113
135
  def local_deps(search_path=nil)
@@ -178,7 +200,13 @@ module BPM
178
200
  pkg.load_json
179
201
  pkg.name == pkg_name
180
202
  end
181
- dep.attributes[key_name]
203
+
204
+ if dep
205
+ dep.attributes[key_name]
206
+ else
207
+ puts "COULD NOT FIND DEP: #{pkg_name}"
208
+ end
209
+
182
210
  end.compact
183
211
  end
184
212
 
@@ -26,17 +26,13 @@ module BPM
26
26
  minifier_name = project.minifier_name
27
27
  if minifier_name && content_type == 'application/javascript'
28
28
  pkg = project.package_from_name minifier_name
29
- minifier_plugin = pkg.minifier_plugins(project).first
29
+ minifier_plugin_name = pkg.minifier_plugins(project).first
30
+ plugin_ctx = environment.plugin_context_for minifier_plugin_name
30
31
 
31
- minifier_path = blank_context.resolve(project.path_from_module(minifier_plugin))
32
-
33
- ctx = environment.js_context_for minifier_path
34
- out = ''
35
-
36
32
  V8::C::Locker() do
37
- ctx["PACKAGE_INFO"] = pkg.attributes
38
- ctx["DATA"] = body
39
- body = ctx.eval("exports.minify(DATA, PACKAGE_INFO);")
33
+ plugin_ctx["PACKAGE_INFO"] = pkg.attributes
34
+ plugin_ctx["DATA"] = body
35
+ body = plugin_ctx.eval("BPM_PLUGIN.minify(DATA, PACKAGE_INFO)")
40
36
  end
41
37
  end
42
38
 
@@ -0,0 +1,74 @@
1
+ require 'sprockets'
2
+
3
+ module BPM
4
+
5
+ # Defines an asset that represents a build plugin (such as a transport or
6
+ # a minifier.) The generated asset will include dependencies of the plugin
7
+ # module as well as the module itself.
8
+ class PluginAsset < Sprockets::BundledAsset
9
+
10
+ def initialize(environment, module_name)
11
+ pathname = Pathname.new(File.join(environment.project.root_path, '.bpm', 'plugins', module_name+'.js'))
12
+ super(environment, module_name, pathname, {})
13
+ end
14
+
15
+ protected
16
+
17
+ def dependency_context_and_body
18
+ @dependency_context_and_body ||= build_dependency_context_and_body
19
+ end
20
+
21
+ private
22
+
23
+ # Note: logical path must be hte module
24
+ def plugin_module
25
+ project = environment.project
26
+ parts = logical_path.split('/')
27
+ [parts.shift, parts.join('/')]
28
+ end
29
+
30
+ def build_dependency_context_and_body
31
+
32
+ project = environment.project
33
+ pkg_name, module_id = plugin_module
34
+ pkg = project.package_from_name pkg_name
35
+
36
+ # Add in the generated header
37
+ body = ["// BPM PLUGIN: #{logical_path}\n\n"]
38
+
39
+ pkg.load_json
40
+ deps = pkg.expanded_deps project
41
+ deps << pkg # always load pkg too
42
+
43
+ # Prime digest cache with data, since we happen to have it
44
+ environment.file_digest(pathname, body)
45
+
46
+ # add requires for each depedency to context
47
+ context = blank_context
48
+
49
+ deps.map do |pkg|
50
+ pkg.load_json
51
+ pkg.pipeline_libs.each do |dir|
52
+ dir_name = pkg.directories[dir] || dir
53
+ search_path = File.expand_path File.join(pkg.root_path, dir_name)
54
+
55
+ Dir[File.join(search_path, '**', '*')].sort.each do |fn|
56
+ context.depend_on File.dirname(fn)
57
+ context.require_asset(fn) if context.asset_requirable? fn
58
+ end
59
+ end
60
+ end
61
+
62
+ # require asset itself - this should be included directly in the body
63
+ # we don't want to use any processors
64
+ module_path = context.resolve project.path_from_module(logical_path)
65
+ context.depend_on module_path
66
+ body << "(function(exports) {"
67
+ body << File.read(module_path)
68
+ body << "})(BPM_PLUGIN);\n"
69
+
70
+ return context, body.join("\n")
71
+ end
72
+
73
+ end
74
+ end
@@ -5,31 +5,28 @@ module BPM
5
5
  class TransportProcessor < Sprockets::Processor
6
6
 
7
7
  def evaluate(context, locals)
8
- project = context.environment.project
8
+ environment = context.environment
9
+ project = environment.project
9
10
  pkg, module_id = project.package_and_module_from_path file
10
11
  transport_plugins = pkg.transport_plugins(project)
11
12
 
12
13
  # No transport, just return the existing data
13
- return data if transport_plugins.empty?
14
+ return data if transport_plugins.size == 0
14
15
 
15
16
  if transport_plugins.size > 1
16
17
  # TODO: Maybe make custom error for this
17
18
  raise "#{pkg.name} depends on #{transport_plugins.size} packages that define transport plugins. " \
18
19
  "Select a plugin by adding a `plugin:transport` property to the package.json"
19
20
  end
20
-
21
- project_path = project.root_path.to_s
22
- project_path << '/' if project_path !~ /\/$/
23
- filepath = file.sub(/^#{project_path}/,'') # relative file path from project
24
-
25
- transport_path = context.resolve project.path_from_module(transport_plugins.first)
26
- ctx = context.environment.js_context_for transport_path
21
+
22
+ plugin_ctx = environment.plugin_context_for transport_plugins.first
23
+ filepath = file.to_s
27
24
  out = ''
28
25
 
29
26
  V8::C::Locker() do
30
- ctx["PACKAGE_INFO"] = pkg.attributes
31
- ctx["DATA"] = data
32
- out = ctx.eval("exports.compileTransport(DATA, PACKAGE_INFO, '#{module_id}', '#{filepath}');")
27
+ plugin_ctx["PACKAGE_INFO"] = pkg.attributes
28
+ plugin_ctx["DATA"] = data
29
+ out = plugin_ctx.eval("BPM_PLUGIN.compileTransport(DATA, PACKAGE_INFO, '#{module_id}', '#{filepath}');")
33
30
  end
34
31
 
35
32
  out + "\n\n"
data/lib/bpm/pipeline.rb CHANGED
@@ -3,6 +3,12 @@ require 'v8'
3
3
 
4
4
  module BPM
5
5
 
6
+ class Console
7
+ def log(str)
8
+ puts str
9
+ end
10
+ end
11
+
6
12
  # A BPM package-aware asset pipeline. Asset lookup respects package.json
7
13
  # directory configurations as well as loading preprocessors, formats, and
8
14
  # postprocessors from the package config.
@@ -14,6 +20,8 @@ module BPM
14
20
  # Pass in the project you want the pipeline to manage.
15
21
  def initialize(project)
16
22
  @project = project
23
+ @plugin_contexts = {}
24
+
17
25
  project_path = project.root_path
18
26
 
19
27
  super project_path
@@ -35,11 +43,8 @@ module BPM
35
43
  append_path File.join project_path, 'assets'
36
44
  end
37
45
 
38
- # Loads the passed JavaScript file and evals it. Used for loading
39
- # transport and other plugins.
40
- def js_context_for(path)
41
- @js_contexts ||= {}
42
- @js_contexts[path] ||= build_js_context(path)
46
+ def plugin_context_for(module_id)
47
+ @plugin_contexts[module_id] ||= build_plugin_context(module_id)
43
48
  end
44
49
 
45
50
  # Returns an array of all the buildable assets in the current directory.
@@ -76,8 +81,12 @@ module BPM
76
81
  magic_paths += %w(app_package.js app_styles.css).map do |filename|
77
82
  File.join project.root_path, 'assets', project.name, filename
78
83
  end
79
-
80
- if magic_paths.include? pathname.to_s
84
+
85
+ plugin_path = File.join project.root_path, '.bpm', 'plugins'
86
+
87
+ if pathname.to_s =~ /^#{Regexp.escape plugin_path}/
88
+ BPM::PluginAsset.new(self, "spade/~transports/spade", pathname, options)
89
+ elsif magic_paths.include? pathname.to_s
81
90
  BPM::GeneratedAsset.new(self, logical_path, pathname, options)
82
91
  else
83
92
  super logical_path, pathname, options
@@ -86,18 +95,23 @@ module BPM
86
95
 
87
96
  private
88
97
 
89
- def build_js_context(path)
98
+ def build_plugin_context(module_id)
99
+ asset = BPM::PluginAsset.new(self, module_id)
100
+ plugin_text = asset.to_s
101
+
90
102
  ctx = nil
91
103
  V8::C::Locker() do
92
104
  ctx = V8::Context.new do |ctx|
93
- ctx['exports'] = {}
94
- ctx.eval "(function(exports) { #{File.read path} })(exports);"
105
+ ctx['window'] = ctx # make browser-like environment
106
+ ctx['console'] = BPM::Console.new
107
+
108
+ ctx['BPM_PLUGIN'] = {}
109
+ ctx.eval plugin_text
95
110
  end
96
111
  end
97
- ctx
98
112
 
113
+ ctx
99
114
  end
100
-
101
115
 
102
116
  end
103
117
 
data/lib/bpm/project.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'json'
2
+ require 'bpm/version'
2
3
 
3
4
  module BPM
4
5
 
data/lib/bpm/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module BPM
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
data/lib/bpm.rb CHANGED
@@ -17,6 +17,7 @@ module BPM
17
17
  autoload :DirectiveProcessor, 'bpm/pipeline/directive_processor'
18
18
  autoload :GeneratedAsset, 'bpm/pipeline/generated_asset'
19
19
  autoload :TransportProcessor, 'bpm/pipeline/transport_processor'
20
+ autoload :PluginAsset, 'bpm/pipeline/plugin_asset'
20
21
  end
21
22
 
22
23
  # The BPM constants need to be defined first
@@ -1 +1,3 @@
1
1
  //UGLY DUCK
2
+ UGLYDUCK = "IS UGLY";
3
+
@@ -1,4 +1,6 @@
1
+ /*globals BPM_PLUGIN UGLYDUCK */
1
2
 
2
- exports.minify = function(body, pkg, moduleId, pathname) {
3
- return "//MINIFIED START\n"+body+"\n//MINIFIED END\n";
3
+ BPM_PLUGIN.minify = function(body, pkg, moduleId, pathname) {
4
+ var whatIsUglyDuck = 'undefined' === typeof UGLYDUCK ? '(main not loaded)' : UGLYDUCK;
5
+ return "//MINIFIED START\nUGLY DUCK "+UGLYDUCK+"\n"+body+"\n//MINIFIED END\n";
4
6
  };
@@ -1,5 +1,5 @@
1
1
 
2
- exports.compileTransport = function(body, pkg, moduleId, filename) {
2
+ BPM_PLUGIN.compileTransport = function(body, pkg, moduleId, filename) {
3
3
  return "define_transport(function() {\n"+body+"\n}), '"+pkg.name+"', '"+moduleId+"', '"+filename+"');";
4
4
  };
5
5
 
@@ -239,96 +239,3 @@ describe BPM::Pipeline, "buildable_assets" do
239
239
 
240
240
  end
241
241
 
242
- describe BPM::Pipeline, 'transport processor' do
243
-
244
- before do
245
- goto_home
246
- set_host
247
- reset_libgems bpm_dir.to_s
248
- start_fake(FakeGemServer.new)
249
-
250
- FileUtils.cp_r fixtures('transporter'), '.'
251
- cd home('transporter')
252
-
253
- bpm 'compile'
254
- wait
255
- end
256
-
257
- subject do
258
- project = BPM::Project.new home('transporter')
259
- BPM::Pipeline.new project
260
- end
261
-
262
- it "should wrap the project's main.js" do
263
- asset = subject.find_asset 'transporter/lib/main.js'
264
- asset.to_s.should == "define_transport(function() {\n//TRANSPORT\ntransporter();\n//TRANSPORT\n\n}), 'transporter', 'main', 'lib/main.js');\n\n"
265
- asset.pathname.to_s.should == File.join(Dir.pwd, 'lib', 'main.js')
266
- end
267
-
268
- it "should not wrap transport/main.js" do
269
- asset = subject.find_asset 'transport/lib/main.js'
270
- asset.to_s.should == "// TRANSPORT DEMO\n"
271
- end
272
-
273
- end
274
-
275
- describe BPM::Pipeline, 'minifier' do
276
-
277
- before do
278
- goto_home
279
- set_host
280
- reset_libgems bpm_dir.to_s
281
- start_fake(FakeGemServer.new)
282
-
283
- FileUtils.cp_r fixtures('minitest'), '.'
284
- cd home('minitest')
285
-
286
- bpm 'compile'
287
- wait
288
- end
289
-
290
- subject do
291
- project = BPM::Project.new home('minitest')
292
- BPM::Pipeline.new project
293
- end
294
-
295
- it "should wrap bpm_packages.js" do
296
- asset = subject.find_asset 'bpm_packages.js'
297
- file_path = home('minitest', 'packages', 'uglyduck', 'lib', 'main.js')
298
- expected = <<EOF
299
- //MINIFIED START
300
- /* ===========================================================================
301
- BPM Static Dependencies
302
- MANIFEST: uglyduck (1.0.0)
303
- This file is generated automatically by the bpm (http://www.bpmjs.org)
304
- To use this file, load this file in your HTML head.
305
- =========================================================================*/
306
-
307
- #{File.read file_path}
308
- //MINIFIED END
309
- EOF
310
-
311
- asset.to_s.should == expected
312
- end
313
-
314
- it "should wrap app_package.js" do
315
- asset = subject.find_asset 'minitest/app_package.js'
316
- file_path = home('minitest', 'lib', 'main.js')
317
- expected = <<EOF
318
- //MINIFIED START
319
- /* ===========================================================================
320
- BPM Static Dependencies
321
- MANIFEST: minitest (2.0.0)
322
- This file is generated automatically by the bpm (http://www.bpmjs.org)
323
- To use this file, load this file in your HTML head.
324
- =========================================================================*/
325
-
326
- #{File.read(file_path)}
327
- //MINIFIED END
328
- EOF
329
- asset.to_s.should == expected
330
- end
331
-
332
- end
333
-
334
-
@@ -0,0 +1,64 @@
1
+ require "spec_helper"
2
+
3
+ describe BPM::Pipeline, 'minifier' do
4
+
5
+ before do
6
+ goto_home
7
+ set_host
8
+ reset_libgems bpm_dir.to_s
9
+ start_fake(FakeGemServer.new)
10
+
11
+ FileUtils.cp_r fixtures('minitest'), '.'
12
+ cd home('minitest')
13
+
14
+ bpm 'compile'
15
+ wait
16
+ end
17
+
18
+ subject do
19
+ project = BPM::Project.new home('minitest')
20
+ BPM::Pipeline.new project
21
+ end
22
+
23
+ it "should wrap bpm_packages.js" do
24
+ asset = subject.find_asset 'bpm_packages.js'
25
+ file_path = home('minitest', 'packages', 'uglyduck', 'lib', 'main.js')
26
+ expected = <<EOF
27
+ //MINIFIED START
28
+ UGLY DUCK IS UGLY
29
+ /* ===========================================================================
30
+ BPM Static Dependencies
31
+ MANIFEST: uglyduck (1.0.0)
32
+ This file is generated automatically by the bpm (http://www.bpmjs.org)
33
+ To use this file, load this file in your HTML head.
34
+ =========================================================================*/
35
+
36
+ #{File.read file_path}
37
+ //MINIFIED END
38
+ EOF
39
+
40
+ asset.to_s.should == expected
41
+ end
42
+
43
+ it "should wrap app_package.js" do
44
+ asset = subject.find_asset 'minitest/app_package.js'
45
+ file_path = home('minitest', 'lib', 'main.js')
46
+ expected = <<EOF
47
+ //MINIFIED START
48
+ UGLY DUCK IS UGLY
49
+ /* ===========================================================================
50
+ BPM Static Dependencies
51
+ MANIFEST: minitest (2.0.0)
52
+ This file is generated automatically by the bpm (http://www.bpmjs.org)
53
+ To use this file, load this file in your HTML head.
54
+ =========================================================================*/
55
+
56
+ #{File.read(file_path)}
57
+ //MINIFIED END
58
+ EOF
59
+ asset.to_s.should == expected
60
+ end
61
+
62
+ end
63
+
64
+
@@ -0,0 +1,35 @@
1
+ require "spec_helper"
2
+
3
+ describe BPM::Pipeline, 'transport processor' do
4
+
5
+ before do
6
+ goto_home
7
+ set_host
8
+ reset_libgems bpm_dir.to_s
9
+ start_fake(FakeGemServer.new)
10
+
11
+ FileUtils.cp_r fixtures('transporter'), '.'
12
+ cd home('transporter')
13
+
14
+ bpm 'compile'
15
+ wait
16
+ end
17
+
18
+ subject do
19
+ project = BPM::Project.new home('transporter')
20
+ BPM::Pipeline.new project
21
+ end
22
+
23
+ it "should wrap the project's main.js" do
24
+ asset = subject.find_asset 'transporter/lib/main.js'
25
+ exp_path = home('transporter', 'lib', 'main.js')
26
+ asset.to_s.should == "define_transport(function() {\n//TRANSPORT\ntransporter();\n//TRANSPORT\n\n}), 'transporter', 'main', '#{exp_path}');\n\n"
27
+ asset.pathname.to_s.should == File.join(Dir.pwd, 'lib', 'main.js')
28
+ end
29
+
30
+ it "should not wrap transport/main.js" do
31
+ asset = subject.find_asset 'transport/lib/main.js'
32
+ asset.to_s.should == "// TRANSPORT DEMO\n"
33
+ end
34
+
35
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bpm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-07-02 00:00:00.000000000Z
13
+ date: 2011-07-05 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: libgems
17
- requirement: &2152430900 !ruby/object:Gem::Requirement
17
+ requirement: &2152534360 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 0.0.2
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2152430900
25
+ version_requirements: *2152534360
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: gemcutter
28
- requirement: &2152429720 !ruby/object:Gem::Requirement
28
+ requirement: &2152533760 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 0.6.1
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *2152429720
36
+ version_requirements: *2152533760
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: highline
39
- requirement: &2152428900 !ruby/object:Gem::Requirement
39
+ requirement: &2152533080 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: 1.6.1
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *2152428900
47
+ version_requirements: *2152533080
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: json_pure
50
- requirement: &2152427980 !ruby/object:Gem::Requirement
50
+ requirement: &2152532460 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ~>
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: 1.4.6
56
56
  type: :runtime
57
57
  prerelease: false
58
- version_requirements: *2152427980
58
+ version_requirements: *2152532460
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: thor
61
- requirement: &2152427400 !ruby/object:Gem::Requirement
61
+ requirement: &2152531400 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ~>
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: 0.14.3
67
67
  type: :runtime
68
68
  prerelease: false
69
- version_requirements: *2152427400
69
+ version_requirements: *2152531400
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: therubyracer
72
- requirement: &2152426800 !ruby/object:Gem::Requirement
72
+ requirement: &2152530740 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ~>
@@ -77,10 +77,10 @@ dependencies:
77
77
  version: 0.9.2
78
78
  type: :runtime
79
79
  prerelease: false
80
- version_requirements: *2152426800
80
+ version_requirements: *2152530740
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: hike
83
- requirement: &2152426080 !ruby/object:Gem::Requirement
83
+ requirement: &2152530180 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - ~>
@@ -88,10 +88,10 @@ dependencies:
88
88
  version: '1.1'
89
89
  type: :runtime
90
90
  prerelease: false
91
- version_requirements: *2152426080
91
+ version_requirements: *2152530180
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: rack
94
- requirement: &2152424780 !ruby/object:Gem::Requirement
94
+ requirement: &2152529460 !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements:
97
97
  - - ~>
@@ -99,10 +99,10 @@ dependencies:
99
99
  version: '1.0'
100
100
  type: :runtime
101
101
  prerelease: false
102
- version_requirements: *2152424780
102
+ version_requirements: *2152529460
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: tilt
105
- requirement: &2152423440 !ruby/object:Gem::Requirement
105
+ requirement: &2152528620 !ruby/object:Gem::Requirement
106
106
  none: false
107
107
  requirements:
108
108
  - - ~>
@@ -113,10 +113,10 @@ dependencies:
113
113
  version: 1.3.0
114
114
  type: :runtime
115
115
  prerelease: false
116
- version_requirements: *2152423440
116
+ version_requirements: *2152528620
117
117
  - !ruby/object:Gem::Dependency
118
118
  name: rspec
119
- requirement: &2152420620 !ruby/object:Gem::Requirement
119
+ requirement: &2152526860 !ruby/object:Gem::Requirement
120
120
  none: false
121
121
  requirements:
122
122
  - - ! '>='
@@ -124,10 +124,10 @@ dependencies:
124
124
  version: '0'
125
125
  type: :development
126
126
  prerelease: false
127
- version_requirements: *2152420620
127
+ version_requirements: *2152526860
128
128
  - !ruby/object:Gem::Dependency
129
129
  name: rack
130
- requirement: &2152418640 !ruby/object:Gem::Requirement
130
+ requirement: &2152525900 !ruby/object:Gem::Requirement
131
131
  none: false
132
132
  requirements:
133
133
  - - ~>
@@ -135,7 +135,7 @@ dependencies:
135
135
  version: 1.2.1
136
136
  type: :development
137
137
  prerelease: false
138
- version_requirements: *2152418640
138
+ version_requirements: *2152525900
139
139
  description: Package Manager for JavaScript
140
140
  email:
141
141
  - charles@sproutcore.com
@@ -327,6 +327,7 @@ files:
327
327
  - lib/bpm/pipeline.rb
328
328
  - lib/bpm/pipeline/directive_processor.rb
329
329
  - lib/bpm/pipeline/generated_asset.rb
330
+ - lib/bpm/pipeline/plugin_asset.rb
330
331
  - lib/bpm/pipeline/transport_processor.rb
331
332
  - lib/bpm/project.rb
332
333
  - lib/bpm/project_generator.rb
@@ -555,6 +556,8 @@ files:
555
556
  - spec/gauntlet_spec.rb
556
557
  - spec/package_spec.rb
557
558
  - spec/pipeline_spec.rb
559
+ - spec/plugins/minifier_spec.rb
560
+ - spec/plugins/transport_spec.rb
558
561
  - spec/project_spec.rb
559
562
  - spec/spec_helper.rb
560
563
  - spec/support/cli.rb
@@ -818,6 +821,8 @@ test_files:
818
821
  - spec/gauntlet_spec.rb
819
822
  - spec/package_spec.rb
820
823
  - spec/pipeline_spec.rb
824
+ - spec/plugins/minifier_spec.rb
825
+ - spec/plugins/transport_spec.rb
821
826
  - spec/project_spec.rb
822
827
  - spec/spec_helper.rb
823
828
  - spec/support/cli.rb