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 +1 -0
- data/lib/bpm/cli/base.rb +4 -7
- data/lib/bpm/init_generator.rb +2 -3
- data/lib/bpm/package.rb +29 -1
- data/lib/bpm/pipeline/generated_asset.rb +5 -9
- data/lib/bpm/pipeline/plugin_asset.rb +74 -0
- data/lib/bpm/pipeline/transport_processor.rb +9 -12
- data/lib/bpm/pipeline.rb +26 -12
- data/lib/bpm/project.rb +1 -0
- data/lib/bpm/version.rb +1 -1
- data/lib/bpm.rb +1 -0
- data/spec/fixtures/minitest/packages/uglyduck/lib/main.js +2 -0
- data/spec/fixtures/minitest/packages/uglyduck/minifier/main.js +4 -2
- data/spec/fixtures/transporter/packages/transport/transports/wrapper.js +1 -1
- data/spec/pipeline_spec.rb +0 -93
- data/spec/plugins/minifier_spec.rb +64 -0
- data/spec/plugins/transport_spec.rb +35 -0
- metadata +29 -24
data/.gitignore
CHANGED
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
|
-
|
86
|
-
|
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.
|
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
|
data/lib/bpm/init_generator.rb
CHANGED
@@ -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
|
-
|
35
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
38
|
-
|
39
|
-
body =
|
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
|
-
|
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.
|
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
|
-
|
22
|
-
|
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
|
-
|
31
|
-
|
32
|
-
out =
|
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
|
-
|
39
|
-
|
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
|
-
|
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
|
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['
|
94
|
-
ctx
|
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
data/lib/bpm/version.rb
CHANGED
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,4 +1,6 @@
|
|
1
|
+
/*globals BPM_PLUGIN UGLYDUCK */
|
1
2
|
|
2
|
-
|
3
|
-
|
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
|
};
|
data/spec/pipeline_spec.rb
CHANGED
@@ -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.
|
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-
|
13
|
+
date: 2011-07-05 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: libgems
|
17
|
-
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: *
|
25
|
+
version_requirements: *2152534360
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: gemcutter
|
28
|
-
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: *
|
36
|
+
version_requirements: *2152533760
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: highline
|
39
|
-
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: *
|
47
|
+
version_requirements: *2152533080
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: json_pure
|
50
|
-
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: *
|
58
|
+
version_requirements: *2152532460
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: thor
|
61
|
-
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: *
|
69
|
+
version_requirements: *2152531400
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: therubyracer
|
72
|
-
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: *
|
80
|
+
version_requirements: *2152530740
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: hike
|
83
|
-
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: *
|
91
|
+
version_requirements: *2152530180
|
92
92
|
- !ruby/object:Gem::Dependency
|
93
93
|
name: rack
|
94
|
-
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: *
|
102
|
+
version_requirements: *2152529460
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: tilt
|
105
|
-
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: *
|
116
|
+
version_requirements: *2152528620
|
117
117
|
- !ruby/object:Gem::Dependency
|
118
118
|
name: rspec
|
119
|
-
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: *
|
127
|
+
version_requirements: *2152526860
|
128
128
|
- !ruby/object:Gem::Dependency
|
129
129
|
name: rack
|
130
|
-
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: *
|
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
|