bpm 0.1.3 → 0.1.4

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