bundler 1.13.6 → 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 +554 -9
- data/README.md +28 -5
- data/bundler.gemspec +40 -11
- data/exe/bundle +4 -8
- data/exe/bundle_ruby +4 -3
- data/lib/bundler.rb +162 -68
- data/lib/bundler/build_metadata.rb +53 -0
- data/lib/bundler/capistrano.rb +5 -0
- data/lib/bundler/cli.rb +360 -118
- data/lib/bundler/cli/add.rb +35 -0
- data/lib/bundler/cli/binstubs.rb +18 -10
- data/lib/bundler/cli/cache.rb +6 -5
- data/lib/bundler/cli/check.rb +4 -6
- data/lib/bundler/cli/clean.rb +6 -7
- data/lib/bundler/cli/common.rb +47 -1
- data/lib/bundler/cli/config.rb +26 -7
- data/lib/bundler/cli/console.rb +2 -1
- data/lib/bundler/cli/doctor.rb +63 -18
- data/lib/bundler/cli/exec.rb +12 -5
- data/lib/bundler/cli/gem.rb +59 -21
- data/lib/bundler/cli/info.rb +50 -0
- data/lib/bundler/cli/init.rb +21 -7
- data/lib/bundler/cli/inject.rb +13 -4
- data/lib/bundler/cli/install.rb +72 -101
- data/lib/bundler/cli/issue.rb +40 -0
- data/lib/bundler/cli/list.rb +58 -0
- data/lib/bundler/cli/lock.rb +9 -6
- data/lib/bundler/cli/open.rb +4 -3
- data/lib/bundler/cli/outdated.rb +175 -60
- data/lib/bundler/cli/package.rb +9 -6
- data/lib/bundler/cli/platform.rb +2 -1
- data/lib/bundler/cli/plugin.rb +1 -0
- data/lib/bundler/cli/pristine.rb +47 -0
- data/lib/bundler/cli/remove.rb +18 -0
- data/lib/bundler/cli/show.rb +2 -2
- data/lib/bundler/cli/update.rb +44 -34
- data/lib/bundler/cli/viz.rb +5 -1
- data/lib/bundler/compact_index_client.rb +109 -0
- data/lib/bundler/compact_index_client/cache.rb +118 -0
- data/lib/bundler/compact_index_client/updater.rb +116 -0
- data/lib/bundler/compatibility_guard.rb +14 -0
- data/lib/bundler/constants.rb +1 -0
- data/lib/bundler/current_ruby.rb +17 -8
- data/lib/bundler/definition.rb +353 -182
- data/lib/bundler/dep_proxy.rb +3 -1
- data/lib/bundler/dependency.rb +22 -10
- data/lib/bundler/deployment.rb +1 -1
- data/lib/bundler/deprecate.rb +15 -3
- data/lib/bundler/dsl.rb +122 -64
- data/lib/bundler/endpoint_specification.rb +13 -3
- data/lib/bundler/env.rb +110 -38
- data/lib/bundler/environment_preserver.rb +27 -6
- data/lib/bundler/errors.rb +24 -0
- data/lib/bundler/feature_flag.rb +74 -0
- data/lib/bundler/fetcher.rb +18 -11
- data/lib/bundler/fetcher/base.rb +1 -0
- data/lib/bundler/fetcher/compact_index.rb +7 -5
- data/lib/bundler/fetcher/dependency.rb +3 -2
- data/lib/bundler/fetcher/downloader.rb +25 -7
- data/lib/bundler/fetcher/index.rb +3 -2
- data/lib/bundler/friendly_errors.rb +33 -7
- data/lib/bundler/gem_helper.rb +25 -11
- data/lib/bundler/gem_helpers.rb +70 -1
- 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 +29 -0
- data/lib/bundler/graph.rb +1 -0
- data/lib/bundler/index.rb +28 -15
- data/lib/bundler/injector.rb +216 -33
- data/lib/bundler/inline.rb +12 -12
- data/lib/bundler/installer.rb +139 -53
- data/lib/bundler/installer/gem_installer.rb +15 -5
- data/lib/bundler/installer/parallel_installer.rb +113 -28
- data/lib/bundler/installer/standalone.rb +1 -0
- data/lib/bundler/lazy_specification.rb +31 -3
- data/lib/bundler/lockfile_generator.rb +95 -0
- data/lib/bundler/lockfile_parser.rb +50 -37
- data/lib/bundler/match_platform.rb +13 -3
- data/lib/bundler/mirror.rb +10 -5
- data/lib/bundler/plugin.rb +22 -8
- data/lib/bundler/plugin/api.rb +2 -1
- data/lib/bundler/plugin/api/source.rb +17 -4
- data/lib/bundler/plugin/events.rb +61 -0
- data/lib/bundler/plugin/index.rb +9 -2
- data/lib/bundler/plugin/installer.rb +7 -6
- data/lib/bundler/plugin/source_list.rb +7 -8
- data/lib/bundler/process_lock.rb +24 -0
- data/lib/bundler/psyched_yaml.rb +10 -0
- data/lib/bundler/remote_specification.rb +30 -1
- data/lib/bundler/resolver.rb +187 -194
- data/lib/bundler/resolver/spec_group.rb +106 -0
- data/lib/bundler/retry.rb +5 -1
- data/lib/bundler/ruby_dsl.rb +1 -0
- data/lib/bundler/ruby_version.rb +12 -2
- data/lib/bundler/rubygems_ext.rb +23 -8
- data/lib/bundler/rubygems_gem_installer.rb +90 -0
- data/lib/bundler/rubygems_integration.rb +193 -70
- data/lib/bundler/runtime.rb +39 -22
- data/lib/bundler/settings.rb +245 -85
- data/lib/bundler/settings/validator.rb +102 -0
- data/lib/bundler/setup.rb +4 -7
- data/lib/bundler/shared_helpers.rb +183 -40
- data/lib/bundler/similarity_detector.rb +1 -0
- data/lib/bundler/source.rb +58 -1
- data/lib/bundler/source/gemspec.rb +1 -0
- data/lib/bundler/source/git.rb +52 -23
- data/lib/bundler/source/git/git_proxy.rb +30 -14
- data/lib/bundler/source/metadata.rb +62 -0
- data/lib/bundler/source/path.rb +42 -16
- data/lib/bundler/source/path/installer.rb +4 -2
- data/lib/bundler/source/rubygems.rb +171 -82
- data/lib/bundler/source/rubygems/remote.rb +12 -2
- data/lib/bundler/source_list.rb +75 -15
- data/lib/bundler/spec_set.rb +67 -32
- data/lib/bundler/ssl_certs/certificate_manager.rb +2 -1
- data/lib/bundler/stub_specification.rb +86 -2
- data/lib/bundler/templates/.document +1 -0
- data/lib/bundler/templates/Executable +13 -1
- data/lib/bundler/templates/Executable.bundler +105 -0
- data/lib/bundler/templates/Executable.standalone +5 -5
- data/lib/bundler/templates/Gemfile +3 -0
- data/lib/bundler/templates/gems.rb +8 -0
- data/lib/bundler/templates/newgem/Gemfile.tt +4 -2
- data/lib/bundler/templates/newgem/LICENSE.txt.tt +1 -1
- data/lib/bundler/templates/newgem/README.md.tt +14 -8
- data/lib/bundler/templates/newgem/Rakefile.tt +5 -5
- data/lib/bundler/templates/newgem/bin/console.tt +1 -1
- data/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +4 -4
- data/lib/bundler/templates/newgem/ext/newgem/newgem.h.tt +3 -3
- data/lib/bundler/templates/newgem/gitignore.tt +5 -1
- data/lib/bundler/templates/newgem/lib/newgem.rb.tt +7 -6
- data/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +4 -4
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +21 -12
- data/lib/bundler/templates/newgem/rspec.tt +1 -0
- data/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +1 -3
- data/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +13 -1
- data/lib/bundler/templates/newgem/test/newgem_test.rb.tt +1 -1
- data/lib/bundler/templates/newgem/test/test_helper.rb.tt +3 -3
- data/lib/bundler/templates/newgem/{.travis.yml.tt → travis.yml.tt} +2 -0
- data/lib/bundler/ui.rb +1 -0
- data/lib/bundler/ui/rg_proxy.rb +1 -0
- data/lib/bundler/ui/shell.rb +30 -10
- data/lib/bundler/ui/silent.rb +21 -1
- 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.rb +2 -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.rb +26 -6
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +2 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +12 -4
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +3 -2
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +63 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +11 -3
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +13 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +3 -2
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +3 -2
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +18 -5
- 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 +499 -128
- 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/{net → net-http-persistent/lib/net}/http/faster.rb +1 -0
- data/lib/bundler/vendor/{net → net-http-persistent/lib/net}/http/persistent.rb +27 -24
- data/lib/bundler/vendor/{net → net-http-persistent/lib/net}/http/persistent/ssl_reuse.rb +2 -1
- data/lib/bundler/vendor/thor/lib/thor.rb +46 -21
- data/lib/bundler/vendor/thor/lib/thor/actions.rb +24 -22
- data/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +2 -1
- data/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
- data/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +2 -2
- data/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +16 -8
- data/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +66 -18
- data/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +17 -15
- data/lib/bundler/vendor/thor/lib/thor/base.rb +55 -32
- data/lib/bundler/vendor/thor/lib/thor/command.rb +13 -11
- data/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +21 -1
- data/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb +7 -5
- data/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +94 -63
- data/lib/bundler/vendor/thor/lib/thor/error.rb +3 -3
- data/lib/bundler/vendor/thor/lib/thor/group.rb +13 -13
- data/lib/bundler/vendor/thor/lib/thor/invocation.rb +4 -5
- data/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +2 -0
- data/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +4 -7
- data/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +16 -16
- data/lib/bundler/vendor/thor/lib/thor/parser/option.rb +42 -21
- data/lib/bundler/vendor/thor/lib/thor/parser/options.rb +13 -10
- data/lib/bundler/vendor/thor/lib/thor/runner.rb +31 -29
- data/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +49 -33
- data/lib/bundler/vendor/thor/lib/thor/shell/color.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/shell/html.rb +4 -4
- data/lib/bundler/vendor/thor/lib/thor/util.rb +8 -7
- data/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/lib/bundler/vendored_fileutils.rb +9 -0
- data/lib/bundler/vendored_molinillo.rb +1 -0
- data/lib/bundler/vendored_persistent.rb +43 -3
- data/lib/bundler/vendored_thor.rb +6 -2
- data/lib/bundler/version.rb +19 -2
- data/lib/bundler/version_ranges.rb +76 -0
- data/lib/bundler/vlad.rb +5 -0
- data/lib/bundler/worker.rb +30 -6
- data/lib/bundler/yaml_serializer.rb +4 -4
- data/man/bundle-add.1 +58 -0
- data/man/bundle-add.1.txt +52 -0
- data/man/bundle-add.ronn +40 -0
- data/{lib/bundler/man/bundle-binstubs → man/bundle-binstubs.1} +11 -1
- data/man/bundle-binstubs.1.txt +48 -0
- data/man/bundle-binstubs.ronn +15 -1
- data/man/bundle-check.1 +31 -0
- data/man/bundle-check.1.txt +33 -0
- data/man/bundle-check.ronn +26 -0
- data/man/bundle-clean.1 +24 -0
- data/man/bundle-clean.1.txt +26 -0
- data/man/bundle-clean.ronn +18 -0
- data/man/bundle-config.1 +497 -0
- data/man/bundle-config.1.txt +529 -0
- data/man/bundle-config.ronn +233 -61
- data/man/bundle-doctor.1 +44 -0
- data/man/bundle-doctor.1.txt +44 -0
- data/man/bundle-doctor.ronn +33 -0
- data/{lib/bundler/man/bundle-exec → man/bundle-exec.1} +6 -3
- data/man/bundle-exec.1.txt +178 -0
- data/man/bundle-exec.ronn +10 -3
- data/{lib/bundler/man/bundle-gem → man/bundle-gem.1} +4 -4
- data/man/bundle-gem.1.txt +91 -0
- data/man/bundle-gem.ronn +3 -2
- data/man/bundle-info.1 +20 -0
- data/man/bundle-info.1.txt +21 -0
- data/man/bundle-info.ronn +17 -0
- data/man/bundle-init.1 +25 -0
- data/man/bundle-init.1.txt +34 -0
- data/man/bundle-init.ronn +29 -0
- data/man/bundle-inject.1 +33 -0
- data/man/bundle-inject.1.txt +32 -0
- data/man/bundle-inject.ronn +22 -0
- data/{lib/bundler/man/bundle-install → man/bundle-install.1} +32 -29
- data/man/bundle-install.1.txt +396 -0
- data/man/bundle-install.ronn +45 -36
- data/man/bundle-list.1 +50 -0
- data/man/bundle-list.1.txt +43 -0
- data/man/bundle-list.ronn +33 -0
- data/{lib/bundler/man/bundle-lock → man/bundle-lock.1} +43 -2
- data/man/bundle-lock.1.txt +93 -0
- data/man/bundle-lock.ronn +47 -0
- data/man/bundle-open.1 +32 -0
- data/man/bundle-open.1.txt +29 -0
- data/man/bundle-open.ronn +19 -0
- data/man/bundle-outdated.1 +155 -0
- data/man/bundle-outdated.1.txt +131 -0
- data/man/bundle-outdated.ronn +111 -0
- data/{lib/bundler/man/bundle-package → man/bundle-package.1} +6 -3
- data/man/bundle-package.1.txt +79 -0
- data/man/bundle-package.ronn +7 -2
- data/{lib/bundler/man/bundle-platform → man/bundle-platform.1} +1 -1
- data/man/bundle-platform.1.txt +57 -0
- data/man/bundle-pristine.1 +34 -0
- data/man/bundle-pristine.1.txt +44 -0
- data/man/bundle-pristine.ronn +34 -0
- 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 +23 -0
- data/man/bundle-show.1.txt +27 -0
- data/man/bundle-show.ronn +21 -0
- data/man/bundle-update.1 +394 -0
- data/man/bundle-update.1.txt +391 -0
- data/man/bundle-update.ronn +172 -16
- data/man/bundle-viz.1 +39 -0
- data/man/bundle-viz.1.txt +39 -0
- data/man/bundle-viz.ronn +30 -0
- data/{lib/bundler/man/bundle → man/bundle.1} +44 -28
- data/man/bundle.1.txt +116 -0
- data/man/bundle.ronn +39 -27
- data/{lib/bundler/man → man}/gemfile.5 +67 -84
- data/man/gemfile.5.ronn +77 -55
- data/man/gemfile.5.txt +653 -0
- data/man/index.txt +25 -8
- metadata +118 -58
- data/.codeclimate.yml +0 -25
- data/.gitignore +0 -16
- data/.rspec +0 -3
- data/.rubocop.yml +0 -128
- data/.rubocop_todo.yml +0 -248
- data/.travis.yml +0 -108
- data/CODE_OF_CONDUCT.md +0 -42
- data/CONTRIBUTING.md +0 -36
- data/DEVELOPMENT.md +0 -148
- data/ISSUES.md +0 -100
- data/Rakefile +0 -333
- data/bin/rake +0 -19
- data/bin/rspec +0 -15
- data/bin/rubocop +0 -17
- data/bin/with_rubygems +0 -39
- data/lib/bundler/man/bundle-binstubs.txt +0 -33
- data/lib/bundler/man/bundle-config +0 -254
- data/lib/bundler/man/bundle-config.txt +0 -282
- data/lib/bundler/man/bundle-exec.txt +0 -171
- data/lib/bundler/man/bundle-gem.txt +0 -90
- data/lib/bundler/man/bundle-install.txt +0 -385
- data/lib/bundler/man/bundle-lock.txt +0 -52
- data/lib/bundler/man/bundle-package.txt +0 -74
- data/lib/bundler/man/bundle-platform.txt +0 -57
- data/lib/bundler/man/bundle-update +0 -221
- data/lib/bundler/man/bundle-update.txt +0 -227
- data/lib/bundler/man/bundle.txt +0 -104
- data/lib/bundler/man/gemfile.5.txt +0 -636
- data/lib/bundler/postit_trampoline.rb +0 -68
- data/lib/bundler/vendor/compact_index_client/lib/compact_index_client.rb +0 -79
- data/lib/bundler/vendor/compact_index_client/lib/compact_index_client/cache.rb +0 -112
- data/lib/bundler/vendor/compact_index_client/lib/compact_index_client/updater.rb +0 -80
- data/lib/bundler/vendor/compact_index_client/lib/compact_index_client/version.rb +0 -4
- data/lib/bundler/vendor/postit/lib/postit.rb +0 -15
- 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
@@ -0,0 +1,76 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bundler
|
4
|
+
module VersionRanges
|
5
|
+
NEq = Struct.new(:version)
|
6
|
+
ReqR = Struct.new(:left, :right)
|
7
|
+
class ReqR
|
8
|
+
Endpoint = Struct.new(:version, :inclusive)
|
9
|
+
def to_s
|
10
|
+
"#{left.inclusive ? "[" : "("}#{left.version}, #{right.version}#{right.inclusive ? "]" : ")"}"
|
11
|
+
end
|
12
|
+
INFINITY = Object.new.freeze
|
13
|
+
ZERO = Gem::Version.new("0.a")
|
14
|
+
|
15
|
+
def cover?(v)
|
16
|
+
return false if left.inclusive && left.version > v
|
17
|
+
return false if !left.inclusive && left.version >= v
|
18
|
+
|
19
|
+
if right.version != INFINITY
|
20
|
+
return false if right.inclusive && right.version < v
|
21
|
+
return false if !right.inclusive && right.version <= v
|
22
|
+
end
|
23
|
+
|
24
|
+
true
|
25
|
+
end
|
26
|
+
|
27
|
+
def empty?
|
28
|
+
left.version == right.version && !(left.inclusive && right.inclusive)
|
29
|
+
end
|
30
|
+
|
31
|
+
def single?
|
32
|
+
left.version == right.version
|
33
|
+
end
|
34
|
+
|
35
|
+
UNIVERSAL = ReqR.new(ReqR::Endpoint.new(Gem::Version.new("0.a"), true), ReqR::Endpoint.new(ReqR::INFINITY, false)).freeze
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.for_many(requirements)
|
39
|
+
requirements = requirements.map(&:requirements).flatten(1).map {|r| r.join(" ") }
|
40
|
+
requirements << ">= 0.a" if requirements.empty?
|
41
|
+
requirement = Gem::Requirement.new(requirements)
|
42
|
+
self.for(requirement)
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.for(requirement)
|
46
|
+
ranges = requirement.requirements.map do |op, v|
|
47
|
+
case op
|
48
|
+
when "=" then ReqR.new(ReqR::Endpoint.new(v, true), ReqR::Endpoint.new(v, true))
|
49
|
+
when "!=" then NEq.new(v)
|
50
|
+
when ">=" then ReqR.new(ReqR::Endpoint.new(v, true), ReqR::Endpoint.new(ReqR::INFINITY, false))
|
51
|
+
when ">" then ReqR.new(ReqR::Endpoint.new(v, false), ReqR::Endpoint.new(ReqR::INFINITY, false))
|
52
|
+
when "<" then ReqR.new(ReqR::Endpoint.new(ReqR::ZERO, true), ReqR::Endpoint.new(v, false))
|
53
|
+
when "<=" then ReqR.new(ReqR::Endpoint.new(ReqR::ZERO, true), ReqR::Endpoint.new(v, true))
|
54
|
+
when "~>" then ReqR.new(ReqR::Endpoint.new(v, true), ReqR::Endpoint.new(v.bump, false))
|
55
|
+
else raise "unknown version op #{op} in requirement #{requirement}"
|
56
|
+
end
|
57
|
+
end.uniq
|
58
|
+
ranges, neqs = ranges.partition {|r| !r.is_a?(NEq) }
|
59
|
+
|
60
|
+
[ranges.sort_by {|range| [range.left.version, range.left.inclusive ? 0 : 1] }, neqs.map(&:version)]
|
61
|
+
end
|
62
|
+
|
63
|
+
def self.empty?(ranges, neqs)
|
64
|
+
!ranges.reduce(ReqR::UNIVERSAL) do |last_range, curr_range|
|
65
|
+
next false unless last_range
|
66
|
+
next false if curr_range.single? && neqs.include?(curr_range.left.version)
|
67
|
+
next curr_range if last_range.right.version == ReqR::INFINITY
|
68
|
+
case last_range.right.version <=> curr_range.left.version
|
69
|
+
when 1 then next curr_range
|
70
|
+
when 0 then next(last_range.right.inclusive && curr_range.left.inclusive && !neqs.include?(curr_range.left.version) && curr_range)
|
71
|
+
when -1 then next false
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
data/lib/bundler/vlad.rb
CHANGED
data/lib/bundler/worker.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require "thread"
|
3
4
|
|
4
5
|
module Bundler
|
@@ -25,18 +26,16 @@ module Bundler
|
|
25
26
|
@request_queue = Queue.new
|
26
27
|
@response_queue = Queue.new
|
27
28
|
@func = func
|
28
|
-
@
|
29
|
-
|
30
|
-
|
31
|
-
end
|
32
|
-
end
|
33
|
-
trap("INT") { abort_threads }
|
29
|
+
@size = size
|
30
|
+
@threads = nil
|
31
|
+
SharedHelpers.trap("INT") { abort_threads }
|
34
32
|
end
|
35
33
|
|
36
34
|
# Enqueue a request to be executed in the worker pool
|
37
35
|
#
|
38
36
|
# @param obj [String] mostly it is name of spec that should be downloaded
|
39
37
|
def enq(obj)
|
38
|
+
create_threads unless @threads
|
40
39
|
@request_queue.enq obj
|
41
40
|
end
|
42
41
|
|
@@ -70,13 +69,38 @@ module Bundler
|
|
70
69
|
# Stop the worker threads by sending a poison object down the request queue
|
71
70
|
# so as worker threads after retrieving it, shut themselves down
|
72
71
|
def stop_threads
|
72
|
+
return unless @threads
|
73
73
|
@threads.each { @request_queue.enq POISON }
|
74
74
|
@threads.each(&:join)
|
75
|
+
@threads = nil
|
75
76
|
end
|
76
77
|
|
77
78
|
def abort_threads
|
79
|
+
return unless @threads
|
80
|
+
Bundler.ui.debug("\n#{caller.join("\n")}")
|
78
81
|
@threads.each(&:exit)
|
79
82
|
exit 1
|
80
83
|
end
|
84
|
+
|
85
|
+
def create_threads
|
86
|
+
creation_errors = []
|
87
|
+
|
88
|
+
@threads = Array.new(@size) do |i|
|
89
|
+
begin
|
90
|
+
Thread.start { process_queue(i) }.tap do |thread|
|
91
|
+
thread.name = "#{name} Worker ##{i}" if thread.respond_to?(:name=)
|
92
|
+
end
|
93
|
+
rescue ThreadError => e
|
94
|
+
creation_errors << e
|
95
|
+
nil
|
96
|
+
end
|
97
|
+
end.compact
|
98
|
+
|
99
|
+
return if creation_errors.empty?
|
100
|
+
|
101
|
+
message = "Failed to create threads for the #{name} worker: #{creation_errors.map(&:to_s).uniq.join(", ")}"
|
102
|
+
raise ThreadCreationError, message if @threads.empty?
|
103
|
+
Bundler.ui.info message
|
104
|
+
end
|
81
105
|
end
|
82
106
|
end
|
@@ -37,7 +37,7 @@ module Bundler
|
|
37
37
|
HASH_REGEX = /
|
38
38
|
^
|
39
39
|
([ ]*) # indentations
|
40
|
-
(
|
40
|
+
(.+) # key
|
41
41
|
(?::(?=(?:\s|$))) # : (without the lookahead the #key includes this when : is present in value)
|
42
42
|
[ ]?
|
43
43
|
(?: !\s)? # optional exclamation mark found with ruby 1.9.3
|
@@ -52,12 +52,12 @@ module Bundler
|
|
52
52
|
stack = [res]
|
53
53
|
last_hash = nil
|
54
54
|
last_empty_key = nil
|
55
|
-
str.split(
|
55
|
+
str.split(/\r?\n/).each do |line|
|
56
56
|
if match = HASH_REGEX.match(line)
|
57
|
-
indent, key,
|
57
|
+
indent, key, quote, val = match.captures
|
58
58
|
key = convert_to_backward_compatible_key(key)
|
59
59
|
depth = indent.scan(/ /).length
|
60
|
-
if val.empty?
|
60
|
+
if quote.empty? && val.empty?
|
61
61
|
new_hash = {}
|
62
62
|
stack[depth][key] = new_hash
|
63
63
|
stack[depth + 1] = new_hash
|
data/man/bundle-add.1
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
.\" generated with Ronn/v0.7.3
|
2
|
+
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
|
+
.
|
4
|
+
.TH "BUNDLE\-ADD" "1" "December 2018" "" ""
|
5
|
+
.
|
6
|
+
.SH "NAME"
|
7
|
+
\fBbundle\-add\fR \- Add gem to the Gemfile and run bundle install
|
8
|
+
.
|
9
|
+
.SH "SYNOPSIS"
|
10
|
+
\fBbundle add\fR \fIGEM_NAME\fR [\-\-group=GROUP] [\-\-version=VERSION] [\-\-source=SOURCE] [\-\-skip\-install] [\-\-strict] [\-\-optimistic]
|
11
|
+
.
|
12
|
+
.SH "DESCRIPTION"
|
13
|
+
Adds the named gem to the Gemfile and run \fBbundle install\fR\. \fBbundle install\fR can be avoided by using the flag \fB\-\-skip\-install\fR\.
|
14
|
+
.
|
15
|
+
.P
|
16
|
+
Example:
|
17
|
+
.
|
18
|
+
.P
|
19
|
+
bundle add rails
|
20
|
+
.
|
21
|
+
.P
|
22
|
+
bundle add rails \-\-version "< 3\.0, > 1\.1"
|
23
|
+
.
|
24
|
+
.P
|
25
|
+
bundle add rails \-\-version "~> 5\.0\.0" \-\-source "https://gems\.example\.com" \-\-group "development"
|
26
|
+
.
|
27
|
+
.P
|
28
|
+
bundle add rails \-\-skip\-install
|
29
|
+
.
|
30
|
+
.P
|
31
|
+
bundle add rails \-\-group "development, test"
|
32
|
+
.
|
33
|
+
.SH "OPTIONS"
|
34
|
+
.
|
35
|
+
.TP
|
36
|
+
\fB\-\-version\fR, \fB\-v\fR
|
37
|
+
Specify version requirements(s) for the added gem\.
|
38
|
+
.
|
39
|
+
.TP
|
40
|
+
\fB\-\-group\fR, \fB\-g\fR
|
41
|
+
Specify the group(s) for the added gem\. Multiple groups should be separated by commas\.
|
42
|
+
.
|
43
|
+
.TP
|
44
|
+
\fB\-\-source\fR, , \fB\-s\fR
|
45
|
+
Specify the source for the added gem\.
|
46
|
+
.
|
47
|
+
.TP
|
48
|
+
\fB\-\-skip\-install\fR
|
49
|
+
Adds the gem to the Gemfile but does not install it\.
|
50
|
+
.
|
51
|
+
.TP
|
52
|
+
\fB\-\-optimistic\fR
|
53
|
+
Adds optimistic declaration of version
|
54
|
+
.
|
55
|
+
.TP
|
56
|
+
\fB\-\-strict\fR
|
57
|
+
Adds strict declaration of version
|
58
|
+
|
@@ -0,0 +1,52 @@
|
|
1
|
+
BUNDLE-ADD(1) BUNDLE-ADD(1)
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
NAME
|
6
|
+
bundle-add - Add gem to the Gemfile and run bundle install
|
7
|
+
|
8
|
+
SYNOPSIS
|
9
|
+
bundle add GEM_NAME [--group=GROUP] [--version=VERSION]
|
10
|
+
[--source=SOURCE] [--skip-install] [--strict] [--optimistic]
|
11
|
+
|
12
|
+
DESCRIPTION
|
13
|
+
Adds the named gem to the Gemfile and run bundle install. bundle
|
14
|
+
install can be avoided by using the flag --skip-install.
|
15
|
+
|
16
|
+
Example:
|
17
|
+
|
18
|
+
bundle add rails
|
19
|
+
|
20
|
+
bundle add rails --version "< 3.0, > 1.1"
|
21
|
+
|
22
|
+
bundle add rails --version "~> 5.0.0" --source "https://gems.exam-
|
23
|
+
ple.com" --group "development"
|
24
|
+
|
25
|
+
bundle add rails --skip-install
|
26
|
+
|
27
|
+
bundle add rails --group "development, test"
|
28
|
+
|
29
|
+
OPTIONS
|
30
|
+
--version, -v
|
31
|
+
Specify version requirements(s) for the added gem.
|
32
|
+
|
33
|
+
--group, -g
|
34
|
+
Specify the group(s) for the added gem. Multiple groups should
|
35
|
+
be separated by commas.
|
36
|
+
|
37
|
+
--source, , -s
|
38
|
+
Specify the source for the added gem.
|
39
|
+
|
40
|
+
--skip-install
|
41
|
+
Adds the gem to the Gemfile but does not install it.
|
42
|
+
|
43
|
+
--optimistic
|
44
|
+
Adds optimistic declaration of version
|
45
|
+
|
46
|
+
--strict
|
47
|
+
Adds strict declaration of version
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
|
52
|
+
December 2018 BUNDLE-ADD(1)
|
data/man/bundle-add.ronn
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
bundle-add(1) -- Add gem to the Gemfile and run bundle install
|
2
|
+
================================================================
|
3
|
+
|
4
|
+
## SYNOPSIS
|
5
|
+
|
6
|
+
`bundle add` <GEM_NAME> [--group=GROUP] [--version=VERSION] [--source=SOURCE] [--skip-install] [--strict] [--optimistic]
|
7
|
+
|
8
|
+
## DESCRIPTION
|
9
|
+
Adds the named gem to the Gemfile and run `bundle install`. `bundle install` can be avoided by using the flag `--skip-install`.
|
10
|
+
|
11
|
+
Example:
|
12
|
+
|
13
|
+
bundle add rails
|
14
|
+
|
15
|
+
bundle add rails --version "< 3.0, > 1.1"
|
16
|
+
|
17
|
+
bundle add rails --version "~> 5.0.0" --source "https://gems.example.com" --group "development"
|
18
|
+
|
19
|
+
bundle add rails --skip-install
|
20
|
+
|
21
|
+
bundle add rails --group "development, test"
|
22
|
+
|
23
|
+
## OPTIONS
|
24
|
+
* `--version`, `-v`:
|
25
|
+
Specify version requirements(s) for the added gem.
|
26
|
+
|
27
|
+
* `--group`, `-g`:
|
28
|
+
Specify the group(s) for the added gem. Multiple groups should be separated by commas.
|
29
|
+
|
30
|
+
* `--source`, , `-s`:
|
31
|
+
Specify the source for the added gem.
|
32
|
+
|
33
|
+
* `--skip-install`:
|
34
|
+
Adds the gem to the Gemfile but does not install it.
|
35
|
+
|
36
|
+
* `--optimistic`:
|
37
|
+
Adds optimistic declaration of version
|
38
|
+
|
39
|
+
* `--strict`:
|
40
|
+
Adds strict declaration of version
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "BUNDLE\-BINSTUBS" "1" "
|
4
|
+
.TH "BUNDLE\-BINSTUBS" "1" "November 2018" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBbundle\-binstubs\fR \- Install the binstubs of the listed gems
|
@@ -10,6 +10,12 @@
|
|
10
10
|
\fBbundle binstubs\fR \fIGEM_NAME\fR [\-\-force] [\-\-path PATH] [\-\-standalone]
|
11
11
|
.
|
12
12
|
.SH "DESCRIPTION"
|
13
|
+
Binstubs are scripts that wrap around executables\. Bundler creates a small Ruby file (a binstub) that loads Bundler, runs the command, and puts it into \fBbin/\fR\. Binstubs are a shortcut\-or alternative\- to always using \fBbundle exec\fR\. This gives you a file that can by run directly, and one that will always run the correct gem version used by the application\.
|
14
|
+
.
|
15
|
+
.P
|
16
|
+
For example, if you run \fBbundle binstubs rspec\-core\fR, Bundler will create the file \fBbin/rspec\fR\. That file will contain enough code to load Bundler, tell it to load the bundled gems, and then run rspec\.
|
17
|
+
.
|
18
|
+
.P
|
13
19
|
This command generates binstubs for executables in \fBGEM_NAME\fR\. Binstubs are put into \fBbin\fR, or the \fB\-\-path\fR directory if one has been set\. Calling binstubs with [GEM [GEM]] will create binstubs for all given gems\.
|
14
20
|
.
|
15
21
|
.SH "OPTIONS"
|
@@ -26,5 +32,9 @@ The location to install the specified binstubs to\. This defaults to \fBbin\fR\.
|
|
26
32
|
\fB\-\-standalone\fR
|
27
33
|
Makes binstubs that can work without depending on Rubygems or Bundler at runtime\.
|
28
34
|
.
|
35
|
+
.TP
|
36
|
+
\fB\-\-shebang\fR
|
37
|
+
Specify a different shebang executable name than the default (default \'ruby\')
|
38
|
+
.
|
29
39
|
.SH "BUNDLE INSTALL \-\-BINSTUBS"
|
30
40
|
To create binstubs for all the gems in the bundle you can use the \fB\-\-binstubs\fR flag in bundle install(1) \fIbundle\-install\.1\.html\fR\.
|
@@ -0,0 +1,48 @@
|
|
1
|
+
BUNDLE-BINSTUBS(1) BUNDLE-BINSTUBS(1)
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
NAME
|
6
|
+
bundle-binstubs - Install the binstubs of the listed gems
|
7
|
+
|
8
|
+
SYNOPSIS
|
9
|
+
bundle binstubs GEM_NAME [--force] [--path PATH] [--standalone]
|
10
|
+
|
11
|
+
DESCRIPTION
|
12
|
+
Binstubs are scripts that wrap around executables. Bundler creates a
|
13
|
+
small Ruby file (a binstub) that loads Bundler, runs the command, and
|
14
|
+
puts it into bin/. Binstubs are a shortcut-or alternative- to always
|
15
|
+
using bundle exec. This gives you a file that can by run directly, and
|
16
|
+
one that will always run the correct gem version used by the applica-
|
17
|
+
tion.
|
18
|
+
|
19
|
+
For example, if you run bundle binstubs rspec-core, Bundler will create
|
20
|
+
the file bin/rspec. That file will contain enough code to load Bundler,
|
21
|
+
tell it to load the bundled gems, and then run rspec.
|
22
|
+
|
23
|
+
This command generates binstubs for executables in GEM_NAME. Binstubs
|
24
|
+
are put into bin, or the --path directory if one has been set. Calling
|
25
|
+
binstubs with [GEM [GEM]] will create binstubs for all given gems.
|
26
|
+
|
27
|
+
OPTIONS
|
28
|
+
--force
|
29
|
+
Overwrite existing binstubs if they exist.
|
30
|
+
|
31
|
+
--path The location to install the specified binstubs to. This defaults
|
32
|
+
to bin.
|
33
|
+
|
34
|
+
--standalone
|
35
|
+
Makes binstubs that can work without depending on Rubygems or
|
36
|
+
Bundler at runtime.
|
37
|
+
|
38
|
+
--shebang
|
39
|
+
Specify a different shebang executable name than the default
|
40
|
+
(default 'ruby')
|
41
|
+
|
42
|
+
BUNDLE INSTALL --BINSTUBS
|
43
|
+
To create binstubs for all the gems in the bundle you can use the
|
44
|
+
--binstubs flag in bundle install(1) bundle-install.1.html.
|
45
|
+
|
46
|
+
|
47
|
+
|
48
|
+
November 2018 BUNDLE-BINSTUBS(1)
|
data/man/bundle-binstubs.ronn
CHANGED
@@ -7,6 +7,17 @@ bundle-binstubs(1) -- Install the binstubs of the listed gems
|
|
7
7
|
|
8
8
|
## DESCRIPTION
|
9
9
|
|
10
|
+
Binstubs are scripts that wrap around executables. Bundler creates a
|
11
|
+
small Ruby file (a binstub) that loads Bundler, runs the command,
|
12
|
+
and puts it into `bin/`. Binstubs are a shortcut-or alternative-
|
13
|
+
to always using `bundle exec`. This gives you a file that can by run
|
14
|
+
directly, and one that will always run the correct gem version
|
15
|
+
used by the application.
|
16
|
+
|
17
|
+
For example, if you run `bundle binstubs rspec-core`, Bundler will create
|
18
|
+
the file `bin/rspec`. That file will contain enough code to load Bundler,
|
19
|
+
tell it to load the bundled gems, and then run rspec.
|
20
|
+
|
10
21
|
This command generates binstubs for executables in `GEM_NAME`.
|
11
22
|
Binstubs are put into `bin`, or the `--path` directory if one has been set.
|
12
23
|
Calling binstubs with [GEM [GEM]] will create binstubs for all given gems.
|
@@ -23,7 +34,10 @@ Calling binstubs with [GEM [GEM]] will create binstubs for all given gems.
|
|
23
34
|
Makes binstubs that can work without depending on Rubygems or Bundler at
|
24
35
|
runtime.
|
25
36
|
|
37
|
+
* `--shebang`:
|
38
|
+
Specify a different shebang executable name than the default (default 'ruby')
|
39
|
+
|
26
40
|
## BUNDLE INSTALL --BINSTUBS
|
27
41
|
|
28
42
|
To create binstubs for all the gems in the bundle you can use the `--binstubs`
|
29
|
-
flag in [bundle install(1)]
|
43
|
+
flag in [bundle install(1)](bundle-install.1.html).
|