bpm 1.0.0.rc.3 → 1.0.0.rc.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/README.md +3 -0
- data/lib/bpm/cli/base.rb +198 -44
- data/lib/bpm/cli/owner.rb +3 -5
- data/lib/bpm/package_project.rb +23 -0
- data/lib/bpm/project.rb +3 -7
- data/lib/bpm/version.rb +1 -1
- data/lib/bpm.rb +1 -0
- data/spec/cli/add_spec.rb +21 -6
- data/spec/cli/fetch_spec.rb +19 -3
- data/spec/cli/list_spec.rb +39 -24
- data/spec/cli/owner_spec.rb +0 -5
- data/spec/cli/preview_spec.rb +12 -0
- data/spec/cli/remove_spec.rb +41 -21
- data/spec/package_project_spec.rb +9 -0
- metadata +28 -25
data/README.md
CHANGED
@@ -41,6 +41,9 @@ Install via RubyGems:
|
|
41
41
|
|
42
42
|
`gem install bpm --pre`
|
43
43
|
|
44
|
+
WARNING: Make sure you have the most recent version of RubyGems and the
|
45
|
+
most recent version of RVM if you are using that.
|
46
|
+
|
44
47
|
When we release, bpm will be also be available via PKG and EXE installers as well.
|
45
48
|
|
46
49
|
# Current Development Status
|
data/lib/bpm/cli/base.rb
CHANGED
@@ -12,20 +12,63 @@ module BPM
|
|
12
12
|
:aliases => ['-V'],
|
13
13
|
:desc => 'Show additional debug information while running'
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
15
|
+
class << self
|
16
|
+
|
17
|
+
def help(shell, subcommand = false)
|
18
|
+
shell.say <<LONGDESC
|
19
|
+
bpm (v#{BPM::VERSION}) - the browser package manager
|
20
|
+
|
21
|
+
BPM is a tool for aiding in development of JavaScript-based web applications.
|
22
|
+
It manages dependencies, custom file formats, minification and more.
|
23
|
+
|
24
|
+
Sample Usage:
|
25
|
+
|
26
|
+
bpm init my_app
|
27
|
+
cd my_app
|
28
|
+
bpm add my_dependency
|
29
|
+
bpm preview
|
19
30
|
|
20
|
-
|
21
|
-
|
22
|
-
|
31
|
+
LONGDESC
|
32
|
+
|
33
|
+
super shell, subcommand
|
34
|
+
end
|
35
|
+
|
36
|
+
# Hacked so long description isn't wrapped
|
37
|
+
def task_help(shell, task_name)
|
38
|
+
meth = normalize_task_name(task_name)
|
39
|
+
task = all_tasks[meth]
|
40
|
+
handle_no_task_error(meth) unless task
|
41
|
+
|
42
|
+
shell.say "Usage:"
|
43
|
+
shell.say " #{banner(task)}"
|
44
|
+
shell.say
|
45
|
+
class_options_help(shell, nil => task.options.map { |_, o| o })
|
46
|
+
if task.long_description
|
47
|
+
shell.say "Description:"
|
48
|
+
shell.print_wrapped(task.long_description, :ident => 2)
|
49
|
+
else
|
50
|
+
shell.say task.description
|
51
|
+
end
|
23
52
|
end
|
24
53
|
|
25
|
-
|
54
|
+
def start(given_args=ARGV, config={})
|
55
|
+
if given_args.include?('--verbose') || given_args.include?('-V')
|
56
|
+
BPM.show_deprecations = true
|
57
|
+
end
|
58
|
+
|
59
|
+
super
|
26
60
|
|
27
|
-
|
28
|
-
|
61
|
+
if BPM.deprecation_count > 0
|
62
|
+
puts "[WARN] #{BPM.deprecation_count} deprecation warnings were hidden. Run with --verbose to see them."
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def help(*args)
|
68
|
+
if args.first == "owner"
|
69
|
+
CLI::Owner.start( [ "help" ] + args[1..-1] )
|
70
|
+
else
|
71
|
+
super
|
29
72
|
end
|
30
73
|
end
|
31
74
|
|
@@ -33,10 +76,19 @@ module BPM
|
|
33
76
|
subcommand "owner", BPM::CLI::Owner
|
34
77
|
|
35
78
|
desc "fetch [PACKAGE]", "Fetch one or many bpm packages to local cache"
|
79
|
+
long_desc <<-LONGDESC
|
80
|
+
Fetch one or many bpm packages to local cache.
|
81
|
+
|
82
|
+
If no packages are specified, BPM will use the current project.
|
83
|
+
|
84
|
+
Note: This command is used internally and should not normally need to be called directly.
|
85
|
+
LONGDESC
|
36
86
|
method_option :version, :type => :string, :default => ">= 0", :aliases => ['-v'], :desc => 'Specify a version to install'
|
37
87
|
method_option :prerelease, :type => :boolean, :default => false, :aliases => ['--pre'], :desc => 'Install a prerelease version'
|
88
|
+
method_option :project, :type => :string, :default => nil, :aliases => ['-p'], :desc => 'Specify project location other than working directory'
|
89
|
+
method_option :package, :type => :boolean, :default => false, :desc => "Fetch for a package, instead of a project"
|
38
90
|
def fetch(*packages)
|
39
|
-
project =
|
91
|
+
project = find_project(false) if packages.empty?
|
40
92
|
if project
|
41
93
|
success = project.fetch_dependencies options[:verbose]
|
42
94
|
if !success
|
@@ -66,19 +118,35 @@ module BPM
|
|
66
118
|
end
|
67
119
|
|
68
120
|
|
69
|
-
desc "fetched [PACKAGE]", "
|
121
|
+
desc "fetched [PACKAGE]", "Displays a list of locally cached BPM packages"
|
70
122
|
def fetched(*packages)
|
71
123
|
local = BPM::Local.new
|
72
124
|
index = local.installed(packages)
|
73
125
|
print_specs(packages, index)
|
74
126
|
end
|
75
127
|
|
76
|
-
desc "add [PACKAGE]", "Add one or more
|
77
|
-
|
78
|
-
|
79
|
-
|
128
|
+
desc "add [PACKAGE]", "Add one or more dependencies to a bpm project"
|
129
|
+
long_desc <<-LONGDESC
|
130
|
+
Adds one or more dependencies to a bpm project.
|
131
|
+
|
132
|
+
It first fetches the dependency from getbpm.org (or uses the locally vendored version)
|
133
|
+
and then adds it to your project's JSON config.
|
134
|
+
|
135
|
+
If multiple package names are passed they will all be added.
|
136
|
+
|
137
|
+
Run with --pre to install a prerelease version of your package.
|
138
|
+
|
139
|
+
Run with --version to specify a specific package version other than
|
140
|
+
the most recent.
|
141
|
+
|
142
|
+
To remove a dependency just run `bpm remove`.
|
143
|
+
LONGDESC
|
144
|
+
method_option :version, :type => :string, :default => nil, :aliases => ['-v'], :desc => 'Specify a version to install'
|
145
|
+
method_option :project, :type => :string, :default => nil, :aliases => ['-p'], :desc => 'Specify project location other than working directory'
|
146
|
+
method_option :prerelease, :type => :boolean, :default => false, :aliases => ['--pre'], :desc => 'Install a prerelease version'
|
80
147
|
method_option :development, :type => :boolean, :default => false, :aliases => ['--dev'], :desc => "Add as a development dependency"
|
81
|
-
method_option :mode,
|
148
|
+
method_option :mode, :type => :string, :default => :production, :aliases => ['-m'], :desc => "Build mode for compile"
|
149
|
+
method_option :package, :type => :boolean, :default => false, :desc => "Add to a package, instead of a project"
|
82
150
|
def add(*package_names)
|
83
151
|
# map to dependencies
|
84
152
|
if package_names.empty?
|
@@ -106,9 +174,16 @@ module BPM
|
|
106
174
|
project.build options[:mode], true
|
107
175
|
end
|
108
176
|
|
109
|
-
desc "remove [PACKAGE]", "Remove one or more
|
110
|
-
|
111
|
-
|
177
|
+
desc "remove [PACKAGE]", "Remove one or more dependencies from a BPM project"
|
178
|
+
long_desc <<-LONGDESC
|
179
|
+
Remove one or more dependencies from a BPM project.
|
180
|
+
|
181
|
+
This command will remove the dependency declaration from the project JSON.
|
182
|
+
It will then rebuild the project without the depedency.
|
183
|
+
LONGDESC
|
184
|
+
method_option :project, :type => :string, :default => nil, :aliases => ['-p'], :desc => 'Specify project location other than working directory'
|
185
|
+
method_option :mode, :type => :string, :default => :production, :aliases => ['-m'], :desc => "Build mode for compile"
|
186
|
+
method_option :package, :type => :boolean, :default => false, :desc => "Remove from a package, instead of a project"
|
112
187
|
def remove(*package_names)
|
113
188
|
|
114
189
|
# map to dependencies
|
@@ -122,20 +197,40 @@ module BPM
|
|
122
197
|
project.build options[:mode], true
|
123
198
|
end
|
124
199
|
|
125
|
-
desc "preview", "Preview server that
|
126
|
-
|
127
|
-
|
128
|
-
|
200
|
+
desc "preview", "Preview server that autocompiles assets as they are requested"
|
201
|
+
long_desc <<-LONGDESC
|
202
|
+
Preview server that autocompiles assets as they are requested.
|
203
|
+
|
204
|
+
The primary use of `bpm preview` is that it is faster to use that `bpm rebuild`.
|
205
|
+
When developing with the preview server changes to your code are automatically
|
206
|
+
recognized and will be present when the page is reloaded.
|
207
|
+
|
208
|
+
Once you are satisfied with your project you will still need to run `bpm rebuild`
|
209
|
+
to save your updated assets to disk.
|
210
|
+
LONGDESC
|
211
|
+
method_option :mode, :type => :string, :default => :debug, :aliases => ['-m'], :desc => 'Build mode for compile'
|
212
|
+
method_option :project, :type => :string, :default => nil, :aliases => ['-p'], :desc => 'Specify project location other than working directory'
|
213
|
+
method_option :port, :type => :string, :default => '4020', :desc => "Port to host server on"
|
214
|
+
method_option :package, :type => :boolean, :default => false, :desc => "Preview a package, instead of a project"
|
129
215
|
def preview
|
130
216
|
project = find_project
|
131
217
|
project.verify_and_repair options[:mode], options[:verbose]
|
132
218
|
BPM::Server.start project, :Port => options[:port], :mode => options[:mode].to_sym
|
133
219
|
end
|
134
220
|
|
135
|
-
desc "rebuild", "Rebuilds
|
136
|
-
|
137
|
-
|
138
|
-
|
221
|
+
desc "rebuild", "Rebuilds BPM assets"
|
222
|
+
long_desc <<-LONGDESC
|
223
|
+
Rebuilds BPM assets
|
224
|
+
|
225
|
+
`bpm rebuild` will rebuild all assets managed by BPM as declared in your project's
|
226
|
+
JSON config. This should always be run before deploying to the server. During active
|
227
|
+
development, consider using `bpm preview`. Though remember that you will have to run
|
228
|
+
`bpm rebuild` before deploying.
|
229
|
+
LONGDESC
|
230
|
+
method_option :mode, :type => :string, :default => :production, :aliases => ['-m'], :desc => 'Build mode for compile'
|
231
|
+
method_option :project, :type => :string, :default => nil, :aliases => ['-p'], :desc => 'Specify project location other than working directory'
|
232
|
+
method_option :update, :type => :boolean, :default => false, :aliases => ['-u'], :desc => 'Updates dependencies to latest compatible version'
|
233
|
+
method_option :package, :type => :boolean, :default => false, :desc => "Rebuild package, instead of a project"
|
139
234
|
def rebuild
|
140
235
|
find_project.fetch_dependencies(true) if options[:update]
|
141
236
|
find_project.build options[:mode].to_sym, true
|
@@ -178,7 +273,14 @@ module BPM
|
|
178
273
|
end
|
179
274
|
end
|
180
275
|
|
181
|
-
desc "push PACKAGE", "Distribute your
|
276
|
+
desc "push PACKAGE", "Distribute your BPM package on GetBPM.org"
|
277
|
+
long_desc <<-LONGDESC
|
278
|
+
Distribute your BPM package on GetBPM.org
|
279
|
+
|
280
|
+
Pushes your package to GetBPM.org. You will need to run
|
281
|
+
`bpm pack` before you can run this command. You will also need
|
282
|
+
an account on GetBPM.org.
|
283
|
+
LONGDESC
|
182
284
|
def push(package)
|
183
285
|
remote = BPM::Remote.new
|
184
286
|
if remote.logged_in?
|
@@ -188,7 +290,15 @@ module BPM
|
|
188
290
|
end
|
189
291
|
end
|
190
292
|
|
191
|
-
desc "yank", "Remove a specific package version release from GetBPM.org"
|
293
|
+
desc "yank PACKAGE", "Remove a specific package version release from GetBPM.org"
|
294
|
+
long_desc <<-LONGDESC
|
295
|
+
Remove a specific package version release from GetBPM.org
|
296
|
+
|
297
|
+
This is useful if you have pushed a version in error or have discovered a serious bug.
|
298
|
+
Beware, however, that you cannot repush a version number. When you yank a package that
|
299
|
+
version number still remains active in the event that other pacakges depend on it. If
|
300
|
+
you need a package gone for good, please contact BPM support.
|
301
|
+
LONGDESC
|
192
302
|
method_option :version, :type => :string, :default => nil, :aliases => ['-v'], :desc => 'Specify a version to yank'
|
193
303
|
method_option :undo, :type => :boolean, :default => false, :desc => 'Unyank package'
|
194
304
|
def yank(package)
|
@@ -209,14 +319,24 @@ module BPM
|
|
209
319
|
end
|
210
320
|
|
211
321
|
desc "list", "List BPM Packages"
|
322
|
+
long_desc <<-LONGDESC
|
323
|
+
List BPM Packages
|
324
|
+
|
325
|
+
By default this provides a list of all dependencies of the current project.
|
326
|
+
|
327
|
+
To see a list of all available BPM packages, run with --remote. Add --all to
|
328
|
+
see all possible (non-prerelease) versions and --pre to see prerelease versions.
|
329
|
+
LONGDESC
|
212
330
|
method_option :remote, :type => :boolean, :default => false, :aliases => ['-r'],
|
213
331
|
:desc => 'List packages on remote server'
|
214
332
|
method_option :all, :type => :boolean, :default => false, :aliases => ['-a'],
|
215
|
-
:desc => 'List all versions available (remote only)'
|
333
|
+
:desc => 'List all (non-prerelease) versions available (remote only)'
|
216
334
|
method_option :prerelease, :type => :boolean, :default => false, :aliases => ['--pre'],
|
217
335
|
:desc => 'List prerelease versions available (remote only)'
|
218
336
|
method_option :development, :type => :boolean, :default => false, :aliases => ['--dev'],
|
219
337
|
:desc => 'List development dependencies instead of runtime (local only)'
|
338
|
+
method_option :package, :type => :boolean, :default => false,
|
339
|
+
:desc => "List for a package, instead of a project"
|
220
340
|
def list(*packages)
|
221
341
|
if options[:remote]
|
222
342
|
remote = BPM::Remote.new
|
@@ -235,10 +355,21 @@ module BPM
|
|
235
355
|
end
|
236
356
|
end
|
237
357
|
|
238
|
-
desc "init [PATHS]", "Configure a project to use
|
239
|
-
|
358
|
+
desc "init [PATHS]", "Configure a project to use BPM for management"
|
359
|
+
long_desc <<-LONGDESC
|
360
|
+
Configure a project to use BPM for management
|
361
|
+
|
362
|
+
If the specified path does not exist it will be created with a basic BPM directory
|
363
|
+
structure. For existing directories, BPM does not create the full directory structure,
|
364
|
+
assuming that the current structure is adequate. In the event that you do want BPM to
|
365
|
+
create its full structure, pass --app.
|
366
|
+
|
367
|
+
By default, the app is given the same name as the directory it resides
|
368
|
+
in. If a different name is desired, pass the --name option.
|
369
|
+
LONGDESC
|
370
|
+
method_option :name, :type => :string, :default => nil, :desc => 'Specify a different name for the project'
|
240
371
|
method_option :skip, :type => :boolean, :default => false, :desc => 'Skip any conflicting files'
|
241
|
-
method_option :app,
|
372
|
+
method_option :app, :type => :boolean, :default => false, :desc => 'Manage app files as well as packages. (Always true for new directories.)'
|
242
373
|
#method_option :package, :type => :string, :default => nil, :desc => 'Specify a package template to build from'
|
243
374
|
def init(*paths)
|
244
375
|
paths = [Dir.pwd] if paths.empty?
|
@@ -271,7 +402,15 @@ module BPM
|
|
271
402
|
end
|
272
403
|
end
|
273
404
|
|
274
|
-
desc "pack [PACKAGE]", "Build a
|
405
|
+
desc "pack [PACKAGE]", "Build a BPM package from a package.json"
|
406
|
+
long_desc <<-LONGDESC
|
407
|
+
Build a BPM package from a package.json
|
408
|
+
|
409
|
+
This provides a .bpkg file that can be distributed directly or via GetBPM.org.
|
410
|
+
If distributed directly, the package can be installed with `bpm add PACKAGE.bpkg`.
|
411
|
+
If using GetBPM.org, run `bpm push PACKAGE.bpkg` and it can then be installed
|
412
|
+
via a normal `bpm add NAME`.
|
413
|
+
LONGDESC
|
275
414
|
method_option :email, :type => :string, :default => nil, :aliases => ['-e'], :desc => 'Specify an author email address'
|
276
415
|
def pack(package_path=nil)
|
277
416
|
package_path ||= Dir.pwd
|
@@ -289,7 +428,14 @@ module BPM
|
|
289
428
|
end
|
290
429
|
end
|
291
430
|
|
292
|
-
desc "unpack [PACKAGE]", "Extract files from a
|
431
|
+
desc "unpack [PACKAGE]", "Extract files from a BPM package"
|
432
|
+
long_desc <<-LONGDESC
|
433
|
+
Extract files from a BPM package
|
434
|
+
|
435
|
+
This is primarily useful for testing. If, for instance, a package
|
436
|
+
is not behaving as expected, it may be useful to unpack it to review
|
437
|
+
the contents.
|
438
|
+
LONGDESC
|
293
439
|
method_option :target, :type => :string, :default => ".", :aliases => ['-t'], :desc => 'Unpack to given directory'
|
294
440
|
def unpack(*paths)
|
295
441
|
local = BPM::Local.new
|
@@ -305,7 +451,14 @@ module BPM
|
|
305
451
|
end
|
306
452
|
end
|
307
453
|
|
308
|
-
desc "debug [OPTION]", "Display various options for debugging
|
454
|
+
desc "debug [OPTION]", "Display various options for debugging"
|
455
|
+
long_desc <<-LONGDESC
|
456
|
+
Display various options for debugging.
|
457
|
+
|
458
|
+
* build - Shows all project build settings
|
459
|
+
|
460
|
+
* repair - Verify and repair project
|
461
|
+
LONGDESC
|
309
462
|
method_option :project, :type => :string, :default => nil, :aliases => ['-p'], :desc => 'Specify project location other than working directory'
|
310
463
|
method_option :mode, :type => :string, :default => :debug, :aliases => ['-m'], :desc => 'Build mode'
|
311
464
|
def debug(option)
|
@@ -361,18 +514,19 @@ module BPM
|
|
361
514
|
self.class.handle_argument_error(self.class.tasks[name], nil)
|
362
515
|
end
|
363
516
|
|
364
|
-
def find_project
|
517
|
+
def find_project(required=true)
|
518
|
+
klass = options[:package] ? BPM::PackageProject : BPM::Project
|
365
519
|
if options[:project]
|
366
520
|
project_path = File.expand_path options[:project]
|
367
|
-
if !
|
368
|
-
abort "#{project_path} does not appear to be managed by
|
521
|
+
if required && !klass.is_project_root?(project_path)
|
522
|
+
abort "#{project_path} does not appear to be managed by BPM"
|
369
523
|
else
|
370
|
-
project =
|
524
|
+
project = klass.new project_path
|
371
525
|
end
|
372
526
|
else
|
373
|
-
project =
|
374
|
-
if project.nil?
|
375
|
-
abort "You do not appear to be inside of a
|
527
|
+
project = klass.nearest_project Dir.pwd
|
528
|
+
if required && project.nil?
|
529
|
+
abort "You do not appear to be inside of a BPM project"
|
376
530
|
end
|
377
531
|
end
|
378
532
|
|
data/lib/bpm/cli/owner.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
module BPM::CLI
|
2
2
|
class Owner < Thor
|
3
|
-
|
4
|
-
|
5
|
-
desc "list [PACKAGE]", "Display owners of a package"
|
3
|
+
desc "owner list [PACKAGE]", "Display owners of a package"
|
6
4
|
def list(package)
|
7
5
|
remote = BPM::Remote.new
|
8
6
|
if remote.logged_in?
|
@@ -22,7 +20,7 @@ module BPM::CLI
|
|
22
20
|
end
|
23
21
|
end
|
24
22
|
|
25
|
-
desc "add [PACKAGE] [EMAIL]", "Allow another user to push new versions of your
|
23
|
+
desc "owner add [PACKAGE] [EMAIL]", "Allow another user to push new versions of your BPM package"
|
26
24
|
def add(package, email)
|
27
25
|
remote = BPM::Remote.new
|
28
26
|
if remote.logged_in?
|
@@ -32,7 +30,7 @@ module BPM::CLI
|
|
32
30
|
end
|
33
31
|
end
|
34
32
|
|
35
|
-
desc "remove [PACKAGE] [EMAIL]", "Remove user's permission to push new versions of your
|
33
|
+
desc "owner remove [PACKAGE] [EMAIL]", "Remove user's permission to push new versions of your BPM package"
|
36
34
|
def remove(package, email)
|
37
35
|
remote = BPM::Remote.new
|
38
36
|
if remote.logged_in?
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module BPM
|
2
|
+
class PackageProject < Project
|
3
|
+
def self.project_file_path(path)
|
4
|
+
file = File.join(path, 'package.json')
|
5
|
+
File.exist?(file) ? file : nil
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.is_project_json?(path)
|
9
|
+
json = JSON.load(File.read(path)) rescue nil
|
10
|
+
return !!json
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.is_project_root?(path)
|
14
|
+
!!project_file_path(path)
|
15
|
+
end
|
16
|
+
|
17
|
+
def as_json
|
18
|
+
json = super
|
19
|
+
json.delete("bpm")
|
20
|
+
json
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/bpm/project.rb
CHANGED
@@ -91,19 +91,15 @@ module BPM
|
|
91
91
|
|
92
92
|
def vendored_packages
|
93
93
|
@vendored_packages ||= begin
|
94
|
-
|
95
|
-
packages_path = File.join(@root_path, 'packages')
|
96
|
-
search_paths = [vendor_root, packages_path]
|
94
|
+
search_paths = [vendor_root, File.join(@root_path, 'packages')]
|
97
95
|
paths = search_paths.map{|p| Dir.glob(File.join(p, '*')) }.flatten
|
98
96
|
pkgs = paths.select{|p| Package.is_package_root?(p) }.map{|p| Package.new(p) }
|
99
|
-
if pkgs.any?{|p| p.root_path =~ /^#{Regexp.escape(packages_path)}\// }
|
100
|
-
BPM.deprecation_warning "Use the vendor directory instead of the packages directory for #{root_path}"
|
101
|
-
end
|
102
97
|
pkgs += vendored_projects.map{|p| p.vendored_packages }.flatten
|
103
98
|
pkgs.select do |p|
|
104
99
|
begin
|
105
100
|
p.load_json
|
106
|
-
rescue BPM::InvalidPackageError
|
101
|
+
rescue BPM::InvalidPackageError => e
|
102
|
+
raise e if ENV['DEBUG']
|
107
103
|
false
|
108
104
|
end
|
109
105
|
end
|
data/lib/bpm/version.rb
CHANGED
data/lib/bpm.rb
CHANGED
@@ -14,6 +14,7 @@ module BPM
|
|
14
14
|
autoload :Remote, 'bpm/remote'
|
15
15
|
autoload :Repository, 'bpm/repository'
|
16
16
|
autoload :Project, 'bpm/project'
|
17
|
+
autoload :PackageProject, 'bpm/package_project'
|
17
18
|
autoload :Rack, 'bpm/rack'
|
18
19
|
autoload :Server, 'bpm/server'
|
19
20
|
autoload :Pipeline, 'bpm/pipeline'
|
data/spec/cli/add_spec.rb
CHANGED
@@ -17,7 +17,7 @@ describe 'bpm add' do
|
|
17
17
|
it "must be called from within a project" do
|
18
18
|
cd home # outside of project
|
19
19
|
bpm "add", "jquery", :track_stderr => true
|
20
|
-
stderr.read.should include("inside of a
|
20
|
+
stderr.read.should include("inside of a BPM project")
|
21
21
|
end
|
22
22
|
|
23
23
|
it "should add a new hard dependency" do
|
@@ -177,7 +177,7 @@ describe 'bpm add' do
|
|
177
177
|
bpm "add", "custom_generator", "--dev" and wait
|
178
178
|
output = stdout.read
|
179
179
|
output.should include("Added development package 'custom_generator' (1.0)")
|
180
|
-
|
180
|
+
|
181
181
|
bpm 'rebuild', '--mode=debug' and wait
|
182
182
|
has_development_dependency 'custom_generator', '1.0'
|
183
183
|
no_dependency 'custom_generator', false
|
@@ -188,7 +188,7 @@ describe 'bpm add' do
|
|
188
188
|
end
|
189
189
|
|
190
190
|
describe "bpm add using a vendor directory" do
|
191
|
-
before do
|
191
|
+
before do
|
192
192
|
goto_home
|
193
193
|
set_host
|
194
194
|
start_fake(FakeGemServer.new)
|
@@ -197,12 +197,27 @@ describe "bpm add using a vendor directory" do
|
|
197
197
|
FileUtils.cp_r project_fixture('hello_world'), home('hello_dev', 'vendor', 'hello_world')
|
198
198
|
cd home('hello_dev')
|
199
199
|
end
|
200
|
-
|
200
|
+
|
201
201
|
it "should include custom_package defined in a project found vendor" do
|
202
202
|
bpm 'add', 'custom_package' and wait
|
203
|
-
|
203
|
+
|
204
204
|
File.read(home('hello_dev', 'assets', 'bpm_libs.js')).should include("custom_package (2.0.0)")
|
205
205
|
end
|
206
|
-
|
206
|
+
|
207
207
|
end
|
208
208
|
|
209
|
+
describe "bpm add with a package" do
|
210
|
+
before do
|
211
|
+
goto_home
|
212
|
+
set_host
|
213
|
+
start_fake(FakeGemServer.new)
|
214
|
+
FileUtils.cp_r(package_fixture('spade'), '.')
|
215
|
+
cd home('spade')
|
216
|
+
end
|
217
|
+
|
218
|
+
it "should add dependency to package.json" do
|
219
|
+
File.read(home('spade', 'package.json')).should_not include('jquery')
|
220
|
+
bpm 'add', 'jquery', '--package' and wait
|
221
|
+
File.read(home('spade', 'package.json')).should include('jquery')
|
222
|
+
end
|
223
|
+
end
|
data/spec/cli/fetch_spec.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
require "json"
|
3
3
|
describe 'bpm fetch' do
|
4
|
-
|
4
|
+
|
5
5
|
before do
|
6
6
|
goto_home
|
7
7
|
FileUtils.cp_r(project_fixture('hello_world'), '.')
|
@@ -16,7 +16,7 @@ describe 'bpm fetch' do
|
|
16
16
|
package_info = JSON.load File.read(home('hello_world', 'hello_world.json'))
|
17
17
|
package_info['dependencies']['custom_package'] = '>= 0'
|
18
18
|
File.open(home('hello_world', 'hello_world.json'), 'w+') { |fd| fd << package_info.to_json }
|
19
|
-
|
19
|
+
|
20
20
|
bpm "fetch", '--verbose'
|
21
21
|
out = stdout.read
|
22
22
|
out.should include("Fetched dependent packages for hello_world")
|
@@ -28,7 +28,7 @@ describe 'bpm fetch' do
|
|
28
28
|
package_name.should be_fetched
|
29
29
|
package_name.should be_unpacked
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
end
|
33
33
|
|
34
34
|
it "fetches a valid package" do
|
@@ -141,3 +141,19 @@ describe 'bpm fetch' do
|
|
141
141
|
end
|
142
142
|
|
143
143
|
end
|
144
|
+
|
145
|
+
describe "bpm fetch with a package" do
|
146
|
+
before do
|
147
|
+
goto_home
|
148
|
+
set_host
|
149
|
+
start_fake(FakeGemServer.new)
|
150
|
+
FileUtils.cp_r(package_fixture('coffee-1.0.1.pre'), '.')
|
151
|
+
cd home('coffee-1.0.1.pre')
|
152
|
+
end
|
153
|
+
|
154
|
+
it "should fetch dependencies" do
|
155
|
+
"jquery-1.4.3".should_not be_fetched
|
156
|
+
bpm 'fetch', '--package' and wait
|
157
|
+
"jquery-1.4.3".should be_fetched
|
158
|
+
end
|
159
|
+
end
|
data/spec/cli/list_spec.rb
CHANGED
@@ -13,21 +13,21 @@ describe "bpm list" do
|
|
13
13
|
cd home('hello_world')
|
14
14
|
bpm 'fetch' and wait # make sure rebuild step doesn't run
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
it "lists non-development dependencies by default" do
|
18
18
|
bpm "list"
|
19
19
|
output = stdout.read
|
20
20
|
output.should include("ivory (0.0.1)")
|
21
21
|
output.should_not include("jquery (1.4.3)")
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
it "lists development dependencies with --dev option" do
|
25
25
|
bpm "list", "--dev"
|
26
26
|
output = stdout.read
|
27
27
|
output.should_not include("ivory (0.0.1)")
|
28
28
|
output.should include("jquery (1.4.3)")
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
it "should filter output by package name" do
|
32
32
|
bpm "list", "ivory", "spade"
|
33
33
|
output = stdout.read
|
@@ -36,81 +36,96 @@ describe "bpm list" do
|
|
36
36
|
output.should_not include("optparse")
|
37
37
|
output.should_not include("core-test")
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
40
|
it "should complain when called outside of a project" do
|
41
41
|
cd home
|
42
42
|
bpm "list", :track_stderr => true
|
43
|
-
stderr.read.should include("inside of a
|
43
|
+
stderr.read.should include("inside of a BPM project")
|
44
44
|
end
|
45
|
-
|
45
|
+
|
46
46
|
end
|
47
|
-
|
47
|
+
|
48
48
|
describe "remote" do
|
49
|
-
|
49
|
+
|
50
50
|
it "lists latest packages by default" do
|
51
51
|
bpm "list", "--remote"
|
52
|
-
|
52
|
+
|
53
53
|
output = stdout.read
|
54
54
|
output.should include("builder (3.0.0)")
|
55
55
|
output.should include("rake (0.8.7)")
|
56
56
|
end
|
57
|
-
|
57
|
+
|
58
58
|
it "lists all packages when given the all argument" do
|
59
59
|
bpm "list", "--remote", "-a"
|
60
|
-
|
60
|
+
|
61
61
|
output = stdout.read
|
62
62
|
output.should include("builder (3.0.0)")
|
63
63
|
output.should include("rake (0.8.7, 0.8.6)")
|
64
64
|
end
|
65
|
-
|
65
|
+
|
66
66
|
it "filters packages when given an argument" do
|
67
67
|
bpm "list", "builder", "--remote"
|
68
|
-
|
68
|
+
|
69
69
|
output = stdout.read
|
70
70
|
output.should include("builder (3.0.0)")
|
71
71
|
output.should_not include("rake")
|
72
72
|
end
|
73
|
-
|
73
|
+
|
74
74
|
it "filters packages when given an argument and shows all versions" do
|
75
75
|
bpm "list", "rake", "-a", "--remote"
|
76
|
-
|
76
|
+
|
77
77
|
output = stdout.read
|
78
78
|
output.should include("rake (0.8.7, 0.8.6)")
|
79
79
|
output.should_not include("builder")
|
80
80
|
end
|
81
|
-
|
81
|
+
|
82
82
|
it "filters multiple packages" do
|
83
83
|
bpm "list", "rake", "highline", "--remote"
|
84
|
-
|
84
|
+
|
85
85
|
output = stdout.read
|
86
86
|
output.should include("highline (1.6.1)")
|
87
87
|
output.should include("rake (0.8.7)")
|
88
88
|
output.should_not include("builder")
|
89
89
|
end
|
90
|
-
|
90
|
+
|
91
91
|
it "shows prerelease packages" do
|
92
92
|
bpm "list", "--prerelease", "--remote"
|
93
|
-
|
93
|
+
|
94
94
|
output = stdout.read
|
95
95
|
output.should include("bundler (1.1.pre)")
|
96
96
|
output.should_not include("highline")
|
97
97
|
output.should_not include("rake")
|
98
98
|
output.should_not include("builder")
|
99
99
|
end
|
100
|
-
|
100
|
+
|
101
101
|
it "says it couldn't find any if none found" do
|
102
102
|
bpm "list", "rails", "--remote", :track_stderr => true
|
103
|
-
|
103
|
+
|
104
104
|
stderr.read.strip.should == 'No packages found matching "rails".'
|
105
105
|
exit_status.should_not be_success
|
106
106
|
end
|
107
|
-
|
107
|
+
|
108
108
|
it "says it couldn't find any if none found matching multiple packages" do
|
109
109
|
bpm "list", "rails", "bake", "--remote", :track_stderr => true
|
110
|
-
|
110
|
+
|
111
111
|
stderr.read.strip.should == 'No packages found matching "rails", "bake".'
|
112
112
|
exit_status.should_not be_success
|
113
113
|
end
|
114
114
|
end
|
115
|
-
|
115
|
+
|
116
|
+
end
|
117
|
+
|
118
|
+
describe "bpm list with a package" do
|
119
|
+
before do
|
120
|
+
goto_home
|
121
|
+
set_host
|
122
|
+
start_fake(FakeGemServer.new)
|
123
|
+
FileUtils.cp_r(package_fixture('coffee-1.0.1.pre'), '.')
|
124
|
+
cd home('coffee-1.0.1.pre')
|
125
|
+
end
|
126
|
+
|
127
|
+
it "should list package dependencies" do
|
128
|
+
bpm 'list', '--package'
|
129
|
+
stdout.read.should include('jquery')
|
130
|
+
end
|
116
131
|
end
|
data/spec/cli/owner_spec.rb
CHANGED
@@ -106,9 +106,4 @@ describe "bpm owner with wrong arguments" do
|
|
106
106
|
stderr.read.should include("called incorrectly")
|
107
107
|
end
|
108
108
|
|
109
|
-
it "requires a package name for list with default command" do
|
110
|
-
bpm "owner", :track_stderr => true
|
111
|
-
|
112
|
-
stderr.read.should include("called incorrectly")
|
113
|
-
end
|
114
109
|
end
|
data/spec/cli/preview_spec.rb
CHANGED
@@ -8,3 +8,15 @@ describe "bpm preview" do
|
|
8
8
|
# i.e. spade:format
|
9
9
|
|
10
10
|
end
|
11
|
+
|
12
|
+
describe "bpm preview with a package" do
|
13
|
+
before do
|
14
|
+
goto_home
|
15
|
+
set_host
|
16
|
+
start_fake(FakeGemServer.new)
|
17
|
+
FileUtils.cp_r(package_fixture('spade'), '.')
|
18
|
+
cd home('spade')
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should preview package"
|
22
|
+
end
|
data/spec/cli/remove_spec.rb
CHANGED
@@ -2,31 +2,31 @@ require 'spec_helper'
|
|
2
2
|
require 'json'
|
3
3
|
|
4
4
|
describe 'bpm remove' do
|
5
|
-
|
5
|
+
|
6
6
|
before do
|
7
7
|
goto_home
|
8
8
|
set_host
|
9
9
|
start_fake(FakeGemServer.new)
|
10
10
|
FileUtils.cp_r(project_fixture('hello_world'), '.')
|
11
11
|
cd home('hello_world')
|
12
|
-
bpm 'fetch' # make sure existing packages are installed
|
12
|
+
bpm 'fetch' # make sure existing packages are installed
|
13
13
|
wait
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
it "should remove direct dependency from project" do
|
17
17
|
bpm 'remove', 'spade'
|
18
|
-
|
18
|
+
|
19
19
|
output = stdout.read
|
20
20
|
output.should include("Removed package 'spade'")
|
21
|
-
|
21
|
+
|
22
22
|
no_dependency 'spade'
|
23
23
|
has_dependency 'core-test', '0.4.9', '0.4.9' # did not remove other dep
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
it "should remove soft dependencies" do
|
27
27
|
bpm 'remove', 'core-test'
|
28
28
|
wait
|
29
|
-
|
29
|
+
|
30
30
|
output = stdout.read
|
31
31
|
%w(core-test:0.4.9 ivory:0.0.1 optparse:1.0.1).each do |line|
|
32
32
|
pkg_name, pkg_vers = line.split ':'
|
@@ -34,50 +34,70 @@ describe 'bpm remove' do
|
|
34
34
|
no_dependency pkg_name
|
35
35
|
end
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
it "should remove soft dependencies only when they are no longer needed" do
|
39
39
|
bpm 'add', 'ivory', '-v', '0.0.1', '--verbose' # make a hard dep
|
40
40
|
wait
|
41
|
-
|
41
|
+
|
42
42
|
bpm 'remove', 'core-test', '--verbose'
|
43
43
|
wait
|
44
|
-
|
44
|
+
|
45
45
|
output = stdout.read
|
46
46
|
%w(core-test:0.4.9 optparse:1.0.1).each do |line|
|
47
47
|
pkg_name, pkg_vers = line.split ':'
|
48
48
|
output.should include("Removed package '#{pkg_name}'")
|
49
49
|
no_dependency pkg_name
|
50
50
|
end
|
51
|
-
|
51
|
+
|
52
52
|
has_dependency 'ivory', '0.0.1', '0.0.1'
|
53
|
-
|
53
|
+
|
54
54
|
bpm 'remove', 'ivory'
|
55
55
|
wait
|
56
|
-
|
56
|
+
|
57
57
|
no_dependency 'ivory'
|
58
|
-
|
58
|
+
|
59
59
|
end
|
60
|
-
|
60
|
+
|
61
61
|
it "should do nothing when passed a non-existant dependency" do
|
62
62
|
bpm 'remove', 'fake', :track_stderr => true
|
63
63
|
wait
|
64
|
-
|
64
|
+
|
65
65
|
output = stderr.read
|
66
66
|
output.should include("'fake' is not a dependency")
|
67
67
|
end
|
68
|
-
|
68
|
+
|
69
69
|
it "should not uninstall local packages" do
|
70
70
|
bpm 'add', 'custom_package'
|
71
71
|
wait
|
72
72
|
has_dependency 'custom_package', '2.0.0'
|
73
|
-
|
73
|
+
|
74
74
|
bpm 'remove', 'custom_package'
|
75
75
|
output = stdout.read
|
76
|
-
|
76
|
+
|
77
77
|
no_dependency 'custom_package'
|
78
78
|
File.exists?(home('hello_world', 'vendor', 'custom_package', 'package.json')).should be_true
|
79
79
|
end
|
80
|
-
|
80
|
+
|
81
81
|
it "should remove development dependencies"
|
82
|
-
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
describe "bpm remove with a package" do
|
86
|
+
before do
|
87
|
+
goto_home
|
88
|
+
set_host
|
89
|
+
start_fake(FakeGemServer.new)
|
90
|
+
FileUtils.cp_r(package_fixture('coffee-1.0.1.pre'), '.')
|
91
|
+
cd home('coffee-1.0.1.pre')
|
92
|
+
|
93
|
+
bpm 'fetch', '--package'
|
94
|
+
wait
|
95
|
+
end
|
96
|
+
|
97
|
+
it "should remove dependency from package.json" do
|
98
|
+
File.read(home('coffee-1.0.1.pre', 'package.json')).should include('jquery')
|
99
|
+
bpm 'remove', 'jquery', '--package'
|
100
|
+
puts stdout.read
|
101
|
+
File.read(home('coffee-1.0.1.pre', 'package.json')).should_not include('jquery')
|
102
|
+
end
|
83
103
|
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "BPM::PackageProject class" do
|
4
|
+
it "should accept packages as project root" do
|
5
|
+
BPM::PackageProject.is_project_root?(fixtures('packages', 'backbone')).should be_true
|
6
|
+
BPM::PackageProject.is_project_root?(fixtures('projects', 'hello_world')).should be_false
|
7
|
+
BPM::PackageProject.is_project_root?(fixtures('packages', 'non_existent')).should be_false
|
8
|
+
end
|
9
|
+
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: 1.0.0.rc.
|
4
|
+
version: 1.0.0.rc.4
|
5
5
|
prerelease: 6
|
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-09-
|
13
|
+
date: 2011-09-21 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: libgems
|
17
|
-
requirement: &
|
17
|
+
requirement: &70200804575440 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 0.1.3
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *70200804575440
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: gemcutter
|
28
|
-
requirement: &
|
28
|
+
requirement: &70200804574640 !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: *70200804574640
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: highline
|
39
|
-
requirement: &
|
39
|
+
requirement: &70200804574020 !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: *70200804574020
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: json_pure
|
50
|
-
requirement: &
|
50
|
+
requirement: &70200804573300 !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: *70200804573300
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: thor
|
61
|
-
requirement: &
|
61
|
+
requirement: &70200804571720 !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: *70200804571720
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: execjs
|
72
|
-
requirement: &
|
72
|
+
requirement: &70200804568840 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ~>
|
@@ -77,10 +77,10 @@ dependencies:
|
|
77
77
|
version: 1.2.4
|
78
78
|
type: :runtime
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *70200804568840
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: sprockets
|
83
|
-
requirement: &
|
83
|
+
requirement: &70200804567780 !ruby/object:Gem::Requirement
|
84
84
|
none: false
|
85
85
|
requirements:
|
86
86
|
- - ~>
|
@@ -88,10 +88,10 @@ dependencies:
|
|
88
88
|
version: 2.0.0
|
89
89
|
type: :runtime
|
90
90
|
prerelease: false
|
91
|
-
version_requirements: *
|
91
|
+
version_requirements: *70200804567780
|
92
92
|
- !ruby/object:Gem::Dependency
|
93
93
|
name: eventmachine
|
94
|
-
requirement: &
|
94
|
+
requirement: &70200804566780 !ruby/object:Gem::Requirement
|
95
95
|
none: false
|
96
96
|
requirements:
|
97
97
|
- - ~>
|
@@ -99,10 +99,10 @@ dependencies:
|
|
99
99
|
version: 1.0.0.beta.4
|
100
100
|
type: :runtime
|
101
101
|
prerelease: false
|
102
|
-
version_requirements: *
|
102
|
+
version_requirements: *70200804566780
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: thin
|
105
|
-
requirement: &
|
105
|
+
requirement: &70200804565580 !ruby/object:Gem::Requirement
|
106
106
|
none: false
|
107
107
|
requirements:
|
108
108
|
- - ~>
|
@@ -110,10 +110,10 @@ dependencies:
|
|
110
110
|
version: '1.2'
|
111
111
|
type: :runtime
|
112
112
|
prerelease: false
|
113
|
-
version_requirements: *
|
113
|
+
version_requirements: *70200804565580
|
114
114
|
- !ruby/object:Gem::Dependency
|
115
115
|
name: rspec
|
116
|
-
requirement: &
|
116
|
+
requirement: &70200804564680 !ruby/object:Gem::Requirement
|
117
117
|
none: false
|
118
118
|
requirements:
|
119
119
|
- - ! '>='
|
@@ -121,10 +121,10 @@ dependencies:
|
|
121
121
|
version: '0'
|
122
122
|
type: :development
|
123
123
|
prerelease: false
|
124
|
-
version_requirements: *
|
124
|
+
version_requirements: *70200804564680
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: rack
|
127
|
-
requirement: &
|
127
|
+
requirement: &70200804563740 !ruby/object:Gem::Requirement
|
128
128
|
none: false
|
129
129
|
requirements:
|
130
130
|
- - ~>
|
@@ -132,7 +132,7 @@ dependencies:
|
|
132
132
|
version: 1.3.2
|
133
133
|
type: :development
|
134
134
|
prerelease: false
|
135
|
-
version_requirements: *
|
135
|
+
version_requirements: *70200804563740
|
136
136
|
description: Browser Package Manager
|
137
137
|
email:
|
138
138
|
- charles@sproutcore.com
|
@@ -167,6 +167,7 @@ files:
|
|
167
167
|
- lib/bpm/libgems_ext/spec_fetcher.rb
|
168
168
|
- lib/bpm/local.rb
|
169
169
|
- lib/bpm/package.rb
|
170
|
+
- lib/bpm/package_project.rb
|
170
171
|
- lib/bpm/pipeline.rb
|
171
172
|
- lib/bpm/pipeline/directive_processor.rb
|
172
173
|
- lib/bpm/pipeline/format_processor.rb
|
@@ -528,6 +529,7 @@ files:
|
|
528
529
|
- spec/fixtures/projects/transporter/vendor/transport/transports/wrapper.js
|
529
530
|
- spec/gauntlet_spec.rb
|
530
531
|
- spec/package_pipeline_spec.rb
|
532
|
+
- spec/package_project_spec.rb
|
531
533
|
- spec/package_spec.rb
|
532
534
|
- spec/pipeline_spec.rb
|
533
535
|
- spec/plugins/format_spec.rb
|
@@ -570,7 +572,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
570
572
|
version: 1.3.1
|
571
573
|
requirements: []
|
572
574
|
rubyforge_project:
|
573
|
-
rubygems_version: 1.8.
|
575
|
+
rubygems_version: 1.8.10
|
574
576
|
signing_key:
|
575
577
|
specification_version: 3
|
576
578
|
summary: Browser Package Manager
|
@@ -902,6 +904,7 @@ test_files:
|
|
902
904
|
- spec/fixtures/projects/transporter/vendor/transport/transports/wrapper.js
|
903
905
|
- spec/gauntlet_spec.rb
|
904
906
|
- spec/package_pipeline_spec.rb
|
907
|
+
- spec/package_project_spec.rb
|
905
908
|
- spec/package_spec.rb
|
906
909
|
- spec/pipeline_spec.rb
|
907
910
|
- spec/plugins/format_spec.rb
|