bpm 0.1.4 → 1.0.0.beta.4
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +20 -0
- data/README.md +1 -1
- data/TODO.md +90 -2
- data/bpm.gemspec +3 -3
- data/lib/bpm/cli/base.rb +103 -52
- data/lib/bpm/errors.rb +51 -0
- data/lib/bpm/init_generator.rb +1 -8
- data/lib/bpm/libgems_ext/libgems.rb +9 -0
- data/lib/bpm/local.rb +6 -11
- data/lib/bpm/package.rb +272 -178
- data/lib/bpm/pipeline/generated_asset.rb +88 -28
- data/lib/bpm/pipeline/plugin_asset.rb +8 -2
- data/lib/bpm/pipeline/source_url_processor.rb +16 -0
- data/lib/bpm/pipeline/transport_processor.rb +5 -3
- data/lib/bpm/pipeline.rb +33 -23
- data/lib/bpm/project.rb +492 -167
- data/lib/bpm/project_generator.rb +14 -1
- data/lib/bpm/remote.rb +6 -4
- data/lib/bpm/server.rb +4 -15
- data/lib/bpm/version.rb +2 -1
- data/lib/bpm.rb +2 -0
- data/man/bpm-add.1.ronn +22 -0
- data/man/bpm-build.1.ronn +22 -0
- data/man/bpm-compile.1.ronn +23 -0
- data/man/bpm-config.7.ronn +21 -0
- data/man/bpm-fetch.1.ronn +22 -0
- data/man/bpm-fetched.1.ronn +22 -0
- data/man/bpm-init.1.ronn +22 -0
- data/man/bpm-list.1.ronn +22 -0
- data/man/bpm-login.1.ronn +22 -0
- data/man/bpm-new.1.ronn +22 -0
- data/man/bpm-owner.1.ronn +22 -0
- data/man/bpm-preview.1.ronn +22 -0
- data/man/bpm-push.1.ronn +22 -0
- data/man/bpm-remove.1.ronn +22 -0
- data/man/bpm-unpack.1.ronn +22 -0
- data/man/bpm-yank.1.ronn +22 -0
- data/man/bpm.1.ronn +31 -0
- data/spec/cli/add_spec.rb +26 -7
- data/spec/cli/fetch_spec.rb +15 -6
- data/spec/cli/init_spec.rb +165 -25
- data/spec/cli/{build_spec.rb → pack_spec.rb} +9 -10
- data/spec/cli/push_spec.rb +4 -4
- data/spec/cli/rebuild_spec.rb +181 -0
- data/spec/cli/remove_spec.rb +3 -4
- data/spec/cli/unpack_spec.rb +6 -6
- data/spec/fixtures/gems/core-test-0.4.9.bpkg +0 -0
- data/spec/fixtures/{core-test-0.4.9.bpkg → gems/uglify-js-1.0.4.bpkg} +0 -0
- data/spec/fixtures/packages/core-test/extras/extra_file.html +3 -0
- data/spec/fixtures/packages/core-test/index.html +3 -0
- data/spec/fixtures/{core-test → packages/core-test}/package.json +9 -3
- data/spec/fixtures/packages/invalid_json/package.json +3 -0
- data/spec/fixtures/packages/uglify-js/README.html +825 -0
- data/spec/fixtures/packages/uglify-js/README.org +431 -0
- data/spec/fixtures/packages/uglify-js/bin/uglifyjs +305 -0
- data/spec/fixtures/packages/uglify-js/docstyle.css +75 -0
- data/spec/fixtures/packages/uglify-js/lib/parse-js.js +1 -0
- data/spec/fixtures/packages/uglify-js/lib/process.js +1 -0
- data/spec/fixtures/packages/uglify-js/lib/squeeze-more.js +1 -0
- data/spec/fixtures/packages/uglify-js/package.json +27 -0
- data/spec/fixtures/packages/uglify-js/plugins/minifier.js +6 -0
- data/spec/fixtures/packages/uglify-js/uglify-js.js +17 -0
- data/spec/fixtures/projects/hello2/README.md +21 -0
- data/{templates/init → spec/fixtures/projects/hello2}/assets/bpm_packages.js +6 -1
- data/{templates/init → spec/fixtures/projects/hello2}/assets/bpm_styles.css +1 -1
- data/spec/fixtures/projects/hello2/hello2.json +16 -0
- data/spec/fixtures/projects/hello2/index.html +13 -0
- data/spec/fixtures/projects/hello2/packages/a/lib/main.js +2 -0
- data/spec/fixtures/projects/hello2/packages/a/package.json +17 -0
- data/spec/fixtures/projects/hello2/packages/b/lib/main.js +2 -0
- data/spec/fixtures/projects/hello2/packages/b/package.json +17 -0
- data/spec/fixtures/projects/hello2/packages/c/lib/main.js +2 -0
- data/spec/fixtures/projects/hello2/packages/c/package.json +16 -0
- data/spec/fixtures/projects/hello_dev/LICENSE +19 -0
- data/spec/fixtures/projects/hello_dev/README.md +21 -0
- data/spec/fixtures/projects/hello_dev/app/main.js +6 -0
- data/spec/fixtures/projects/hello_dev/assets/bpm_libs.js +5 -0
- data/spec/fixtures/projects/hello_dev/assets/bpm_styles.css +6 -0
- data/spec/fixtures/projects/hello_dev/css/main.css +1 -0
- data/spec/fixtures/projects/hello_dev/hello_dev.json +25 -0
- data/spec/fixtures/projects/hello_dev/index.html +14 -0
- data/spec/fixtures/projects/hello_dev/packages/style_package/css/some_style.css +3 -0
- data/spec/fixtures/{minitest/minitest.json → projects/hello_dev/packages/style_package/package.json} +5 -9
- data/spec/fixtures/projects/hello_world/LICENSE +19 -0
- data/spec/fixtures/projects/hello_world/assets/bpm_packages.js +1 -0
- data/spec/fixtures/projects/hello_world/assets/bpm_styles.css +1 -0
- data/spec/fixtures/projects/hello_world/custom_dir/custom.js +1 -0
- data/spec/fixtures/projects/hello_world/hello_world.json +41 -0
- data/spec/fixtures/projects/hello_world/lib/another.js +1 -0
- data/spec/fixtures/{hello_world → projects/hello_world}/packages/custom_package/package.json +5 -2
- data/spec/fixtures/projects/hello_world/vendor/lib/something.js +1 -0
- data/spec/fixtures/projects/init_app/assets/bpm_libs.js +6 -0
- data/spec/fixtures/projects/init_app/assets/bpm_styles.css +5 -0
- data/spec/fixtures/projects/init_app/assets/new_project/bpm_libs.js +6 -0
- data/spec/fixtures/projects/init_app/assets/new_project/bpm_styles.css +5 -0
- data/spec/fixtures/projects/init_app/new_project.json +27 -0
- data/spec/fixtures/projects/init_default/assets/bpm_libs.js +6 -0
- data/spec/fixtures/projects/init_default/assets/bpm_styles.css +5 -0
- data/spec/fixtures/projects/init_default/new_project.json +15 -0
- data/spec/fixtures/projects/minitest/minitest.json +26 -0
- data/spec/fixtures/{minitest → projects/minitest}/packages/uglyduck/package.json +1 -1
- data/spec/fixtures/projects/needs_rake/needs_rake.json +7 -0
- data/spec/fixtures/{transporter → projects/transporter}/packages/transport/package.json +1 -1
- data/spec/package_spec.rb +343 -315
- data/spec/pipeline_spec.rb +89 -71
- data/spec/plugins/minifier_spec.rb +25 -16
- data/spec/plugins/transport_spec.rb +1 -1
- data/spec/project_spec.rb +97 -34
- data/spec/spec_helper.rb +41 -0
- data/spec/support/fake_gem_server.rb +8 -4
- data/spec/support/path.rb +8 -0
- data/spec/support/project.rb +50 -17
- data/templates/init/project.json +12 -14
- data/templates/project/LICENSE +1 -1
- data/templates/project/app/main.js +6 -0
- data/templates/project/css/main.css +1 -0
- data/templates/project/index.html +4 -3
- data/vendor/sprockets/.travis.yml +3 -2
- data/vendor/sprockets/Gemfile +0 -6
- data/vendor/sprockets/lib/sprockets/asset.rb +7 -12
- data/vendor/sprockets/lib/sprockets/asset_attributes.rb +70 -53
- data/vendor/sprockets/lib/sprockets/base.rb +1 -14
- data/vendor/sprockets/lib/sprockets/bundled_asset.rb +72 -45
- data/vendor/sprockets/lib/sprockets/caching.rb +28 -23
- data/vendor/sprockets/lib/sprockets/context.rb +56 -26
- data/vendor/sprockets/lib/sprockets/directive_processor.rb +21 -4
- data/vendor/sprockets/lib/sprockets/eco_template.rb +3 -4
- data/vendor/sprockets/lib/sprockets/ejs_template.rb +3 -4
- data/vendor/sprockets/lib/sprockets/engines.rb +26 -1
- data/vendor/sprockets/lib/sprockets/environment.rb +2 -1
- data/vendor/sprockets/lib/sprockets/index.rb +1 -0
- data/vendor/sprockets/lib/sprockets/mime.rb +38 -0
- data/vendor/sprockets/lib/sprockets/processing.rb +4 -45
- data/vendor/sprockets/lib/sprockets/static_asset.rb +5 -6
- data/vendor/sprockets/lib/sprockets/static_compilation.rb +4 -12
- data/vendor/sprockets/lib/sprockets/trail.rb +2 -1
- data/vendor/sprockets/test/fixtures/default/blank.gif +0 -0
- data/vendor/sprockets/test/fixtures/default/with_data_uri.css.erb +3 -0
- data/vendor/sprockets/test/test_asset.rb +121 -15
- data/vendor/sprockets/test/test_asset_attributes.rb +85 -21
- data/vendor/sprockets/test/test_environment.rb +13 -36
- metadata +564 -444
- data/spec/cli/new_spec.rb +0 -118
- data/spec/fixtures/hello_world/assets/bpm_packages.js +0 -13
- data/spec/fixtures/hello_world/assets/bpm_styles.css +0 -14
- data/spec/fixtures/hello_world/hello_world.json +0 -20
- /data/spec/fixtures/{badrake-0.8.7.bpkg → gems/badrake-0.8.7.bpkg} +0 -0
- /data/spec/fixtures/{builder-3.0.0.bpkg → gems/builder-3.0.0.bpkg} +0 -0
- /data/spec/fixtures/{bundler-1.1.pre.bpkg → gems/bundler-1.1.pre.bpkg} +0 -0
- /data/spec/fixtures/{coffee-1.0.1.pre.bpkg → gems/coffee-1.0.1.pre.bpkg} +0 -0
- /data/spec/fixtures/{custom_generator-1.0.bpkg → gems/custom_generator-1.0.bpkg} +0 -0
- /data/spec/fixtures/{highline-1.6.1.bpkg → gems/highline-1.6.1.bpkg} +0 -0
- /data/spec/fixtures/{ivory-0.0.1.bpkg → gems/ivory-0.0.1.bpkg} +0 -0
- /data/spec/fixtures/{jquery-1.4.3.bpkg → gems/jquery-1.4.3.bpkg} +0 -0
- /data/spec/fixtures/{optparse-1.0.1.bpkg → gems/optparse-1.0.1.bpkg} +0 -0
- /data/spec/fixtures/{rake-0.8.6.bpkg → gems/rake-0.8.6.bpkg} +0 -0
- /data/spec/fixtures/{rake-0.8.7.bpkg → gems/rake-0.8.7.bpkg} +0 -0
- /data/spec/fixtures/{spade-0.5.0.bpkg → gems/spade-0.5.0.bpkg} +0 -0
- /data/spec/fixtures/{src → packages}/README.txt +0 -0
- /data/spec/fixtures/{src → packages}/bundler-1.1.pre/.gitignore +0 -0
- /data/spec/fixtures/{src → packages}/bundler-1.1.pre/CHANGELOG.md +0 -0
- /data/spec/fixtures/{src → packages}/bundler-1.1.pre/ISSUES.md +0 -0
- /data/spec/fixtures/{src → packages}/bundler-1.1.pre/LICENSE +0 -0
- /data/spec/fixtures/{src → packages}/bundler-1.1.pre/README.md +0 -0
- /data/spec/fixtures/{src → packages}/bundler-1.1.pre/UPGRADING.md +0 -0
- /data/spec/fixtures/{src → packages}/bundler-1.1.pre/bin/bundle +0 -0
- /data/spec/fixtures/{src → packages}/bundler-1.1.pre/lib/bundler/definition.js +0 -0
- /data/spec/fixtures/{src → packages}/bundler-1.1.pre/lib/bundler/dependency.js +0 -0
- /data/spec/fixtures/{src → packages}/bundler-1.1.pre/lib/bundler/dsl.js +0 -0
- /data/spec/fixtures/{src → packages}/bundler-1.1.pre/lib/bundler/ui.js +0 -0
- /data/spec/fixtures/{src → packages}/bundler-1.1.pre/lib/bundler.js +0 -0
- /data/spec/fixtures/{src → packages}/bundler-1.1.pre/man/bundle-config.ronn +0 -0
- /data/spec/fixtures/{src → packages}/bundler-1.1.pre/man/bundle-exec.ronn +0 -0
- /data/spec/fixtures/{src → packages}/bundler-1.1.pre/man/bundle-install.ronn +0 -0
- /data/spec/fixtures/{src → packages}/bundler-1.1.pre/man/bundle-package.ronn +0 -0
- /data/spec/fixtures/{src → packages}/bundler-1.1.pre/man/bundle-update.ronn +0 -0
- /data/spec/fixtures/{src → packages}/bundler-1.1.pre/man/bundle.ronn +0 -0
- /data/spec/fixtures/{src → packages}/bundler-1.1.pre/man/gemfile.5.ronn +0 -0
- /data/spec/fixtures/{src → packages}/bundler-1.1.pre/man/index.txt +0 -0
- /data/spec/fixtures/{src → packages}/bundler-1.1.pre/package.json +0 -0
- /data/spec/fixtures/{src → packages}/coffee-1.0.1.pre/bin/cake +0 -0
- /data/spec/fixtures/{src → packages}/coffee-1.0.1.pre/bin/coffee +0 -0
- /data/spec/fixtures/{src → packages}/coffee-1.0.1.pre/lib/coffee/base.js +0 -0
- /data/spec/fixtures/{src → packages}/coffee-1.0.1.pre/lib/coffee/mocha/chai.js +0 -0
- /data/spec/fixtures/{src → packages}/coffee-1.0.1.pre/lib/coffee.js +0 -0
- /data/spec/fixtures/{src → packages}/coffee-1.0.1.pre/package.json +0 -0
- /data/spec/fixtures/{src → packages}/coffee-1.0.1.pre/qunit/coffee/test.js +0 -0
- /data/spec/fixtures/{src → packages}/coffee-1.0.1.pre/qunit/test.js +0 -0
- /data/spec/fixtures/{core-test → packages/core-test}/bin/cot +0 -0
- /data/spec/fixtures/{core-test → packages/core-test}/lib/main.js +0 -0
- /data/spec/fixtures/{core-test → packages/core-test}/resources/runner.css +0 -0
- /data/spec/fixtures/{core-test → packages/core-test}/tests/test.js +0 -0
- /data/spec/fixtures/{custom_generator → packages/custom_generator}/lib/main.js +0 -0
- /data/spec/fixtures/{custom_generator → packages/custom_generator}/package.json +0 -0
- /data/spec/fixtures/{custom_generator → packages/custom_generator}/templates/init/project.json +0 -0
- /data/spec/fixtures/{custom_generator → packages/custom_generator}/templates/project/app.js +0 -0
- /data/spec/fixtures/{custom_generator → packages/custom_generator}/templates/project/lib/main.js +0 -0
- /data/spec/fixtures/{custom_generator → packages/custom_generator}/templates/project_generator.rb +0 -0
- /data/spec/fixtures/{src → packages}/jquery/lib/main.js +0 -0
- /data/spec/fixtures/{src → packages}/jquery/package.json +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/CHANGES +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/MIT-LICENSE +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/README +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/Rakefile +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/TODO +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/bin/rake +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/command_line_usage.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/example/Rakefile1 +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/example/Rakefile2 +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/example/a.c +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/example/b.c +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/example/main.c +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/glossary.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/jamis.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/proto_rake.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/rake.1.gz +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/rakefile.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/rational.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.4.14.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.4.15.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.5.0.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.5.3.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.5.4.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.6.0.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.7.0.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.7.1.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.7.2.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.7.3.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.8.0.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.8.2.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.8.3.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.8.4.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.8.5.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.8.6.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/install.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/alt_system.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/classic_namespace.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/clean.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/contrib/compositepublisher.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/contrib/ftptools.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/contrib/publisher.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/contrib/rubyforgepublisher.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/contrib/sshpublisher.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/contrib/sys.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/gempackagetask.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/loaders/makefile.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/packagetask.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/rake_test_loader.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/rdoctask.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/ruby182_test_unit_fix.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/runtest.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/tasklib.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/testtask.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/win32.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/package.json +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.6/test/capture_stdout.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/CHANGES +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/MIT-LICENSE +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/README +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/Rakefile +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/TODO +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/bin/rake +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/command_line_usage.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/example/Rakefile1 +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/example/Rakefile2 +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/example/a.c +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/example/b.c +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/example/main.c +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/glossary.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/jamis.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/proto_rake.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/rake.1.gz +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/rakefile.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/rational.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.4.14.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.4.15.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.5.0.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.5.3.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.5.4.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.6.0.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.7.0.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.7.1.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.7.2.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.7.3.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.8.0.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.8.2.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.8.3.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.8.4.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.8.5.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.8.6.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.8.7.rdoc +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/install.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/alt_system.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/classic_namespace.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/clean.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/contrib/compositepublisher.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/contrib/ftptools.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/contrib/publisher.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/contrib/rubyforgepublisher.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/contrib/sshpublisher.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/contrib/sys.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/gempackagetask.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/loaders/makefile.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/packagetask.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/rake_test_loader.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/rdoctask.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/ruby182_test_unit_fix.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/runtest.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/tasklib.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/testtask.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/win32.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake.rb +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/package.json +0 -0
- /data/spec/fixtures/{src → packages}/rake-0.8.7/test/capture_stdout.rb +0 -0
- /data/spec/fixtures/{src → packages}/spade/lib/main.js +0 -0
- /data/spec/fixtures/{src → packages}/spade/package.json +0 -0
- /data/spec/fixtures/{custom_name → projects/custom_name}/MyProject.json +0 -0
- /data/spec/fixtures/{hello_world → projects/hello2}/LICENSE +0 -0
- /data/{templates/project → spec/fixtures/projects/hello2}/app.js +0 -0
- /data/spec/fixtures/{hello_world → projects/hello_world}/README.md +0 -0
- /data/spec/fixtures/{hello_world → projects/hello_world}/assets/papa-smurf.jpg +0 -0
- /data/spec/fixtures/{hello_world → projects/hello_world}/css/dummy.css +0 -0
- /data/spec/fixtures/{hello_world → projects/hello_world}/lib/main.js +0 -0
- /data/spec/fixtures/{hello_world → projects/hello_world}/packages/custom_package/assets/dummy.txt +0 -0
- /data/spec/fixtures/{hello_world → projects/hello_world}/packages/custom_package/css/sample_styles.css +0 -0
- /data/spec/fixtures/{hello_world → projects/hello_world}/packages/custom_package/custom_dir/basic-module.js +0 -0
- /data/spec/fixtures/{hello_world → projects/hello_world}/packages/custom_package/lib/main.js +0 -0
- /data/spec/fixtures/{hello_world → projects/hello_world}/tests/main-test.js +0 -0
- /data/spec/fixtures/{minitest → projects/minitest}/assets/bpm_packages.js +0 -0
- /data/spec/fixtures/{minitest → projects/minitest}/assets/bpm_styles.css +0 -0
- /data/spec/fixtures/{minitest → projects/minitest}/assets/minitest/app_package.js +0 -0
- /data/spec/fixtures/{minitest → projects/minitest}/lib/main.js +0 -0
- /data/spec/fixtures/{minitest → projects/minitest}/packages/uglyduck/lib/main.js +0 -0
- /data/spec/fixtures/{minitest → projects/minitest}/packages/uglyduck/minifier/main.js +0 -0
- /data/spec/fixtures/{simple_hello/assets/bpm_packages.js → projects/simple_hello/assets/bpm_libs.js} +0 -0
- /data/spec/fixtures/{simple_hello → projects/simple_hello}/lib/main.js +0 -0
- /data/spec/fixtures/{transporter → projects/transporter}/lib/main.js +0 -0
- /data/spec/fixtures/{transporter → projects/transporter}/packages/transport/lib/main.js +0 -0
- /data/spec/fixtures/{transporter → projects/transporter}/packages/transport/transports/wrapper.js +0 -0
- /data/spec/fixtures/{transporter → projects/transporter}/transporter.json +0 -0
data/CHANGELOG.md
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
|
2
|
+
* Fixed issue with compile that would cause exceptions if you deleted the
|
3
|
+
global .bpm directory
|
4
|
+
* BPM now complains if you load a package whose directory name does not
|
5
|
+
match the name in the package.json (this was causing exceptions in some
|
6
|
+
cases)
|
7
|
+
* BPM is more whiny now when it tries to load a package with invalid or
|
8
|
+
missing package.json.
|
9
|
+
* the version stored in the `bpm` key on new projects is a compatible
|
10
|
+
version instead of the actual version. Right now this means it is frozen
|
11
|
+
at 1.0.0
|
12
|
+
* merge `bpm new` into `bpm init`. now this works like git. If you
|
13
|
+
`bpm init` on an existing directory, bpm will try to update it. If you
|
14
|
+
`bpm init` and pass a new path, bpm will create it.
|
15
|
+
* now showing version of bpm in bpm help
|
16
|
+
|
17
|
+
# 1.0.0.beta.3.pre
|
18
|
+
|
19
|
+
* started changelog
|
20
|
+
|
data/README.md
CHANGED
@@ -28,7 +28,7 @@ Then add jquery as a dependency:
|
|
28
28
|
|
29
29
|
bpm add jquery
|
30
30
|
|
31
|
-
This will create a file called `assets/
|
31
|
+
This will create a file called `assets/bpm_libs` which will include
|
32
32
|
jquery. You can then create an index.html and reference that js. Everytime
|
33
33
|
you add a dependency, it will be based into this JS file .
|
34
34
|
|
data/TODO.md
CHANGED
@@ -1,4 +1,92 @@
|
|
1
1
|
|
2
|
-
*
|
2
|
+
* you should be able to place other projects into a vendor directory and
|
3
|
+
have their packages appear.
|
3
4
|
|
4
|
-
*
|
5
|
+
* Multiple format support. Format processors supplied by dependencies should
|
6
|
+
be used to resolve formats.
|
7
|
+
|
8
|
+
* minify then transport -> this will allow for string loading.
|
9
|
+
|
10
|
+
* HTML manifest support [in general we need a way for packages to generate new assets]
|
11
|
+
|
12
|
+
* cache-friendly URLs
|
13
|
+
|
14
|
+
* HTML files should be able to process as templates using a template plugin
|
15
|
+
|
16
|
+
* Should log clearly when fetching from remotes
|
17
|
+
|
18
|
+
* Can we use YAML instead of JSON?
|
19
|
+
|
20
|
+
* Changing a dependency in a package.json should rebuild all files in preview mode (in case the transport was modified)
|
21
|
+
|
22
|
+
* Need to run bpm update before bpm preview for the first time
|
23
|
+
|
24
|
+
* "directories" should be optional in package.json - we can infer it.
|
25
|
+
|
26
|
+
----------------
|
27
|
+
|
28
|
+
# SCENARIOS
|
29
|
+
|
30
|
+
## New user with existing app using bpm to manage dependencies
|
31
|
+
|
32
|
+
bpm init . # creates bpm.json, assets/bpm_libs.js etc.
|
33
|
+
|
34
|
+
bpm add sproutcore # updates json & packages with sproutcore
|
35
|
+
> Fetching sproutcore...
|
36
|
+
> Building bpm_libs.js
|
37
|
+
> New library size ~24Kb
|
38
|
+
|
39
|
+
# now just load assets/bpm_libs.js to get it all
|
40
|
+
|
41
|
+
bpm remove sproutcore # updates json & packages to remove...
|
42
|
+
...
|
43
|
+
|
44
|
+
## User migrates to use bpm to manage their app as well
|
45
|
+
|
46
|
+
bpm init --app # enables app management, creates app dir for JS
|
47
|
+
|
48
|
+
# now just make your index.html load assets/app_name/app_package.js
|
49
|
+
|
50
|
+
bpm preview # returns auto-compiled resources while working.
|
51
|
+
# also we could publish a rails plugin that bakes in to
|
52
|
+
# rails app
|
53
|
+
|
54
|
+
bpm compile # generates a built app when you are ready to go to prod
|
55
|
+
# maybe should build the entire thing into a different
|
56
|
+
# loc?
|
57
|
+
|
58
|
+
bpm update # invoke if you modify the bpm.json to update settings
|
59
|
+
|
60
|
+
## User working with unit tests in their app
|
61
|
+
|
62
|
+
# to enable unit testing add a unit testing framework as a dev dependency
|
63
|
+
bpm add qunit --dev
|
64
|
+
|
65
|
+
# you can also use the generator to introduce a unit test
|
66
|
+
bpm gen qunit test foo_test # creates tests/foo_test.js
|
67
|
+
|
68
|
+
# next time you update it will add a assets/app_name/bpm_tests.js file
|
69
|
+
# this isn't really necessary though because bpm preview runs this.
|
70
|
+
bpm update --no-fetch
|
71
|
+
|
72
|
+
# start the preview app and then navigate to the qunit
|
73
|
+
bpm preview
|
74
|
+
|
75
|
+
# then to run the unit tests - load the qunit viewer...
|
76
|
+
visit: http://localhost:4020/assets/qunit
|
77
|
+
|
78
|
+
## Developer hacking on a package they intend to redistribute
|
79
|
+
|
80
|
+
This works the same way whether you intend to redistribute or not; just put
|
81
|
+
it inside of a project and name your development dependencies there. Workflow
|
82
|
+
is the same as unit testing an app except that the tests should be in the
|
83
|
+
package and the tests will be built into `assets/package_name/bpm_tests.js`
|
84
|
+
|
85
|
+
## Including a developer package inside of another project
|
86
|
+
|
87
|
+
All packages must be developed inside of a project - this means that a package
|
88
|
+
you intend to distribute via bpm must itself be developed inside of a project.
|
89
|
+
|
90
|
+
If you just want to include a developer package just add the project to your
|
91
|
+
'vendor' directory.
|
92
|
+
|
data/bpm.gemspec
CHANGED
@@ -10,13 +10,13 @@ Gem::Specification.new do |s|
|
|
10
10
|
s.platform = Gem::Platform::RUBY
|
11
11
|
s.authors = ["Charles Jolley", "Peter Wagenet"]
|
12
12
|
s.email = ["charles@sproutcore.com", "peterw@strobecorp.com"]
|
13
|
-
s.homepage = "http://github.com/
|
14
|
-
s.summary = s.description = "Package Manager
|
13
|
+
s.homepage = "http://github.com/getbpm/bpm"
|
14
|
+
s.summary = s.description = "Browser Package Manager"
|
15
15
|
|
16
16
|
mswin = RbConfig::CONFIG["host_os"] =~ %r!(msdos|mswin|djgpp|mingw)!
|
17
17
|
mri = !mswin && (!defined?(RUBY_ENGINE) || RUBY_ENGINE == "ruby")
|
18
18
|
|
19
|
-
s.add_dependency "libgems", "~> 0.0.
|
19
|
+
s.add_dependency "libgems", "~> 0.0.5"
|
20
20
|
s.add_dependency "gemcutter", "~> 0.6.1"
|
21
21
|
s.add_dependency "highline", "~> 1.6.1"
|
22
22
|
s.add_dependency "json_pure", "~> 1.4.6"
|
data/lib/bpm/cli/base.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
require 'thor'
|
2
|
+
require 'json'
|
3
|
+
require 'bpm/version'
|
2
4
|
|
3
5
|
module BPM
|
4
6
|
module CLI
|
@@ -10,6 +12,11 @@ module BPM
|
|
10
12
|
:aliases => ['-V'],
|
11
13
|
:desc => 'Show additional debug information while running'
|
12
14
|
|
15
|
+
def self.help(shell, subcommand = false)
|
16
|
+
shell.say "\nbpm (v#{BPM::VERSION}) - the browser package manager\n\n"
|
17
|
+
super shell, subcommand
|
18
|
+
end
|
19
|
+
|
13
20
|
desc "owner", "Manage users for a package"
|
14
21
|
subcommand "owner", BPM::CLI::Owner
|
15
22
|
|
@@ -47,17 +54,19 @@ module BPM
|
|
47
54
|
end
|
48
55
|
|
49
56
|
|
50
|
-
desc "fetched [PACKAGE]", "
|
57
|
+
desc "fetched [PACKAGE]", "Display locally fetched bpm packages"
|
51
58
|
def fetched(*packages)
|
52
59
|
local = BPM::Local.new
|
53
60
|
index = local.installed(packages)
|
54
61
|
print_specs(packages, index)
|
55
62
|
end
|
56
63
|
|
57
|
-
desc "add [PACKAGE]", "Add
|
64
|
+
desc "add [PACKAGE]", "Add one or more packages to a bpm project"
|
58
65
|
method_option :version, :type => :string, :default => nil, :aliases => ['-v'], :desc => 'Specify a version to install'
|
59
66
|
method_option :project, :type => :string, :default => nil, :aliases => ['-p'], :desc => 'Specify project location other than working directory'
|
60
67
|
method_option :prerelease, :type => :boolean, :default => false, :aliases => ['--pre'], :desc => 'Install a prerelease version'
|
68
|
+
method_option :development, :type => :boolean, :default => false, :aliases => ['--dev'], :desc => "Add as a development dependency"
|
69
|
+
method_option :mode, :type => :string, :default => :production, :aliases => ['-m'], :desc => "Build mode for compile (default production)"
|
61
70
|
def add(*package_names)
|
62
71
|
# map to dependencies
|
63
72
|
if package_names.empty?
|
@@ -81,13 +90,17 @@ module BPM
|
|
81
90
|
# find project
|
82
91
|
project = find_project
|
83
92
|
|
84
|
-
|
85
|
-
|
86
|
-
|
93
|
+
begin
|
94
|
+
project.add_dependencies deps, options[:development], true
|
95
|
+
project.build options[:mode], true
|
96
|
+
rescue BPM::Error => e
|
97
|
+
abort e.message
|
98
|
+
end
|
87
99
|
end
|
88
100
|
|
89
|
-
desc "remove [PACKAGE]", "Remove
|
101
|
+
desc "remove [PACKAGE]", "Remove one or more packages from a bpm project"
|
90
102
|
method_option :project, :type => :string, :default => nil, :aliases => ['-p'], :desc => 'Specify project location other than working directory'
|
103
|
+
method_option :mode, :type => :string, :default => :production, :aliases => ['-m'], :desc => "Build mode for compile (default production)"
|
91
104
|
def remove(*package_names)
|
92
105
|
|
93
106
|
# map to dependencies
|
@@ -99,37 +112,31 @@ module BPM
|
|
99
112
|
project = find_project
|
100
113
|
project.unbuild options[:verbose]
|
101
114
|
project.remove_dependencies package_names, true
|
102
|
-
project.build :
|
103
|
-
|
104
|
-
rescue Exception => e
|
115
|
+
project.build options[:mode], true
|
116
|
+
rescue BPM::Error => e
|
105
117
|
abort e.message
|
106
118
|
end
|
107
119
|
end
|
108
120
|
|
109
|
-
desc "
|
110
|
-
method_option :mode, :type => :string, :default => :debug, :aliases => ['-m'], :desc => '
|
121
|
+
desc "preview", "Preview server that will autocompile assets as you request them. Useful for hacking"
|
122
|
+
method_option :mode, :type => :string, :default => :debug, :aliases => ['-m'], :desc => 'Build mode for compile (default debug)'
|
111
123
|
method_option :project, :type => :string, :default => nil, :aliases => ['-p'], :desc => 'Specify project location other than working directory'
|
112
124
|
method_option :port, :type => :string, :default => '4020', :desc => "Port to host server on"
|
113
|
-
def
|
114
|
-
|
125
|
+
def preview
|
115
126
|
project = find_project
|
116
|
-
|
117
|
-
BPM::Server.start project, :Port => options[:port]
|
118
|
-
|
127
|
+
project.verify_and_repair options[:mode], options[:verbose]
|
128
|
+
BPM::Server.start project, :Port => options[:port], :mode => options[:mode].to_sym
|
119
129
|
end
|
120
130
|
|
121
|
-
desc "
|
122
|
-
method_option :mode, :type => :string, :default => :
|
131
|
+
desc "rebuild", "Rebuilds bpm assets, does not update versions"
|
132
|
+
method_option :mode, :type => :string, :default => :production, :aliases => ['-m'], :desc => 'Build mode for compile (default production)'
|
123
133
|
method_option :project, :type => :string, :default => nil, :aliases => ['-p'], :desc => 'Specify project location other than working directory'
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
rescue Exception => e
|
131
|
-
abort e.message
|
132
|
-
end
|
134
|
+
method_option :update, :type => :boolean, :default => false, :aliases => ['-u'], :desc => 'Updates dependencies to latest compatible version'
|
135
|
+
def rebuild
|
136
|
+
find_project.fetch_dependencies(true) if options[:update]
|
137
|
+
find_project.build options[:mode].to_sym, true
|
138
|
+
rescue BPM::Error => e
|
139
|
+
abort e.message
|
133
140
|
end
|
134
141
|
|
135
142
|
desc "login", "Log in with your BPM credentials"
|
@@ -208,23 +215,11 @@ module BPM
|
|
208
215
|
print_specs(packages, index)
|
209
216
|
end
|
210
217
|
|
211
|
-
desc "new [NAME]", "Generate a new project skeleton"
|
212
|
-
method_option :path, :type => :string, :default => nil, :desc => 'Specify a different name for the project'
|
213
|
-
method_option :package, :type => :string, :default => nil, :desc => 'Specify a package template to build from'
|
214
|
-
def new(name)
|
215
|
-
package = install_package(options[:package])
|
216
|
-
template_path = package ? package.template_path(:project) : nil
|
217
|
-
|
218
|
-
path = File.expand_path(options[:path] || underscore(name))
|
219
|
-
generator = get_generator(:project, package)
|
220
|
-
success = generator.new(self, name, path, template_path, package).run
|
221
|
-
|
222
|
-
run_init(name, path, package) if success
|
223
|
-
end
|
224
|
-
|
225
218
|
desc "init [PATHS]", "Configure a project to use bpm for management"
|
226
219
|
method_option :name, :type => :string, :default => nil, :desc => 'Specify a different name for the project'
|
227
220
|
method_option :skip, :type => :boolean, :default => false, :desc => 'Skip any conflicting files'
|
221
|
+
method_option :app, :type => :boolean, :default => false, :desc => 'Manage app as well as packages'
|
222
|
+
method_option :package, :type => :string, :default => nil, :desc => 'Specify a package template to build from'
|
228
223
|
def init(*paths)
|
229
224
|
paths = [Dir.pwd] if paths.empty?
|
230
225
|
paths.map!{|p| File.expand_path(p) }
|
@@ -234,19 +229,40 @@ module BPM
|
|
234
229
|
end
|
235
230
|
|
236
231
|
paths.each do |path|
|
237
|
-
|
232
|
+
name = options[:name] || File.basename(path)
|
233
|
+
|
234
|
+
# if someone specified both a name and path assume they meant
|
235
|
+
# exactly what they said and don't normalize it.
|
236
|
+
if name == File.basename(path)
|
237
|
+
underscored = File.join(File.dirname(path), underscore(File.basename(path)))
|
238
|
+
path = underscored if !File.directory?(path)
|
239
|
+
end
|
240
|
+
|
241
|
+
if File.directory?(path)
|
242
|
+
run_init(name, options[:app], path)
|
243
|
+
else
|
244
|
+
package = install_package(options[:package])
|
245
|
+
template_path = package ? package.template_path(:project) : nil
|
246
|
+
generator = get_generator(:project, package)
|
247
|
+
success = generator.new(self, name, path, template_path, package).run
|
248
|
+
run_init(name, true, path, package) if success
|
249
|
+
end
|
250
|
+
|
238
251
|
end
|
252
|
+
|
253
|
+
rescue BPM::Error => e
|
254
|
+
abort e.message
|
239
255
|
end
|
240
256
|
|
241
|
-
desc "
|
257
|
+
desc "pack [PACKAGE]", "Build a bpm package from a package.json"
|
242
258
|
method_option :email, :type => :string, :default => nil, :aliases => ['-e'], :desc => 'Specify an author email address'
|
243
|
-
def
|
259
|
+
def pack(package_path=nil)
|
244
260
|
package_path ||= Dir.pwd
|
245
261
|
local = BPM::Local.new
|
246
262
|
package = local.pack(File.join(package_path, "package.json"), options[:email])
|
247
263
|
|
248
264
|
if package.errors.empty?
|
249
|
-
puts "Successfully built package: #{package.
|
265
|
+
puts "Successfully built package: #{package.file_name}"
|
250
266
|
else
|
251
267
|
failure_message = "BPM encountered the following problems building your package:"
|
252
268
|
package.errors.each do |error|
|
@@ -254,6 +270,8 @@ module BPM
|
|
254
270
|
end
|
255
271
|
abort failure_message
|
256
272
|
end
|
273
|
+
rescue BPM::Error => e
|
274
|
+
abort e.message
|
257
275
|
end
|
258
276
|
|
259
277
|
desc "unpack [PACKAGE]", "Extract files from a bpm package"
|
@@ -264,7 +282,7 @@ module BPM
|
|
264
282
|
paths.each do |path|
|
265
283
|
begin
|
266
284
|
package = local.unpack(path, options[:target])
|
267
|
-
unpack_path = File.expand_path(File.join(Dir.pwd, options[:target], package.
|
285
|
+
unpack_path = File.expand_path(File.join(Dir.pwd, options[:target], package.full_name))
|
268
286
|
puts "Unpacked package into: #{unpack_path}"
|
269
287
|
rescue Errno::EACCES, LibGems::FilePermissionError => ex
|
270
288
|
abort "There was a problem unpacking #{path}:\n#{ex.message}"
|
@@ -272,6 +290,21 @@ module BPM
|
|
272
290
|
end
|
273
291
|
end
|
274
292
|
|
293
|
+
desc "debug [OPTION]", "Display various options for debugging"
|
294
|
+
method_option :project, :type => :string, :default => nil, :aliases => ['-p'], :desc => 'Specify project location other than working directory'
|
295
|
+
method_option :mode, :type => :string, :default => :debug, :aliases => ['-m'], :desc => 'Build mode (default debug)'
|
296
|
+
def debug(option)
|
297
|
+
case option
|
298
|
+
when 'build'
|
299
|
+
say JSON.pretty_generate find_project.build_settings(options[:mode].to_sym)
|
300
|
+
when 'repair'
|
301
|
+
say "Verifying and repairing project..."
|
302
|
+
find_project.verify_and_repair options[:mode].to_sym, true
|
303
|
+
else
|
304
|
+
abort "Do not know how to display #{option}"
|
305
|
+
end
|
306
|
+
end
|
307
|
+
|
275
308
|
private
|
276
309
|
|
277
310
|
def get_generator(type, package=nil)
|
@@ -280,15 +313,33 @@ module BPM
|
|
280
313
|
package ? package.generator_for(type) : BPM.generator_for(type)
|
281
314
|
end
|
282
315
|
|
283
|
-
def run_init(name, path, package=nil)
|
284
|
-
|
316
|
+
def run_init(name, include_app, path, package=nil)
|
317
|
+
|
318
|
+
# we only need to create a new project.json if one does not
|
319
|
+
# already exist.
|
320
|
+
unless BPM::Project.is_project_root? path
|
321
|
+
template_path = package ? package.template_path(:init) : nil
|
285
322
|
|
286
|
-
|
287
|
-
|
323
|
+
generator = get_generator(:init, package)
|
324
|
+
generator.new(self, name, path, template_path, package).run
|
325
|
+
end
|
288
326
|
|
327
|
+
# make sure the project app status matches
|
289
328
|
project = BPM::Project.new(path, name)
|
290
|
-
|
291
|
-
project.
|
329
|
+
|
330
|
+
if project.build_app? != !!include_app
|
331
|
+
project.build_app = include_app
|
332
|
+
project.save!
|
333
|
+
end
|
334
|
+
|
335
|
+
project.build :production, true
|
336
|
+
|
337
|
+
if package
|
338
|
+
deps = {}
|
339
|
+
deps[package.name] = package.version
|
340
|
+
project.add_dependencies deps, false, true
|
341
|
+
end
|
342
|
+
|
292
343
|
end
|
293
344
|
|
294
345
|
def report_arity_error(name)
|
data/lib/bpm/errors.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
module BPM
|
2
|
+
|
3
|
+
class Error < StandardError
|
4
|
+
|
5
|
+
def format_message(*args)
|
6
|
+
args.join ","
|
7
|
+
end
|
8
|
+
|
9
|
+
def initialize(*args)
|
10
|
+
super format_message(*args)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class InvalidPackageError < BPM::Error
|
15
|
+
def format_message(package, msg=nil)
|
16
|
+
msg = msg.nil? ? '' : ": #{msg}"
|
17
|
+
"There was a problem parsing #{File.basename(package.json_path)}#{msg}"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
class InvalidPackageNameError < BPM::InvalidPackageError
|
22
|
+
def format_message(package)
|
23
|
+
"Package at #{package.root_path} name and directory do not match. (name: #{package.name}). Change the directory or package.json name to match."
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
class PackageNotFoundError < BPM::Error
|
28
|
+
def format_message(name, version)
|
29
|
+
"Could not find eligible package for '#{name}' (#{version})"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
class MinifierNotFoundError < PackageNotFoundError
|
34
|
+
def format_message(minifier_name)
|
35
|
+
"Minifier package #{minifier_name} was not found. Try running bpm update to refresh."
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
class PackageConflictError < BPM::Error
|
40
|
+
def format_message(name, version_a, version_b)
|
41
|
+
"Conflicting requirement for '#{name}' (requires #{version_a} and #{version_b})"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
class LocalPackageConflictError < PackageConflictError
|
46
|
+
def format_message(name, version_a, version_b)
|
47
|
+
"Local package '#{name}' (#{version_b}) is not compatible with required version #{version_a}"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
data/lib/bpm/init_generator.rb
CHANGED
@@ -6,7 +6,7 @@ module BPM
|
|
6
6
|
source_root File.join(::BPM::TEMPLATES_DIR, 'init')
|
7
7
|
|
8
8
|
def bpm_version
|
9
|
-
BPM::
|
9
|
+
BPM::COMPAT_VERSION
|
10
10
|
end
|
11
11
|
|
12
12
|
def run
|
@@ -16,13 +16,6 @@ module BPM
|
|
16
16
|
template "project.json", "#{name}.json"
|
17
17
|
end
|
18
18
|
|
19
|
-
empty_directory "assets"
|
20
|
-
|
21
|
-
inside "assets" do
|
22
|
-
template "bpm_packages.js"
|
23
|
-
template "bpm_styles.css"
|
24
|
-
end
|
25
|
-
|
26
19
|
true
|
27
20
|
end
|
28
21
|
|
@@ -36,4 +36,13 @@ module LibGems
|
|
36
36
|
set_home(ENV['BPM_HOME'] || LibGems.configuration.home || default_dir) unless @gem_home
|
37
37
|
@gem_home
|
38
38
|
end
|
39
|
+
|
40
|
+
def self.with_silence
|
41
|
+
original_verbose = LibGems.configuration.verbose
|
42
|
+
LibGems.configuration.verbose = false
|
43
|
+
yield
|
44
|
+
ensure
|
45
|
+
LibGems.configuration.verbose = original_verbose
|
46
|
+
end
|
47
|
+
|
39
48
|
end
|
data/lib/bpm/local.rb
CHANGED
@@ -29,9 +29,9 @@ module BPM
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def unpack(path, target)
|
32
|
-
package
|
33
|
-
package.
|
34
|
-
unpack_dir
|
32
|
+
package = BPM::Package.new
|
33
|
+
package.fill_from_gemspec(path)
|
34
|
+
unpack_dir = File.expand_path(File.join(Dir.pwd, target, package.full_name))
|
35
35
|
LibGems::Installer.new(path, :unpack => true).unpack unpack_dir
|
36
36
|
package
|
37
37
|
end
|
@@ -44,22 +44,17 @@ module BPM
|
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
|
-
def preferred_version(package, vers
|
47
|
+
def preferred_version(package, vers)
|
48
48
|
dep = LibGems::Dependency.new package, vers
|
49
49
|
specs = LibGems.source_index.search dep
|
50
50
|
specs.last.version.to_s
|
51
51
|
end
|
52
52
|
|
53
|
-
def source_root(package, vers
|
53
|
+
def source_root(package, vers)
|
54
54
|
dep = LibGems::Dependency.new package, vers
|
55
55
|
specs = LibGems.source_index.search dep
|
56
|
-
|
57
|
-
dep2 = LibGems::Dependency.new package, '>= 0'
|
58
|
-
specs2 = LibGems.source_index.search dep2
|
59
|
-
|
60
56
|
spec = specs.last
|
61
|
-
spec &&
|
62
|
-
File.join(spec.installation_path, 'gems', "#{spec.name}-#{spec.version}")
|
57
|
+
spec && File.join(spec.installation_path, 'gems', "#{spec.name}-#{spec.version}")
|
63
58
|
end
|
64
59
|
|
65
60
|
private
|