rubygems-update 3.2.5 → 3.2.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +50 -0
- data/Manifest.txt +2 -0
- data/Rakefile +15 -14
- data/bundler/CHANGELOG.md +73 -0
- data/bundler/lib/bundler.rb +1 -1
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/cli.rb +1 -0
- data/bundler/lib/bundler/cli/cache.rb +1 -0
- data/bundler/lib/bundler/cli/gem.rb +12 -0
- data/bundler/lib/bundler/definition.rb +66 -56
- data/bundler/lib/bundler/dep_proxy.rb +15 -8
- data/bundler/lib/bundler/dsl.rb +38 -25
- data/bundler/lib/bundler/feature_flag.rb +0 -2
- data/bundler/lib/bundler/fetcher.rb +0 -1
- data/bundler/lib/bundler/gem_helper.rb +8 -6
- data/bundler/lib/bundler/gem_version_promoter.rb +2 -2
- data/bundler/lib/bundler/index.rb +6 -5
- data/bundler/lib/bundler/inline.rb +1 -0
- data/bundler/lib/bundler/installer.rb +0 -17
- data/bundler/lib/bundler/installer/standalone.rb +15 -0
- data/bundler/lib/bundler/lazy_specification.rb +9 -18
- data/bundler/lib/bundler/lockfile_parser.rb +12 -8
- data/bundler/lib/bundler/man/bundle-add.1 +1 -1
- data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/bundler/lib/bundler/man/bundle-cache.1 +1 -1
- data/bundler/lib/bundler/man/bundle-check.1 +1 -1
- data/bundler/lib/bundler/man/bundle-clean.1 +1 -1
- data/bundler/lib/bundler/man/bundle-config.1 +6 -12
- data/bundler/lib/bundler/man/bundle-config.1.ronn +11 -18
- data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/lib/bundler/man/bundle-exec.1 +1 -1
- data/bundler/lib/bundler/man/bundle-gem.1 +1 -1
- data/bundler/lib/bundler/man/bundle-info.1 +1 -1
- data/bundler/lib/bundler/man/bundle-init.1 +1 -1
- data/bundler/lib/bundler/man/bundle-inject.1 +1 -1
- data/bundler/lib/bundler/man/bundle-install.1 +1 -1
- data/bundler/lib/bundler/man/bundle-list.1 +1 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
- data/bundler/lib/bundler/man/bundle-open.1 +1 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +1 -1
- data/bundler/lib/bundler/man/bundle-platform.1 +1 -1
- data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +1 -1
- data/bundler/lib/bundler/man/bundle-update.1 +1 -1
- data/bundler/lib/bundler/man/bundle-viz.1 +1 -1
- data/bundler/lib/bundler/man/bundle.1 +1 -1
- data/bundler/lib/bundler/man/gemfile.5 +1 -1
- data/bundler/lib/bundler/plugin.rb +1 -0
- data/bundler/lib/bundler/plugin/installer.rb +8 -9
- data/bundler/lib/bundler/resolver.rb +110 -80
- data/bundler/lib/bundler/resolver/spec_group.rb +56 -44
- data/bundler/lib/bundler/rubygems_ext.rb +16 -0
- data/bundler/lib/bundler/settings.rb +1 -2
- data/bundler/lib/bundler/shared_helpers.rb +2 -2
- data/bundler/lib/bundler/source/git.rb +1 -1
- data/bundler/lib/bundler/source/rubygems.rb +10 -2
- data/bundler/lib/bundler/source_list.rb +34 -25
- data/bundler/lib/bundler/spec_set.rb +5 -4
- data/bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +7 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +11 -5
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +2 -2
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +11 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +11 -7
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +5 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +4 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +5 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +9 -8
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +5 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +5 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/version.rb +1 -1
- data/lib/rubygems.rb +3 -3
- data/lib/rubygems/command.rb +1 -0
- data/lib/rubygems/dependency.rb +5 -1
- data/lib/rubygems/ext/builder.rb +2 -1
- data/lib/rubygems/installer_uninstaller_utils.rb +6 -1
- data/lib/rubygems/platform.rb +0 -4
- data/lib/rubygems/requirement.rb +1 -1
- data/lib/rubygems/resolver/index_specification.rb +4 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +7 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +0 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +11 -5
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +2 -2
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +11 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +11 -7
- data/lib/rubygems/specification.rb +13 -11
- data/lib/rubygems/test_case.rb +5 -6
- data/rubygems-update.gemspec +1 -1
- data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
- data/test/rubygems/test_gem.rb +85 -8
- data/test/rubygems/test_gem_commands_outdated_command.rb +18 -0
- data/test/rubygems/test_gem_dependency_installer.rb +27 -18
- data/test/rubygems/test_gem_ext_builder.rb +24 -0
- data/test/rubygems/test_gem_installer.rb +2 -0
- data/test/rubygems/test_gem_platform.rb +8 -0
- data/test/rubygems/test_gem_requirement.rb +35 -1
- data/test/rubygems/test_gem_specification.rb +10 -15
- data/test/rubygems/test_gem_stream_ui.rb +1 -1
- data/test/rubygems/test_gem_util.rb +4 -4
- metadata +5 -3
@@ -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\-CACHE" "1" "
|
4
|
+
.TH "BUNDLE\-CACHE" "1" "January 2021" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBbundle\-cache\fR \- Package your needed \fB\.gem\fR files into your application
|
@@ -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\-CHECK" "1" "
|
4
|
+
.TH "BUNDLE\-CHECK" "1" "January 2021" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBbundle\-check\fR \- Verifies if dependencies are satisfied by installed gems
|
@@ -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\-CLEAN" "1" "
|
4
|
+
.TH "BUNDLE\-CLEAN" "1" "January 2021" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBbundle\-clean\fR \- Cleans up unused gems in your bundler directory
|
@@ -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\-CONFIG" "1" "
|
4
|
+
.TH "BUNDLE\-CONFIG" "1" "January 2021" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBbundle\-config\fR \- Set bundler configuration options
|
@@ -56,9 +56,6 @@ Executing \fBbundle config unset \-\-local <name> <value>\fR will delete the con
|
|
56
56
|
.P
|
57
57
|
Executing bundle with the \fBBUNDLE_IGNORE_CONFIG\fR environment variable set will cause it to ignore all configuration\.
|
58
58
|
.
|
59
|
-
.P
|
60
|
-
Executing \fBbundle config set \-\-local disable_multisource true\fR upgrades the warning about the Gemfile containing multiple primary sources to an error\. Executing \fBbundle config unset disable_multisource\fR downgrades this error to a warning\.
|
61
|
-
.
|
62
59
|
.SH "REMEMBERING OPTIONS"
|
63
60
|
Flags passed to \fBbundle install\fR or the Bundler runtime, such as \fB\-\-path foo\fR or \fB\-\-without production\fR, are remembered between commands and saved to your local application\'s configuration (normally, \fB\./\.bundle/config\fR)\.
|
64
61
|
.
|
@@ -136,9 +133,6 @@ Any periods in the configuration keys must be replaced with two underscores when
|
|
136
133
|
The following is a list of all configuration keys and their purpose\. You can learn more about their operation in bundle install(1) \fIbundle\-install\.1\.html\fR\.
|
137
134
|
.
|
138
135
|
.IP "\(bu" 4
|
139
|
-
\fBallow_bundler_dependency_conflicts\fR (\fBBUNDLE_ALLOW_BUNDLER_DEPENDENCY_CONFLICTS\fR): Allow resolving to specifications that have dependencies on \fBbundler\fR that are incompatible with the running Bundler version\.
|
140
|
-
.
|
141
|
-
.IP "\(bu" 4
|
142
136
|
\fBallow_deployment_source_credential_changes\fR (\fBBUNDLE_ALLOW_DEPLOYMENT_SOURCE_CREDENTIAL_CHANGES\fR): When in deployment mode, allow changing the credentials to a gem\'s source\. Ex: \fBhttps://some\.host\.com/gems/path/\fR \-> \fBhttps://user_name:password@some\.host\.com/gems/path\fR
|
143
137
|
.
|
144
138
|
.IP "\(bu" 4
|
@@ -184,7 +178,7 @@ The following is a list of all configuration keys and their purpose\. You can le
|
|
184
178
|
\fBdisable_local_branch_check\fR (\fBBUNDLE_DISABLE_LOCAL_BRANCH_CHECK\fR): Allow Bundler to use a local git override without a branch specified in the Gemfile\.
|
185
179
|
.
|
186
180
|
.IP "\(bu" 4
|
187
|
-
\
|
181
|
+
\fBdisable_local_revision_check\fR (\fBBUNDLE_DISABLE_LOCAL_REVISION_CHECK\fR): Allow Bundler to use a local git override without checking if the revision present in the lockfile is present in the repository\.
|
188
182
|
.
|
189
183
|
.IP "\(bu" 4
|
190
184
|
\fBdisable_shared_gems\fR (\fBBUNDLE_DISABLE_SHARED_GEMS\fR): Stop Bundler from accessing gems installed to RubyGems\' normal location\.
|
@@ -211,10 +205,10 @@ The following is a list of all configuration keys and their purpose\. You can le
|
|
211
205
|
\fBignore_messages\fR (\fBBUNDLE_IGNORE_MESSAGES\fR): When set, no post install messages will be printed\. To silence a single gem, use dot notation like \fBignore_messages\.httparty true\fR\.
|
212
206
|
.
|
213
207
|
.IP "\(bu" 4
|
214
|
-
\fBinit_gems_rb\fR (\fBBUNDLE_INIT_GEMS_RB\fR) Generate a \fBgems\.rb\fR instead of a \fBGemfile\fR when running \fBbundle init\fR\.
|
208
|
+
\fBinit_gems_rb\fR (\fBBUNDLE_INIT_GEMS_RB\fR): Generate a \fBgems\.rb\fR instead of a \fBGemfile\fR when running \fBbundle init\fR\.
|
215
209
|
.
|
216
210
|
.IP "\(bu" 4
|
217
|
-
\fBjobs\fR (\fBBUNDLE_JOBS\fR): The number of gems Bundler can install in parallel\. Defaults to 1\.
|
211
|
+
\fBjobs\fR (\fBBUNDLE_JOBS\fR): The number of gems Bundler can install in parallel\. Defaults to 1 on Windows, and to the the number of processors on other platforms\.
|
218
212
|
.
|
219
213
|
.IP "\(bu" 4
|
220
214
|
\fBno_install\fR (\fBBUNDLE_NO_INSTALL\fR): Whether \fBbundle package\fR should skip installing gems\.
|
@@ -241,7 +235,7 @@ The following is a list of all configuration keys and their purpose\. You can le
|
|
241
235
|
\fBprefer_patch\fR (BUNDLE_PREFER_PATCH): Prefer updating only to next patch version during updates\. Makes \fBbundle update\fR calls equivalent to \fBbundler update \-\-patch\fR\.
|
242
236
|
.
|
243
237
|
.IP "\(bu" 4
|
244
|
-
\fBprint_only_version_number\fR (\fBBUNDLE_PRINT_ONLY_VERSION_NUMBER\fR) Print only version number from \fBbundler \-\-version\fR\.
|
238
|
+
\fBprint_only_version_number\fR (\fBBUNDLE_PRINT_ONLY_VERSION_NUMBER\fR): Print only version number from \fBbundler \-\-version\fR\.
|
245
239
|
.
|
246
240
|
.IP "\(bu" 4
|
247
241
|
\fBredirect\fR (\fBBUNDLE_REDIRECT\fR): The number of redirects allowed for network requests\. Defaults to \fB5\fR\.
|
@@ -283,7 +277,7 @@ The following is a list of all configuration keys and their purpose\. You can le
|
|
283
277
|
\fBunlock_source_unlocks_spec\fR (\fBBUNDLE_UNLOCK_SOURCE_UNLOCKS_SPEC\fR): Whether running \fBbundle update \-\-source NAME\fR unlocks a gem with the given name\. Defaults to \fBtrue\fR\.
|
284
278
|
.
|
285
279
|
.IP "\(bu" 4
|
286
|
-
\fBupdate_requires_all_flag\fR (\fBBUNDLE_UPDATE_REQUIRES_ALL_FLAG\fR) Require passing \fB\-\-all\fR to \fBbundle update\fR when everything should be updated, and disallow passing no options to \fBbundle update\fR\.
|
280
|
+
\fBupdate_requires_all_flag\fR (\fBBUNDLE_UPDATE_REQUIRES_ALL_FLAG\fR): Require passing \fB\-\-all\fR to \fBbundle update\fR when everything should be updated, and disallow passing no options to \fBbundle update\fR\.
|
287
281
|
.
|
288
282
|
.IP "\(bu" 4
|
289
283
|
\fBuser_agent\fR (\fBBUNDLE_USER_AGENT\fR): The custom user agent fragment Bundler includes in API requests\.
|
@@ -47,10 +47,6 @@ configuration only from the local application.
|
|
47
47
|
Executing bundle with the `BUNDLE_IGNORE_CONFIG` environment variable set will
|
48
48
|
cause it to ignore all configuration.
|
49
49
|
|
50
|
-
Executing `bundle config set --local disable_multisource true` upgrades the warning about
|
51
|
-
the Gemfile containing multiple primary sources to an error. Executing `bundle
|
52
|
-
config unset disable_multisource` downgrades this error to a warning.
|
53
|
-
|
54
50
|
## REMEMBERING OPTIONS
|
55
51
|
|
56
52
|
Flags passed to `bundle install` or the Bundler runtime, such as `--path foo` or
|
@@ -133,9 +129,6 @@ the environment variable `BUNDLE_LOCAL__RACK`.
|
|
133
129
|
The following is a list of all configuration keys and their purpose. You can
|
134
130
|
learn more about their operation in [bundle install(1)](bundle-install.1.html).
|
135
131
|
|
136
|
-
* `allow_bundler_dependency_conflicts` (`BUNDLE_ALLOW_BUNDLER_DEPENDENCY_CONFLICTS`):
|
137
|
-
Allow resolving to specifications that have dependencies on `bundler` that
|
138
|
-
are incompatible with the running Bundler version.
|
139
132
|
* `allow_deployment_source_credential_changes` (`BUNDLE_ALLOW_DEPLOYMENT_SOURCE_CREDENTIAL_CHANGES`):
|
140
133
|
When in deployment mode, allow changing the credentials to a gem's source.
|
141
134
|
Ex: `https://some.host.com/gems/path/` -> `https://user_name:password@some.host.com/gems/path`
|
@@ -178,10 +171,9 @@ learn more about their operation in [bundle install(1)](bundle-install.1.html).
|
|
178
171
|
* `disable_local_branch_check` (`BUNDLE_DISABLE_LOCAL_BRANCH_CHECK`):
|
179
172
|
Allow Bundler to use a local git override without a branch specified in the
|
180
173
|
Gemfile.
|
181
|
-
* `
|
182
|
-
|
183
|
-
|
184
|
-
Use `bundle config unset disable_multisource` to unset.
|
174
|
+
* `disable_local_revision_check` (`BUNDLE_DISABLE_LOCAL_REVISION_CHECK`):
|
175
|
+
Allow Bundler to use a local git override without checking if the revision
|
176
|
+
present in the lockfile is present in the repository.
|
185
177
|
* `disable_shared_gems` (`BUNDLE_DISABLE_SHARED_GEMS`):
|
186
178
|
Stop Bundler from accessing gems installed to RubyGems' normal location.
|
187
179
|
* `disable_version_check` (`BUNDLE_DISABLE_VERSION_CHECK`):
|
@@ -206,13 +198,14 @@ learn more about their operation in [bundle install(1)](bundle-install.1.html).
|
|
206
198
|
* `global_gem_cache` (`BUNDLE_GLOBAL_GEM_CACHE`):
|
207
199
|
Whether Bundler should cache all gems globally, rather than locally to the
|
208
200
|
installing Ruby installation.
|
209
|
-
* `ignore_messages` (`BUNDLE_IGNORE_MESSAGES`):
|
210
|
-
messages will be printed. To silence a single gem,
|
211
|
-
`ignore_messages.httparty true`.
|
212
|
-
* `init_gems_rb` (`BUNDLE_INIT_GEMS_RB`)
|
201
|
+
* `ignore_messages` (`BUNDLE_IGNORE_MESSAGES`):
|
202
|
+
When set, no post install messages will be printed. To silence a single gem,
|
203
|
+
use dot notation like `ignore_messages.httparty true`.
|
204
|
+
* `init_gems_rb` (`BUNDLE_INIT_GEMS_RB`):
|
213
205
|
Generate a `gems.rb` instead of a `Gemfile` when running `bundle init`.
|
214
206
|
* `jobs` (`BUNDLE_JOBS`):
|
215
|
-
The number of gems Bundler can install in parallel. Defaults to 1
|
207
|
+
The number of gems Bundler can install in parallel. Defaults to 1 on Windows,
|
208
|
+
and to the the number of processors on other platforms.
|
216
209
|
* `no_install` (`BUNDLE_NO_INSTALL`):
|
217
210
|
Whether `bundle package` should skip installing gems.
|
218
211
|
* `no_prune` (`BUNDLE_NO_PRUNE`):
|
@@ -233,7 +226,7 @@ learn more about their operation in [bundle install(1)](bundle-install.1.html).
|
|
233
226
|
Enable Bundler's experimental plugin system.
|
234
227
|
* `prefer_patch` (BUNDLE_PREFER_PATCH):
|
235
228
|
Prefer updating only to next patch version during updates. Makes `bundle update` calls equivalent to `bundler update --patch`.
|
236
|
-
* `print_only_version_number` (`BUNDLE_PRINT_ONLY_VERSION_NUMBER`)
|
229
|
+
* `print_only_version_number` (`BUNDLE_PRINT_ONLY_VERSION_NUMBER`):
|
237
230
|
Print only version number from `bundler --version`.
|
238
231
|
* `redirect` (`BUNDLE_REDIRECT`):
|
239
232
|
The number of redirects allowed for network requests. Defaults to `5`.
|
@@ -269,7 +262,7 @@ learn more about their operation in [bundle install(1)](bundle-install.1.html).
|
|
269
262
|
* `unlock_source_unlocks_spec` (`BUNDLE_UNLOCK_SOURCE_UNLOCKS_SPEC`):
|
270
263
|
Whether running `bundle update --source NAME` unlocks a gem with the given
|
271
264
|
name. Defaults to `true`.
|
272
|
-
* `update_requires_all_flag` (`BUNDLE_UPDATE_REQUIRES_ALL_FLAG`)
|
265
|
+
* `update_requires_all_flag` (`BUNDLE_UPDATE_REQUIRES_ALL_FLAG`):
|
273
266
|
Require passing `--all` to `bundle update` when everything should be updated,
|
274
267
|
and disallow passing no options to `bundle update`.
|
275
268
|
* `user_agent` (`BUNDLE_USER_AGENT`):
|
@@ -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\-INFO" "1" "
|
4
|
+
.TH "BUNDLE\-INFO" "1" "January 2021" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBbundle\-info\fR \- Show information for the given gem in your bundle
|
@@ -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\-INIT" "1" "
|
4
|
+
.TH "BUNDLE\-INIT" "1" "January 2021" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBbundle\-init\fR \- Generates a Gemfile into the current working directory
|
@@ -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\-INJECT" "1" "
|
4
|
+
.TH "BUNDLE\-INJECT" "1" "January 2021" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBbundle\-inject\fR \- Add named gem(s) with version requirements to Gemfile
|
@@ -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\-INSTALL" "1" "
|
4
|
+
.TH "BUNDLE\-INSTALL" "1" "January 2021" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBbundle\-install\fR \- Install the dependencies specified in your Gemfile
|
@@ -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\-OPEN" "1" "
|
4
|
+
.TH "BUNDLE\-OPEN" "1" "January 2021" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBbundle\-open\fR \- Opens the source directory for a gem in your bundle
|
@@ -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\-OUTDATED" "1" "
|
4
|
+
.TH "BUNDLE\-OUTDATED" "1" "January 2021" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBbundle\-outdated\fR \- List installed gems with newer versions available
|
@@ -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\-PLATFORM" "1" "
|
4
|
+
.TH "BUNDLE\-PLATFORM" "1" "January 2021" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBbundle\-platform\fR \- Displays platform compatibility information
|
@@ -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\-PRISTINE" "1" "
|
4
|
+
.TH "BUNDLE\-PRISTINE" "1" "January 2021" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBbundle\-pristine\fR \- Restores installed gems to their pristine condition
|
@@ -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\-SHOW" "1" "
|
4
|
+
.TH "BUNDLE\-SHOW" "1" "January 2021" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBbundle\-show\fR \- Shows all the gems in your bundle, or the path to a gem
|
@@ -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\-UPDATE" "1" "
|
4
|
+
.TH "BUNDLE\-UPDATE" "1" "January 2021" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBbundle\-update\fR \- Update your gems to the latest available versions
|
@@ -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\-VIZ" "1" "
|
4
|
+
.TH "BUNDLE\-VIZ" "1" "January 2021" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBbundle\-viz\fR \- Generates a visual dependency graph for your Gemfile
|
@@ -16,15 +16,13 @@ module Bundler
|
|
16
16
|
|
17
17
|
version = options[:version] || [">= 0"]
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
install_rubygems(names, version, sources)
|
27
|
-
end
|
19
|
+
if options[:git]
|
20
|
+
install_git(names, version, options)
|
21
|
+
elsif options[:local_git]
|
22
|
+
install_local_git(names, version, options)
|
23
|
+
else
|
24
|
+
sources = options[:source] || Bundler.rubygems.sources
|
25
|
+
install_rubygems(names, version, sources)
|
28
26
|
end
|
29
27
|
end
|
30
28
|
|
@@ -84,6 +82,7 @@ module Bundler
|
|
84
82
|
deps = names.map {|name| Dependency.new name, version }
|
85
83
|
|
86
84
|
definition = Definition.new(nil, deps, source_list, true)
|
85
|
+
definition.allow_multisource!
|
87
86
|
install_definition(definition)
|
88
87
|
end
|
89
88
|
|
@@ -5,6 +5,8 @@ module Bundler
|
|
5
5
|
require_relative "vendored_molinillo"
|
6
6
|
require_relative "resolver/spec_group"
|
7
7
|
|
8
|
+
include GemHelpers
|
9
|
+
|
8
10
|
# Figures out the best possible configuration of gems that satisfies
|
9
11
|
# the list of passed dependencies and any child dependencies without
|
10
12
|
# causing any gem activation errors.
|
@@ -15,16 +17,14 @@ module Bundler
|
|
15
17
|
# ==== Returns
|
16
18
|
# <GemBundle>,nil:: If the list of dependencies can be resolved, a
|
17
19
|
# collection of gemspecs is returned. Otherwise, nil is returned.
|
18
|
-
def self.resolve(requirements,
|
19
|
-
platforms = Set.new(platforms) if platforms
|
20
|
+
def self.resolve(requirements, source_requirements = {}, base = [], gem_version_promoter = GemVersionPromoter.new, additional_base_requirements = [], platforms = nil)
|
20
21
|
base = SpecSet.new(base) unless base.is_a?(SpecSet)
|
21
|
-
resolver = new(
|
22
|
+
resolver = new(source_requirements, base, gem_version_promoter, additional_base_requirements, platforms)
|
22
23
|
result = resolver.start(requirements)
|
23
24
|
SpecSet.new(result)
|
24
25
|
end
|
25
26
|
|
26
|
-
def initialize(
|
27
|
-
@index = index
|
27
|
+
def initialize(source_requirements, base, gem_version_promoter, additional_base_requirements, platforms)
|
28
28
|
@source_requirements = source_requirements
|
29
29
|
@base = base
|
30
30
|
@resolver = Molinillo::Resolver.new(self, self)
|
@@ -32,14 +32,17 @@ module Bundler
|
|
32
32
|
@base_dg = Molinillo::DependencyGraph.new
|
33
33
|
@base.each do |ls|
|
34
34
|
dep = Dependency.new(ls.name, ls.version)
|
35
|
-
@base_dg.add_vertex(ls.name, DepProxy.
|
35
|
+
@base_dg.add_vertex(ls.name, DepProxy.get_proxy(dep, ls.platform), true)
|
36
36
|
end
|
37
37
|
additional_base_requirements.each {|d| @base_dg.add_vertex(d.name, d) }
|
38
|
-
@platforms = platforms
|
38
|
+
@platforms = platforms.reject {|p| p != Gem::Platform::RUBY && (platforms - [p]).any? {|pl| generic(pl) == p } }
|
39
|
+
@resolving_only_for_ruby = platforms == [Gem::Platform::RUBY]
|
39
40
|
@gem_version_promoter = gem_version_promoter
|
40
|
-
@allow_bundler_dependency_conflicts = Bundler.feature_flag.allow_bundler_dependency_conflicts?
|
41
41
|
@use_gvp = Bundler.feature_flag.use_gem_version_promoter_for_major_updates? || !@gem_version_promoter.major?
|
42
|
-
@
|
42
|
+
@no_aggregate_global_source = @source_requirements[:global].nil?
|
43
|
+
|
44
|
+
@variant_specific_names = []
|
45
|
+
@generic_names = ["Ruby\0", "RubyGems\0"]
|
43
46
|
end
|
44
47
|
|
45
48
|
def start(requirements)
|
@@ -75,7 +78,7 @@ module Bundler
|
|
75
78
|
return unless debug?
|
76
79
|
debug_info = yield
|
77
80
|
debug_info = debug_info.inspect unless debug_info.is_a?(String)
|
78
|
-
puts debug_info.split("\n").map {|s| "BUNDLER: "
|
81
|
+
puts debug_info.split("\n").map {|s| depth == 0 ? "BUNDLER: #{s}" : "BUNDLER(#{depth}): #{s}" }
|
79
82
|
end
|
80
83
|
|
81
84
|
def debug?
|
@@ -103,16 +106,25 @@ module Bundler
|
|
103
106
|
include Molinillo::SpecificationProvider
|
104
107
|
|
105
108
|
def dependencies_for(specification)
|
106
|
-
specification.dependencies_for_activated_platforms
|
109
|
+
all_dependencies = specification.dependencies_for_activated_platforms
|
110
|
+
|
111
|
+
if @variant_specific_names.include?(specification.name)
|
112
|
+
@variant_specific_names |= all_dependencies.map(&:name) - @generic_names
|
113
|
+
else
|
114
|
+
generic_names, variant_specific_names = specification.partitioned_dependency_names_for_activated_platforms
|
115
|
+
@variant_specific_names |= variant_specific_names - @generic_names
|
116
|
+
@generic_names |= generic_names
|
117
|
+
end
|
118
|
+
|
119
|
+
all_dependencies
|
107
120
|
end
|
108
121
|
|
109
122
|
def search_for(dependency_proxy)
|
110
123
|
platform = dependency_proxy.__platform
|
111
124
|
dependency = dependency_proxy.dep
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
results = index.search(dependency, @base[name])
|
125
|
+
name = dependency.name
|
126
|
+
search_result = @search_for[dependency_proxy] ||= begin
|
127
|
+
results = results_for(dependency, @base[name])
|
116
128
|
|
117
129
|
if vertex = @base_dg.vertex_named(name)
|
118
130
|
locked_requirement = vertex.payload.requirement
|
@@ -137,60 +149,70 @@ module Bundler
|
|
137
149
|
end
|
138
150
|
nested.reduce([]) do |groups, (version, specs)|
|
139
151
|
next groups if locked_requirement && !locked_requirement.satisfied_by?(version)
|
140
|
-
|
141
|
-
|
142
|
-
|
152
|
+
|
153
|
+
specs_by_platform = Hash.new do |current_specs, current_platform|
|
154
|
+
current_specs[current_platform] = select_best_platform_match(specs, current_platform)
|
155
|
+
end
|
156
|
+
|
157
|
+
spec_group_ruby = SpecGroup.create_for(specs_by_platform, [Gem::Platform::RUBY], Gem::Platform::RUBY)
|
158
|
+
groups << spec_group_ruby if spec_group_ruby
|
159
|
+
|
160
|
+
next groups if @resolving_only_for_ruby
|
161
|
+
|
162
|
+
spec_group = SpecGroup.create_for(specs_by_platform, @platforms, platform)
|
163
|
+
groups << spec_group if spec_group
|
164
|
+
|
165
|
+
groups
|
143
166
|
end
|
144
167
|
else
|
145
168
|
[]
|
146
169
|
end
|
147
170
|
# GVP handles major itself, but it's still a bit risky to trust it with it
|
148
171
|
# until we get it settled with new behavior. For 2.x it can take over all cases.
|
149
|
-
|
172
|
+
if !@use_gvp
|
150
173
|
spec_groups
|
151
174
|
else
|
152
175
|
@gem_version_promoter.sort_versions(dependency, spec_groups)
|
153
176
|
end
|
154
|
-
|
155
|
-
search.each do |sg|
|
156
|
-
next unless sg.for?(platform)
|
157
|
-
sg_all_platforms = sg.copy_for(self.class.sort_platforms(@platforms).reverse)
|
158
|
-
next unless sg_all_platforms
|
159
|
-
|
160
|
-
selected_sgs << sg_all_platforms
|
161
|
-
|
162
|
-
next if sg_all_platforms.activated_platforms == [Gem::Platform::RUBY]
|
163
|
-
# Add a spec group for "non platform specific spec" as the fallback
|
164
|
-
# spec group.
|
165
|
-
sg_ruby = sg.copy_for([Gem::Platform::RUBY])
|
166
|
-
next unless sg_ruby
|
177
|
+
end
|
167
178
|
|
168
|
-
|
169
|
-
|
179
|
+
unless search_result.empty?
|
180
|
+
specific_dependency = @variant_specific_names.include?(name)
|
181
|
+
return search_result unless specific_dependency
|
170
182
|
|
171
|
-
|
183
|
+
search_result.each do |sg|
|
184
|
+
if @generic_names.include?(name)
|
185
|
+
@variant_specific_names -= [name]
|
186
|
+
sg.activate_all_platforms!
|
187
|
+
else
|
188
|
+
sg.activate_platform!(platform)
|
189
|
+
end
|
172
190
|
end
|
173
|
-
selected_sgs
|
174
191
|
end
|
192
|
+
|
193
|
+
search_result
|
175
194
|
end
|
176
195
|
|
177
|
-
def index_for(dependency)
|
196
|
+
def index_for(dependency, base)
|
178
197
|
source = @source_requirements[dependency.name]
|
179
198
|
if source
|
180
199
|
source.specs
|
181
|
-
elsif @
|
182
|
-
Index.
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
end
|
200
|
+
elsif @no_aggregate_global_source
|
201
|
+
dependency.all_sources.find(-> { Index.new }) do |s|
|
202
|
+
idx = s.specs
|
203
|
+
results = idx.search(dependency, base)
|
204
|
+
next if results.empty? || results == base
|
205
|
+
return idx
|
188
206
|
end
|
189
207
|
else
|
190
|
-
@
|
208
|
+
@source_requirements[:global]
|
191
209
|
end
|
192
210
|
end
|
193
211
|
|
212
|
+
def results_for(dependency, base)
|
213
|
+
index_for(dependency, base).search(dependency, base)
|
214
|
+
end
|
215
|
+
|
194
216
|
def name_for(dependency)
|
195
217
|
dependency.name
|
196
218
|
end
|
@@ -211,13 +233,19 @@ module Bundler
|
|
211
233
|
requirement.matches_spec?(spec) || spec.source.is_a?(Source::Gemspec)
|
212
234
|
end
|
213
235
|
|
236
|
+
def dependencies_equal?(dependencies, other_dependencies)
|
237
|
+
dependencies.map(&:dep) == other_dependencies.map(&:dep)
|
238
|
+
end
|
239
|
+
|
214
240
|
def relevant_sources_for_vertex(vertex)
|
215
241
|
if vertex.root?
|
216
|
-
[@source_requirements[vertex.name]]
|
217
|
-
elsif @
|
242
|
+
[@source_requirements[vertex.name]].compact
|
243
|
+
elsif @no_aggregate_global_source
|
218
244
|
vertex.recursive_predecessors.map do |v|
|
219
245
|
@source_requirements[v.name]
|
220
|
-
end << @source_requirements[:default]
|
246
|
+
end.compact << @source_requirements[:default]
|
247
|
+
else
|
248
|
+
[]
|
221
249
|
end
|
222
250
|
end
|
223
251
|
|
@@ -238,13 +266,6 @@ module Bundler
|
|
238
266
|
end
|
239
267
|
end
|
240
268
|
|
241
|
-
# Sort platforms from most general to most specific
|
242
|
-
def self.sort_platforms(platforms)
|
243
|
-
platforms.sort_by do |platform|
|
244
|
-
platform_sort_key(platform)
|
245
|
-
end
|
246
|
-
end
|
247
|
-
|
248
269
|
def self.platform_sort_key(platform)
|
249
270
|
# Prefer specific platform to not specific platform
|
250
271
|
return ["99-LAST", "", "", ""] if Gem::Platform::RUBY == platform
|
@@ -265,7 +286,7 @@ module Bundler
|
|
265
286
|
if (base = @base[dependency.name]) && !base.empty?
|
266
287
|
dependency.requirement.satisfied_by?(base.first.version) ? 0 : 1
|
267
288
|
else
|
268
|
-
all = index_for(dependency).search(dependency.name).size
|
289
|
+
all = index_for(dependency, base).search(dependency.name).size
|
269
290
|
|
270
291
|
if all <= 1
|
271
292
|
all - 1_000_000
|
@@ -308,7 +329,7 @@ module Bundler
|
|
308
329
|
"The source does not contain any versions of '#{name}'"
|
309
330
|
end
|
310
331
|
else
|
311
|
-
message = "Could not find gem '#{requirement}' in any of the gem sources " \
|
332
|
+
message = "Could not find gem '#{SharedHelpers.pretty_dependency(requirement)}' in any of the gem sources " \
|
312
333
|
"listed in your Gemfile#{cache_message}."
|
313
334
|
end
|
314
335
|
raise GemNotFound, message
|
@@ -329,10 +350,16 @@ module Bundler
|
|
329
350
|
def version_conflict_message(e)
|
330
351
|
# only show essential conflicts, if possible
|
331
352
|
conflicts = e.conflicts.dup
|
332
|
-
|
333
|
-
|
334
|
-
|
353
|
+
|
354
|
+
if conflicts["bundler"]
|
355
|
+
conflicts.replace("bundler" => conflicts["bundler"])
|
356
|
+
else
|
357
|
+
conflicts.delete_if do |_name, conflict|
|
358
|
+
deps = conflict.requirement_trees.map(&:last).flatten(1)
|
359
|
+
!Bundler::VersionRanges.empty?(*Bundler::VersionRanges.for_many(deps.map(&:requirement)))
|
360
|
+
end
|
335
361
|
end
|
362
|
+
|
336
363
|
e = Molinillo::VersionConflict.new(conflicts, e.specification_provider) unless conflicts.empty?
|
337
364
|
|
338
365
|
solver_name = "Bundler"
|
@@ -360,15 +387,25 @@ module Bundler
|
|
360
387
|
:additional_message_for_conflict => lambda do |o, name, conflict|
|
361
388
|
if name == "bundler"
|
362
389
|
o << %(\n Current Bundler version:\n bundler (#{Bundler::VERSION}))
|
363
|
-
other_bundler_required = !conflict.requirement.requirement.satisfied_by?(Gem::Version.new(Bundler::VERSION))
|
364
|
-
end
|
365
390
|
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
391
|
+
conflict_dependency = conflict.requirement
|
392
|
+
conflict_requirement = conflict_dependency.requirement
|
393
|
+
other_bundler_required = !conflict_requirement.satisfied_by?(Gem::Version.new(Bundler::VERSION))
|
394
|
+
|
395
|
+
if other_bundler_required
|
396
|
+
o << "\n\n"
|
397
|
+
|
398
|
+
candidate_specs = @source_requirements[:default_bundler].specs.search(conflict_dependency)
|
399
|
+
if candidate_specs.any?
|
400
|
+
target_version = candidate_specs.last.version
|
401
|
+
new_command = [File.basename($PROGRAM_NAME), "_#{target_version}_", *ARGV].join(" ")
|
402
|
+
o << "Your bundle requires a different version of Bundler than the one you're running.\n"
|
403
|
+
o << "Install the necessary version with `gem install bundler:#{target_version}` and rerun bundler using `#{new_command}`\n"
|
404
|
+
else
|
405
|
+
o << "Your bundle requires a different version of Bundler than the one you're running, and that version could not be found.\n"
|
406
|
+
end
|
407
|
+
end
|
408
|
+
elsif conflict.locked_requirement
|
372
409
|
o << "\n"
|
373
410
|
o << %(Running `bundle update` will rebuild your snapshot from scratch, using only\n)
|
374
411
|
o << %(the gems in your Gemfile, which may resolve the conflict.\n)
|
@@ -377,14 +414,8 @@ module Bundler
|
|
377
414
|
|
378
415
|
relevant_sources = if conflict.requirement.source
|
379
416
|
[conflict.requirement.source]
|
380
|
-
elsif conflict.requirement.all_sources
|
381
|
-
conflict.requirement.all_sources
|
382
|
-
elsif @lockfile_uses_separate_rubygems_sources
|
383
|
-
# every conflict should have an explicit group of sources when we
|
384
|
-
# enforce strict pinning
|
385
|
-
raise "no source set for #{conflict}"
|
386
417
|
else
|
387
|
-
|
418
|
+
conflict.requirement.all_sources
|
388
419
|
end.compact.map(&:to_s).uniq.sort
|
389
420
|
|
390
421
|
metadata_requirement = name.end_with?("\0")
|
@@ -421,7 +452,8 @@ module Bundler
|
|
421
452
|
def validate_resolved_specs!(resolved_specs)
|
422
453
|
resolved_specs.each do |v|
|
423
454
|
name = v.name
|
424
|
-
|
455
|
+
sources = relevant_sources_for_vertex(v)
|
456
|
+
next unless sources.any?
|
425
457
|
sources.compact!
|
426
458
|
if default_index = sources.index(@source_requirements[:default])
|
427
459
|
sources.delete_at(default_index)
|
@@ -430,14 +462,12 @@ module Bundler
|
|
430
462
|
sources.uniq!
|
431
463
|
next if sources.size <= 1
|
432
464
|
|
433
|
-
multisource_disabled = Bundler.feature_flag.disable_multisource?
|
434
|
-
|
435
465
|
msg = ["The gem '#{name}' was found in multiple relevant sources."]
|
436
466
|
msg.concat sources.map {|s| " * #{s}" }.sort
|
437
|
-
msg << "You #{
|
467
|
+
msg << "You #{@no_aggregate_global_source ? :must : :should} add this gem to the source block for the source you wish it to be installed from."
|
438
468
|
msg = msg.join("\n")
|
439
469
|
|
440
|
-
raise SecurityError, msg if
|
470
|
+
raise SecurityError, msg if @no_aggregate_global_source
|
441
471
|
Bundler.ui.warn "Warning: #{msg}"
|
442
472
|
end
|
443
473
|
end
|