bpm 1.0.0.rc.3 → 1.0.0.rc.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|