bundler 1.15.1 → 1.17.3
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of bundler might be problematic. Click here for more details.
- checksums.yaml +5 -5
- data/CHANGELOG.md +320 -0
- data/README.md +17 -8
- data/bundler.gemspec +25 -9
- data/exe/bundle +1 -6
- data/exe/bundle_ruby +4 -3
- data/lib/bundler/build_metadata.rb +53 -0
- data/lib/bundler/capistrano.rb +5 -0
- data/lib/bundler/cli/add.rb +15 -6
- data/lib/bundler/cli/binstubs.rb +17 -9
- data/lib/bundler/cli/cache.rb +5 -4
- data/lib/bundler/cli/check.rb +3 -5
- data/lib/bundler/cli/clean.rb +5 -6
- data/lib/bundler/cli/common.rb +11 -2
- data/lib/bundler/cli/config.rb +2 -1
- data/lib/bundler/cli/console.rb +2 -1
- data/lib/bundler/cli/doctor.rb +48 -1
- data/lib/bundler/cli/exec.rb +6 -5
- data/lib/bundler/cli/gem.rb +13 -8
- data/lib/bundler/cli/info.rb +0 -1
- data/lib/bundler/cli/init.rb +18 -6
- data/lib/bundler/cli/inject.rb +1 -0
- data/lib/bundler/cli/install.rb +64 -77
- data/lib/bundler/cli/issue.rb +1 -1
- data/lib/bundler/cli/list.rb +58 -0
- data/lib/bundler/cli/lock.rb +0 -1
- data/lib/bundler/cli/open.rb +2 -2
- data/lib/bundler/cli/outdated.rb +20 -9
- data/lib/bundler/cli/package.rb +9 -6
- data/lib/bundler/cli/platform.rb +1 -0
- data/lib/bundler/cli/plugin.rb +1 -0
- data/lib/bundler/cli/pristine.rb +20 -6
- data/lib/bundler/cli/remove.rb +18 -0
- data/lib/bundler/cli/show.rb +0 -1
- data/lib/bundler/cli/update.rb +35 -7
- data/lib/bundler/cli/viz.rb +4 -0
- data/lib/bundler/cli.rb +234 -90
- data/lib/bundler/compact_index_client/cache.rb +1 -2
- data/lib/bundler/compact_index_client/updater.rb +35 -7
- data/lib/bundler/compact_index_client.rb +1 -0
- data/lib/bundler/compatibility_guard.rb +14 -0
- data/lib/bundler/constants.rb +1 -0
- data/lib/bundler/current_ruby.rb +13 -5
- data/lib/bundler/definition.rb +192 -139
- data/lib/bundler/dep_proxy.rb +3 -1
- data/lib/bundler/dependency.rb +9 -9
- data/lib/bundler/deployment.rb +1 -1
- data/lib/bundler/deprecate.rb +15 -3
- data/lib/bundler/dsl.rb +115 -64
- data/lib/bundler/endpoint_specification.rb +10 -1
- data/lib/bundler/env.rb +90 -29
- data/lib/bundler/environment_preserver.rb +27 -6
- data/lib/bundler/errors.rb +1 -0
- data/lib/bundler/feature_flag.rb +46 -4
- data/lib/bundler/fetcher/base.rb +1 -0
- data/lib/bundler/fetcher/compact_index.rb +2 -11
- data/lib/bundler/fetcher/dependency.rb +2 -1
- data/lib/bundler/fetcher/downloader.rb +11 -5
- data/lib/bundler/fetcher/index.rb +3 -2
- data/lib/bundler/fetcher.rb +18 -11
- data/lib/bundler/friendly_errors.rb +6 -1
- data/lib/bundler/gem_helper.rb +19 -10
- data/lib/bundler/gem_helpers.rb +1 -0
- data/lib/bundler/gem_remote_fetcher.rb +1 -0
- data/lib/bundler/gem_tasks.rb +1 -0
- data/lib/bundler/gem_version_promoter.rb +17 -2
- data/lib/bundler/gemdeps.rb +1 -0
- data/lib/bundler/graph.rb +1 -0
- data/lib/bundler/index.rb +8 -8
- data/lib/bundler/injector.rb +192 -30
- data/lib/bundler/inline.rb +10 -10
- data/lib/bundler/installer/gem_installer.rb +12 -2
- data/lib/bundler/installer/parallel_installer.rb +78 -42
- data/lib/bundler/installer/standalone.rb +1 -0
- data/lib/bundler/installer.rb +138 -53
- data/lib/bundler/lazy_specification.rb +3 -2
- data/lib/bundler/lockfile_generator.rb +95 -0
- data/lib/bundler/lockfile_parser.rb +10 -4
- data/lib/bundler/match_platform.rb +1 -0
- data/lib/bundler/mirror.rb +8 -5
- data/lib/bundler/plugin/api/source.rb +9 -2
- data/lib/bundler/plugin/events.rb +61 -0
- data/lib/bundler/plugin/index.rb +7 -2
- data/lib/bundler/plugin/installer.rb +7 -6
- data/lib/bundler/plugin/source_list.rb +7 -8
- data/lib/bundler/plugin.rb +13 -5
- data/lib/bundler/process_lock.rb +24 -0
- data/lib/bundler/psyched_yaml.rb +10 -0
- data/lib/bundler/remote_specification.rb +10 -1
- data/lib/bundler/resolver/spec_group.rb +106 -0
- data/lib/bundler/resolver.rb +158 -195
- data/lib/bundler/retry.rb +1 -0
- data/lib/bundler/ruby_dsl.rb +1 -0
- data/lib/bundler/ruby_version.rb +2 -1
- data/lib/bundler/rubygems_ext.rb +5 -4
- data/lib/bundler/rubygems_gem_installer.rb +31 -1
- data/lib/bundler/rubygems_integration.rb +71 -32
- data/lib/bundler/runtime.rb +11 -9
- data/lib/bundler/settings/validator.rb +102 -0
- data/lib/bundler/settings.rb +213 -86
- data/lib/bundler/setup.rb +4 -7
- data/lib/bundler/shared_helpers.rb +131 -26
- data/lib/bundler/similarity_detector.rb +1 -0
- data/lib/bundler/source/gemspec.rb +1 -0
- data/lib/bundler/source/git/git_proxy.rb +21 -11
- data/lib/bundler/source/git.rb +24 -19
- data/lib/bundler/source/metadata.rb +62 -0
- data/lib/bundler/source/path/installer.rb +2 -0
- data/lib/bundler/source/path.rb +11 -7
- data/lib/bundler/source/rubygems/remote.rb +8 -2
- data/lib/bundler/source/rubygems.rb +161 -84
- data/lib/bundler/source.rb +36 -0
- data/lib/bundler/source_list.rb +75 -15
- data/lib/bundler/spec_set.rb +12 -6
- data/lib/bundler/ssl_certs/certificate_manager.rb +2 -1
- data/lib/bundler/stub_specification.rb +1 -0
- data/lib/bundler/templates/.document +1 -0
- data/lib/bundler/templates/Executable +12 -0
- data/lib/bundler/templates/Executable.bundler +105 -0
- data/lib/bundler/templates/Gemfile +3 -0
- data/lib/bundler/templates/gems.rb +8 -0
- data/lib/bundler/templates/newgem/Gemfile.tt +2 -0
- data/lib/bundler/templates/newgem/README.md.tt +1 -1
- data/lib/bundler/templates/newgem/gitignore.tt +0 -1
- data/lib/bundler/templates/newgem/lib/newgem.rb.tt +1 -0
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +12 -3
- data/lib/bundler/templates/newgem/rspec.tt +1 -0
- data/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +0 -2
- data/lib/bundler/templates/newgem/{.travis.yml.tt → travis.yml.tt} +2 -0
- data/lib/bundler/ui/rg_proxy.rb +1 -0
- data/lib/bundler/ui/shell.rb +17 -4
- data/lib/bundler/ui/silent.rb +1 -0
- data/lib/bundler/ui.rb +1 -0
- data/lib/bundler/uri_credentials_filter.rb +1 -0
- data/lib/bundler/vendor/fileutils/lib/fileutils.rb +1638 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +26 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +15 -4
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +3 -2
- data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +75 -7
- data/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +2 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +3 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +491 -148
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +8 -4
- data/lib/bundler/vendor/molinillo/lib/molinillo.rb +2 -0
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +3 -1
- data/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +1 -0
- data/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +1 -0
- data/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +9 -1
- data/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +45 -8
- data/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +9 -3
- data/lib/bundler/vendor/thor/lib/thor/actions.rb +6 -3
- data/lib/bundler/vendor/thor/lib/thor/base.rb +27 -4
- data/lib/bundler/vendor/thor/lib/thor/command.rb +9 -7
- data/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +12 -0
- data/lib/bundler/vendor/thor/lib/thor/group.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +2 -0
- data/lib/bundler/vendor/thor/lib/thor/parser/option.rb +5 -5
- data/lib/bundler/vendor/thor/lib/thor/parser/options.rb +6 -5
- data/lib/bundler/vendor/thor/lib/thor/runner.rb +6 -4
- data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +10 -9
- data/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor.rb +25 -8
- data/lib/bundler/vendored_fileutils.rb +9 -0
- data/lib/bundler/vendored_molinillo.rb +1 -0
- data/lib/bundler/vendored_persistent.rb +35 -0
- data/lib/bundler/vendored_thor.rb +1 -0
- data/lib/bundler/version.rb +6 -2
- data/lib/bundler/version_ranges.rb +1 -0
- data/lib/bundler/vlad.rb +5 -0
- data/lib/bundler/worker.rb +1 -0
- data/lib/bundler/yaml_serializer.rb +3 -3
- data/lib/bundler.rb +86 -52
- data/man/bundle-add.1 +18 -3
- data/man/bundle-add.1.txt +26 -14
- data/man/bundle-add.ronn +13 -2
- data/man/bundle-binstubs.1 +11 -1
- data/man/bundle-binstubs.1.txt +33 -18
- data/man/bundle-binstubs.ronn +15 -1
- data/man/bundle-check.1 +4 -4
- data/man/bundle-check.1.txt +15 -14
- data/man/bundle-check.ronn +3 -3
- data/man/bundle-clean.1 +1 -1
- data/man/bundle-clean.1.txt +10 -10
- data/man/bundle-config.1 +129 -29
- data/man/bundle-config.1.txt +285 -174
- data/man/bundle-config.ronn +167 -88
- data/man/bundle-doctor.1 +44 -0
- data/man/bundle-doctor.1.txt +44 -0
- data/man/bundle-doctor.ronn +33 -0
- data/man/bundle-exec.1 +6 -3
- data/man/bundle-exec.1.txt +78 -71
- data/man/bundle-exec.ronn +10 -3
- data/man/bundle-gem.1 +4 -4
- data/man/bundle-gem.1.txt +41 -40
- data/man/bundle-gem.ronn +3 -2
- data/man/bundle-info.1 +1 -1
- data/man/bundle-info.1.txt +8 -8
- data/man/bundle-init.1 +9 -4
- data/man/bundle-init.1.txt +23 -13
- data/man/bundle-init.ronn +15 -4
- data/man/bundle-inject.1 +4 -4
- data/man/bundle-inject.1.txt +10 -10
- data/man/bundle-inject.ronn +3 -3
- data/man/bundle-install.1 +31 -28
- data/man/bundle-install.1.txt +205 -194
- data/man/bundle-install.ronn +44 -35
- data/man/bundle-list.1 +50 -0
- data/man/bundle-list.1.txt +43 -0
- data/man/bundle-list.ronn +33 -0
- data/man/bundle-lock.1 +1 -1
- data/man/bundle-lock.1.txt +47 -47
- data/man/bundle-lock.ronn +1 -1
- data/man/bundle-open.1 +1 -1
- data/man/bundle-open.1.txt +7 -7
- data/man/bundle-outdated.1 +7 -3
- data/man/bundle-outdated.1.txt +40 -36
- data/man/bundle-outdated.ronn +6 -2
- data/man/bundle-package.1 +6 -3
- data/man/bundle-package.1.txt +44 -39
- data/man/bundle-package.ronn +7 -2
- data/man/bundle-platform.1 +1 -1
- data/man/bundle-platform.1.txt +13 -13
- data/man/bundle-pristine.1 +21 -3
- data/man/bundle-pristine.1.txt +33 -10
- data/man/bundle-pristine.ronn +24 -3
- data/man/bundle-remove.1 +31 -0
- data/man/bundle-remove.1.txt +34 -0
- data/man/bundle-remove.ronn +23 -0
- data/man/bundle-show.1 +3 -3
- data/man/bundle-show.1.txt +14 -12
- data/man/bundle-show.ronn +3 -2
- data/man/bundle-update.1 +13 -9
- data/man/bundle-update.1.txt +133 -130
- data/man/bundle-update.ronn +21 -17
- data/man/bundle-viz.1 +7 -7
- data/man/bundle-viz.1.txt +17 -15
- data/man/bundle-viz.ronn +6 -6
- data/man/bundle.1 +31 -32
- data/man/bundle.1.txt +63 -75
- data/man/bundle.ronn +35 -47
- data/man/gemfile.5 +44 -8
- data/man/gemfile.5.ronn +54 -8
- data/man/gemfile.5.txt +218 -165
- data/man/index.txt +25 -15
- metadata +36 -44
- data/.codeclimate.yml +0 -25
- data/.gitignore +0 -18
- data/.rspec +0 -3
- data/.rubocop.yml +0 -131
- data/.rubocop_todo.yml +0 -418
- data/.travis.yml +0 -122
- data/CODE_OF_CONDUCT.md +0 -42
- data/CONTRIBUTING.md +0 -17
- data/Rakefile +0 -346
- data/bin/rake +0 -19
- data/bin/rspec +0 -15
- data/bin/rubocop +0 -17
- data/bin/with_rubygems +0 -39
- data/doc/README.md +0 -30
- data/doc/TROUBLESHOOTING.md +0 -64
- data/doc/contributing/BUG_TRIAGE.md +0 -36
- data/doc/contributing/COMMUNITY.md +0 -13
- data/doc/contributing/GETTING_HELP.md +0 -11
- data/doc/contributing/HOW_YOU_CAN_HELP.md +0 -27
- data/doc/contributing/ISSUES.md +0 -51
- data/doc/contributing/README.md +0 -38
- data/doc/development/NEW_FEATURES.md +0 -10
- data/doc/development/PULL_REQUESTS.md +0 -40
- data/doc/development/README.md +0 -19
- data/doc/development/RELEASING.md +0 -9
- data/doc/development/SETUP.md +0 -29
- data/doc/documentation/README.md +0 -29
- data/doc/documentation/VISION.md +0 -26
- data/doc/documentation/WRITING.md +0 -54
- data/lib/bundler/postit_trampoline.rb +0 -73
- data/lib/bundler/vendor/postit/lib/postit/environment.rb +0 -44
- data/lib/bundler/vendor/postit/lib/postit/installer.rb +0 -28
- data/lib/bundler/vendor/postit/lib/postit/parser.rb +0 -21
- data/lib/bundler/vendor/postit/lib/postit/setup.rb +0 -12
- data/lib/bundler/vendor/postit/lib/postit/version.rb +0 -3
- data/lib/bundler/vendor/postit/lib/postit.rb +0 -15
- data/task/release.rake +0 -116
data/lib/bundler/cli/binstubs.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require "bundler/cli/common"
|
3
2
|
|
4
3
|
module Bundler
|
5
4
|
class CLI::Binstubs
|
@@ -11,11 +10,19 @@ module Bundler
|
|
11
10
|
|
12
11
|
def run
|
13
12
|
Bundler.definition.validate_runtime!
|
14
|
-
|
15
|
-
|
13
|
+
path_option = options["path"]
|
14
|
+
path_option = nil if path_option && path_option.empty?
|
15
|
+
Bundler.settings.set_command_option :bin, path_option if options["path"]
|
16
|
+
Bundler.settings.set_command_option_if_given :shebang, options["shebang"]
|
16
17
|
installer = Installer.new(Bundler.root, Bundler.definition)
|
17
18
|
|
18
|
-
|
19
|
+
installer_opts = { :force => options[:force], :binstubs_cmd => true }
|
20
|
+
|
21
|
+
if options[:all]
|
22
|
+
raise InvalidOption, "Cannot specify --all with specific gems" unless gems.empty?
|
23
|
+
@gems = Bundler.definition.specs.map(&:name)
|
24
|
+
installer_opts.delete(:binstubs_cmd)
|
25
|
+
elsif gems.empty?
|
19
26
|
Bundler.ui.error "`bundle binstubs` needs at least one gem to run."
|
20
27
|
exit 1
|
21
28
|
end
|
@@ -28,12 +35,13 @@ module Bundler
|
|
28
35
|
)
|
29
36
|
end
|
30
37
|
|
31
|
-
if
|
32
|
-
Bundler.ui.warn
|
33
|
-
|
34
|
-
|
38
|
+
if options[:standalone]
|
39
|
+
next Bundler.ui.warn("Sorry, Bundler can only be run via RubyGems.") if gem_name == "bundler"
|
40
|
+
Bundler.settings.temporary(:path => (Bundler.settings[:path] || Bundler.root)) do
|
41
|
+
installer.generate_standalone_bundler_executable_stubs(spec)
|
42
|
+
end
|
35
43
|
else
|
36
|
-
installer.generate_bundler_executable_stubs(spec,
|
44
|
+
installer.generate_bundler_executable_stubs(spec, installer_opts)
|
37
45
|
end
|
38
46
|
end
|
39
47
|
end
|
data/lib/bundler/cli/cache.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Bundler
|
3
4
|
class CLI::Cache
|
4
5
|
attr_reader :options
|
@@ -10,9 +11,9 @@ module Bundler
|
|
10
11
|
Bundler.definition.validate_runtime!
|
11
12
|
Bundler.definition.resolve_with_cache!
|
12
13
|
setup_cache_all
|
13
|
-
Bundler.settings
|
14
|
+
Bundler.settings.set_command_option_if_given :cache_all_platforms, options["all-platforms"]
|
14
15
|
Bundler.load.cache
|
15
|
-
Bundler.settings
|
16
|
+
Bundler.settings.set_command_option_if_given :no_prune, options["no-prune"]
|
16
17
|
Bundler.load.lock
|
17
18
|
rescue GemNotFound => e
|
18
19
|
Bundler.ui.error(e.message)
|
@@ -23,9 +24,9 @@ module Bundler
|
|
23
24
|
private
|
24
25
|
|
25
26
|
def setup_cache_all
|
26
|
-
Bundler.settings
|
27
|
+
Bundler.settings.set_command_option_if_given :cache_all, options[:all]
|
27
28
|
|
28
|
-
if Bundler.definition.has_local_dependencies? && !Bundler.
|
29
|
+
if Bundler.definition.has_local_dependencies? && !Bundler.feature_flag.cache_all?
|
29
30
|
Bundler.ui.warn "Your Gemfile contains path and git dependencies. If you want " \
|
30
31
|
"to package them as well, please pass the --all flag. This will be the default " \
|
31
32
|
"on Bundler 2.0."
|
data/lib/bundler/cli/check.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Bundler
|
3
4
|
class CLI::Check
|
4
5
|
attr_reader :options
|
@@ -8,10 +9,7 @@ module Bundler
|
|
8
9
|
end
|
9
10
|
|
10
11
|
def run
|
11
|
-
|
12
|
-
Bundler.settings[:path] = File.expand_path(options[:path])
|
13
|
-
Bundler.settings[:disable_shared_gems] = true
|
14
|
-
end
|
12
|
+
Bundler.settings.set_command_option_if_given :path, options[:path]
|
15
13
|
|
16
14
|
begin
|
17
15
|
definition = Bundler.definition
|
@@ -28,7 +26,7 @@ module Bundler
|
|
28
26
|
not_installed.each {|s| Bundler.ui.error " * #{s.name} (#{s.version})" }
|
29
27
|
Bundler.ui.warn "Install missing gems with `bundle install`"
|
30
28
|
exit 1
|
31
|
-
elsif !Bundler.default_lockfile.file? && Bundler.
|
29
|
+
elsif !Bundler.default_lockfile.file? && Bundler.frozen_bundle?
|
32
30
|
Bundler.ui.error "This bundle has been frozen, but there is no #{Bundler.default_lockfile.relative_path_from(SharedHelpers.pwd)} present"
|
33
31
|
exit 1
|
34
32
|
else
|
data/lib/bundler/cli/clean.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Bundler
|
3
4
|
class CLI::Clean
|
4
5
|
attr_reader :options
|
@@ -15,12 +16,10 @@ module Bundler
|
|
15
16
|
protected
|
16
17
|
|
17
18
|
def require_path_or_force
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
exit 1
|
23
|
-
end
|
19
|
+
return unless Bundler.use_system_gems? && !options[:force]
|
20
|
+
raise InvalidOption, "Cleaning all the gems on your system is dangerous! " \
|
21
|
+
"If you're sure you want to remove every system gem not in this " \
|
22
|
+
"bundle, run `bundle clean --force`."
|
24
23
|
end
|
25
24
|
end
|
26
25
|
end
|
data/lib/bundler/cli/common.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Bundler
|
3
4
|
module CLI::Common
|
4
5
|
def self.output_post_install_messages(messages)
|
@@ -14,12 +15,12 @@ module Bundler
|
|
14
15
|
end
|
15
16
|
|
16
17
|
def self.output_without_groups_message
|
17
|
-
return
|
18
|
+
return if Bundler.settings[:without].empty?
|
18
19
|
Bundler.ui.confirm without_groups_message
|
19
20
|
end
|
20
21
|
|
21
22
|
def self.without_groups_message
|
22
|
-
groups = Bundler.settings
|
23
|
+
groups = Bundler.settings[:without]
|
23
24
|
group_list = [groups[0...-1].join(", "), groups[-1..-1]].
|
24
25
|
reject {|s| s.to_s.empty? }.join(" and ")
|
25
26
|
group_str = (groups.size == 1) ? "group" : "groups"
|
@@ -89,5 +90,13 @@ module Bundler
|
|
89
90
|
def self.patch_level_options(options)
|
90
91
|
[:major, :minor, :patch].select {|v| options.keys.include?(v.to_s) }
|
91
92
|
end
|
93
|
+
|
94
|
+
def self.clean_after_install?
|
95
|
+
clean = Bundler.settings[:clean]
|
96
|
+
return clean unless clean.nil?
|
97
|
+
clean ||= Bundler.feature_flag.auto_clean_without_path? && Bundler.settings[:path].nil?
|
98
|
+
clean &&= !Bundler.use_system_gems?
|
99
|
+
clean
|
100
|
+
end
|
92
101
|
end
|
93
102
|
end
|
data/lib/bundler/cli/config.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Bundler
|
3
4
|
class CLI::Config
|
4
5
|
attr_reader :name, :options, :scope, :thor
|
@@ -112,7 +113,7 @@ module Bundler
|
|
112
113
|
end
|
113
114
|
|
114
115
|
def valid_scope?(scope)
|
115
|
-
%w
|
116
|
+
%w[delete local global].include?(scope)
|
116
117
|
end
|
117
118
|
end
|
118
119
|
end
|
data/lib/bundler/cli/console.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Bundler
|
3
4
|
class CLI::Console
|
4
5
|
attr_reader :options, :group
|
@@ -8,7 +9,7 @@ module Bundler
|
|
8
9
|
end
|
9
10
|
|
10
11
|
def run
|
11
|
-
Bundler::SharedHelpers.major_deprecation "bundle console will be replaced " \
|
12
|
+
Bundler::SharedHelpers.major_deprecation 2, "bundle console will be replaced " \
|
12
13
|
"by `bin/console` generated by `bundle gem <name>`"
|
13
14
|
|
14
15
|
group ? Bundler.require(:default, *(group.split.map!(&:to_sym))) : Bundler.require
|
data/lib/bundler/cli/doctor.rb
CHANGED
@@ -62,6 +62,7 @@ module Bundler
|
|
62
62
|
|
63
63
|
def run
|
64
64
|
Bundler.ui.level = "error" if options[:quiet]
|
65
|
+
Bundler.settings.validate!
|
65
66
|
check!
|
66
67
|
|
67
68
|
definition = Bundler.definition
|
@@ -77,6 +78,8 @@ module Bundler
|
|
77
78
|
end
|
78
79
|
end
|
79
80
|
|
81
|
+
permissions_valid = check_home_permissions
|
82
|
+
|
80
83
|
if broken_links.any?
|
81
84
|
message = "The following gems are missing OS dependencies:"
|
82
85
|
broken_links.map do |spec, paths|
|
@@ -85,9 +88,53 @@ module Bundler
|
|
85
88
|
end
|
86
89
|
end.flatten.sort.each {|m| message += m }
|
87
90
|
raise ProductionError, message
|
88
|
-
|
91
|
+
elsif !permissions_valid
|
89
92
|
Bundler.ui.info "No issues found with the installed bundle"
|
90
93
|
end
|
91
94
|
end
|
95
|
+
|
96
|
+
private
|
97
|
+
|
98
|
+
def check_home_permissions
|
99
|
+
require "find"
|
100
|
+
files_not_readable_or_writable = []
|
101
|
+
files_not_rw_and_owned_by_different_user = []
|
102
|
+
files_not_owned_by_current_user_but_still_rw = []
|
103
|
+
Find.find(Bundler.home.to_s).each do |f|
|
104
|
+
if !File.writable?(f) || !File.readable?(f)
|
105
|
+
if File.stat(f).uid != Process.uid
|
106
|
+
files_not_rw_and_owned_by_different_user << f
|
107
|
+
else
|
108
|
+
files_not_readable_or_writable << f
|
109
|
+
end
|
110
|
+
elsif File.stat(f).uid != Process.uid
|
111
|
+
files_not_owned_by_current_user_but_still_rw << f
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
ok = true
|
116
|
+
if files_not_owned_by_current_user_but_still_rw.any?
|
117
|
+
Bundler.ui.warn "Files exist in the Bundler home that are owned by another " \
|
118
|
+
"user, but are still readable/writable. These files are:\n - #{files_not_owned_by_current_user_but_still_rw.join("\n - ")}"
|
119
|
+
|
120
|
+
ok = false
|
121
|
+
end
|
122
|
+
|
123
|
+
if files_not_rw_and_owned_by_different_user.any?
|
124
|
+
Bundler.ui.warn "Files exist in the Bundler home that are owned by another " \
|
125
|
+
"user, and are not readable/writable. These files are:\n - #{files_not_rw_and_owned_by_different_user.join("\n - ")}"
|
126
|
+
|
127
|
+
ok = false
|
128
|
+
end
|
129
|
+
|
130
|
+
if files_not_readable_or_writable.any?
|
131
|
+
Bundler.ui.warn "Files exist in the Bundler home that are not " \
|
132
|
+
"readable/writable by the current user. These files are:\n - #{files_not_readable_or_writable.join("\n - ")}"
|
133
|
+
|
134
|
+
ok = false
|
135
|
+
end
|
136
|
+
|
137
|
+
ok
|
138
|
+
end
|
92
139
|
end
|
93
140
|
end
|
data/lib/bundler/cli/exec.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require "bundler/current_ruby"
|
3
4
|
|
4
5
|
module Bundler
|
5
6
|
class CLI::Exec
|
6
7
|
attr_reader :options, :args, :cmd
|
7
8
|
|
8
|
-
|
9
|
+
TRAPPED_SIGNALS = %w[INT].freeze
|
9
10
|
|
10
11
|
def initialize(options, args)
|
11
12
|
@options = options
|
@@ -69,15 +70,14 @@ module Bundler
|
|
69
70
|
ui = Bundler.ui
|
70
71
|
Bundler.ui = nil
|
71
72
|
require "bundler/setup"
|
72
|
-
|
73
|
-
signals.each {|s| trap(s, "DEFAULT") }
|
73
|
+
TRAPPED_SIGNALS.each {|s| trap(s, "DEFAULT") }
|
74
74
|
Kernel.load(file)
|
75
|
-
rescue SystemExit
|
75
|
+
rescue SystemExit, SignalException
|
76
76
|
raise
|
77
77
|
rescue Exception => e # rubocop:disable Lint/RescueException
|
78
78
|
Bundler.ui = ui
|
79
79
|
Bundler.ui.error "bundler: failed to load command: #{cmd} (#{file})"
|
80
|
-
backtrace = e.backtrace.take_while {|bt| !bt.start_with?(__FILE__) }
|
80
|
+
backtrace = e.backtrace ? e.backtrace.take_while {|bt| !bt.start_with?(__FILE__) } : []
|
81
81
|
abort "#{e.class}: #{e.message}\n #{backtrace.join("\n ")}"
|
82
82
|
end
|
83
83
|
|
@@ -89,6 +89,7 @@ module Bundler
|
|
89
89
|
possibilities = [
|
90
90
|
"#!/usr/bin/env ruby\n",
|
91
91
|
"#!/usr/bin/env jruby\n",
|
92
|
+
"#!/usr/bin/env truffleruby\n",
|
92
93
|
"#!#{Gem.ruby}\n",
|
93
94
|
]
|
94
95
|
|
data/lib/bundler/cli/gem.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require "pathname"
|
3
4
|
|
4
5
|
module Bundler
|
@@ -71,10 +72,10 @@ module Bundler
|
|
71
72
|
"bin/setup.tt" => "bin/setup"
|
72
73
|
}
|
73
74
|
|
74
|
-
executables = %w
|
75
|
+
executables = %w[
|
75
76
|
bin/console
|
76
77
|
bin/setup
|
77
|
-
|
78
|
+
]
|
78
79
|
|
79
80
|
templates.merge!("gitignore.tt" => ".gitignore") if Bundler.git_present?
|
80
81
|
|
@@ -82,7 +83,7 @@ module Bundler
|
|
82
83
|
config[:test] = test_framework
|
83
84
|
config[:test_framework_version] = TEST_FRAMEWORK_VERSIONS[test_framework]
|
84
85
|
|
85
|
-
templates.merge!("
|
86
|
+
templates.merge!("travis.yml.tt" => ".travis.yml")
|
86
87
|
|
87
88
|
case test_framework
|
88
89
|
when "rspec"
|
@@ -104,7 +105,7 @@ module Bundler
|
|
104
105
|
if ask_and_set(:mit, "Do you want to license your code permissively under the MIT license?",
|
105
106
|
"This means that any other developer or company will be legally allowed to use your code " \
|
106
107
|
"for free as long as they admit you created it. You can read more about the MIT license " \
|
107
|
-
"at
|
108
|
+
"at https://choosealicense.com/licenses/mit.")
|
108
109
|
config[:mit] = true
|
109
110
|
Bundler.ui.info "MIT License enabled in config"
|
110
111
|
templates.merge!("LICENSE.txt.tt" => "LICENSE.txt")
|
@@ -117,7 +118,7 @@ module Bundler
|
|
117
118
|
"of enforcing it, so be sure that you are prepared to do that. Be sure that your email " \
|
118
119
|
"address is specified as a contact in the generated code of conduct so that people know " \
|
119
120
|
"who to contact in case of a violation. For suggestions about " \
|
120
|
-
"how to enforce codes of conduct, see
|
121
|
+
"how to enforce codes of conduct, see https://bit.ly/coc-enforcement.")
|
121
122
|
config[:coc] = true
|
122
123
|
Bundler.ui.info "Code of conduct enabled in config"
|
123
124
|
templates.merge!("CODE_OF_CONDUCT.md.tt" => "CODE_OF_CONDUCT.md")
|
@@ -141,9 +142,10 @@ module Bundler
|
|
141
142
|
end
|
142
143
|
|
143
144
|
executables.each do |file|
|
144
|
-
|
145
|
-
|
146
|
-
|
145
|
+
SharedHelpers.filesystem_access(target.join(file)) do |path|
|
146
|
+
executable = (path.stat.mode | 0o111)
|
147
|
+
path.chmod(executable)
|
148
|
+
end
|
147
149
|
end
|
148
150
|
|
149
151
|
if Bundler.git_present?
|
@@ -156,6 +158,9 @@ module Bundler
|
|
156
158
|
|
157
159
|
# Open gemspec in editor
|
158
160
|
open_editor(options["edit"], target.join("#{name}.gemspec")) if options[:edit]
|
161
|
+
|
162
|
+
Bundler.ui.info "Gem '#{name}' was successfully created. " \
|
163
|
+
"For more information on making a RubyGem visit https://bundler.io/guides/creating_gem.html"
|
159
164
|
rescue Errno::EEXIST => e
|
160
165
|
raise GenericSystemCallError.new(e, "There was a conflict while creating the new gem.")
|
161
166
|
end
|
data/lib/bundler/cli/info.rb
CHANGED
data/lib/bundler/cli/init.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Bundler
|
3
4
|
class CLI::Init
|
4
5
|
attr_reader :options
|
@@ -7,8 +8,13 @@ module Bundler
|
|
7
8
|
end
|
8
9
|
|
9
10
|
def run
|
10
|
-
if File.exist?(
|
11
|
-
Bundler.ui.error "
|
11
|
+
if File.exist?(gemfile)
|
12
|
+
Bundler.ui.error "#{gemfile} already exists at #{File.expand_path(gemfile)}"
|
13
|
+
exit 1
|
14
|
+
end
|
15
|
+
|
16
|
+
unless File.writable?(Dir.pwd)
|
17
|
+
Bundler.ui.error "Can not create #{gemfile} as the current directory is not writable."
|
12
18
|
exit 1
|
13
19
|
end
|
14
20
|
|
@@ -21,15 +27,21 @@ module Bundler
|
|
21
27
|
|
22
28
|
spec = Bundler.load_gemspec_uncached(gemspec)
|
23
29
|
|
24
|
-
|
25
|
-
File.open("Gemfile", "wb") do |file|
|
30
|
+
File.open(gemfile, "wb") do |file|
|
26
31
|
file << "# Generated from #{gemspec}\n"
|
27
32
|
file << spec.to_gemfile
|
28
33
|
end
|
29
34
|
else
|
30
|
-
|
31
|
-
FileUtils.cp(File.expand_path("../../templates/Gemfile", __FILE__), "Gemfile")
|
35
|
+
FileUtils.cp(File.expand_path("../../templates/#{gemfile}", __FILE__), gemfile)
|
32
36
|
end
|
37
|
+
|
38
|
+
puts "Writing new #{gemfile} to #{SharedHelpers.pwd}/#{gemfile}"
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def gemfile
|
44
|
+
@gemfile ||= Bundler.feature_flag.init_gems_rb? ? "gems.rb" : "Gemfile"
|
33
45
|
end
|
34
46
|
end
|
35
47
|
end
|