bundler 2.1.4 → 2.2.2

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.

Files changed (208) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1577 -1425
  3. data/README.md +6 -8
  4. data/bundler.gemspec +3 -3
  5. data/exe/bundle +3 -0
  6. data/lib/bundler.rb +35 -7
  7. data/lib/bundler/build_metadata.rb +3 -11
  8. data/lib/bundler/cli.rb +58 -21
  9. data/lib/bundler/cli/add.rb +1 -1
  10. data/lib/bundler/cli/binstubs.rb +6 -2
  11. data/lib/bundler/cli/cache.rb +1 -7
  12. data/lib/bundler/cli/clean.rb +1 -1
  13. data/lib/bundler/cli/common.rb +14 -0
  14. data/lib/bundler/cli/console.rb +1 -1
  15. data/lib/bundler/cli/doctor.rb +1 -1
  16. data/lib/bundler/cli/exec.rb +4 -4
  17. data/lib/bundler/cli/fund.rb +36 -0
  18. data/lib/bundler/cli/gem.rb +84 -11
  19. data/lib/bundler/cli/info.rb +15 -4
  20. data/lib/bundler/cli/init.rb +2 -2
  21. data/lib/bundler/cli/inject.rb +1 -1
  22. data/lib/bundler/cli/install.rb +13 -11
  23. data/lib/bundler/cli/issue.rb +2 -2
  24. data/lib/bundler/cli/list.rb +12 -10
  25. data/lib/bundler/cli/outdated.rb +87 -66
  26. data/lib/bundler/cli/plugin.rb +10 -0
  27. data/lib/bundler/cli/pristine.rb +5 -0
  28. data/lib/bundler/cli/show.rb +1 -1
  29. data/lib/bundler/cli/update.rb +2 -0
  30. data/lib/bundler/compact_index_client.rb +1 -1
  31. data/lib/bundler/compact_index_client/cache.rb +1 -1
  32. data/lib/bundler/compact_index_client/updater.rb +5 -5
  33. data/lib/bundler/definition.rb +49 -72
  34. data/lib/bundler/dep_proxy.rb +1 -1
  35. data/lib/bundler/dependency.rb +3 -10
  36. data/lib/bundler/dsl.rb +5 -9
  37. data/lib/bundler/endpoint_specification.rb +1 -1
  38. data/lib/bundler/env.rb +1 -1
  39. data/lib/bundler/environment_preserver.rb +26 -2
  40. data/lib/bundler/errors.rb +1 -0
  41. data/lib/bundler/feature_flag.rb +0 -3
  42. data/lib/bundler/fetcher.rb +4 -3
  43. data/lib/bundler/fetcher/base.rb +1 -1
  44. data/lib/bundler/fetcher/compact_index.rb +1 -1
  45. data/lib/bundler/fetcher/downloader.rb +1 -1
  46. data/lib/bundler/fetcher/index.rb +3 -4
  47. data/lib/bundler/friendly_errors.rb +22 -13
  48. data/lib/bundler/gem_helper.rb +32 -17
  49. data/lib/bundler/gem_helpers.rb +6 -1
  50. data/lib/bundler/gem_version_promoter.rb +2 -2
  51. data/lib/bundler/graph.rb +1 -1
  52. data/lib/bundler/index.rb +6 -2
  53. data/lib/bundler/injector.rb +22 -4
  54. data/lib/bundler/inline.rb +1 -1
  55. data/lib/bundler/installer.rb +35 -32
  56. data/lib/bundler/installer/gem_installer.rb +3 -3
  57. data/lib/bundler/installer/parallel_installer.rb +10 -10
  58. data/lib/bundler/installer/standalone.rb +2 -2
  59. data/lib/bundler/lazy_specification.rb +34 -9
  60. data/lib/bundler/lockfile_generator.rb +1 -1
  61. data/lib/bundler/lockfile_parser.rb +1 -1
  62. data/lib/bundler/man/.document +1 -0
  63. data/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +0 -0
  64. data/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
  65. data/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +0 -0
  66. data/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
  67. data/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
  68. data/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +19 -30
  69. data/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
  70. data/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +0 -0
  71. data/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
  72. data/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
  73. data/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
  74. data/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
  75. data/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +25 -3
  76. data/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
  77. data/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
  78. data/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
  79. data/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
  80. data/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
  81. data/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
  82. data/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
  83. data/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
  84. data/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +0 -0
  85. data/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
  86. data/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +0 -0
  87. data/{man → lib/bundler/man}/gemfile.5.ronn +4 -4
  88. data/lib/bundler/mirror.rb +2 -2
  89. data/lib/bundler/plugin.rb +30 -5
  90. data/lib/bundler/plugin/api/source.rb +1 -1
  91. data/lib/bundler/plugin/dsl.rb +1 -1
  92. data/lib/bundler/plugin/index.rb +10 -1
  93. data/lib/bundler/plugin/installer.rb +1 -1
  94. data/lib/bundler/plugin/installer/rubygems.rb +1 -1
  95. data/lib/bundler/plugin/source_list.rb +1 -1
  96. data/lib/bundler/psyched_yaml.rb +0 -15
  97. data/lib/bundler/remote_specification.rb +5 -2
  98. data/lib/bundler/resolver.rb +37 -18
  99. data/lib/bundler/resolver/spec_group.rb +28 -11
  100. data/lib/bundler/retry.rb +1 -1
  101. data/lib/bundler/ruby_version.rb +1 -1
  102. data/lib/bundler/rubygems_ext.rb +53 -9
  103. data/lib/bundler/rubygems_gem_installer.rb +3 -9
  104. data/lib/bundler/rubygems_integration.rb +25 -55
  105. data/lib/bundler/runtime.rb +4 -14
  106. data/lib/bundler/settings.rb +49 -46
  107. data/lib/bundler/shared_helpers.rb +2 -2
  108. data/lib/bundler/similarity_detector.rb +1 -1
  109. data/lib/bundler/source.rb +1 -1
  110. data/lib/bundler/source/git.rb +5 -5
  111. data/lib/bundler/source/git/git_proxy.rb +57 -60
  112. data/lib/bundler/source/path.rb +7 -3
  113. data/lib/bundler/source/path/installer.rb +8 -10
  114. data/lib/bundler/source/rubygems.rb +13 -16
  115. data/lib/bundler/source/rubygems/remote.rb +1 -1
  116. data/lib/bundler/source_list.rb +2 -2
  117. data/lib/bundler/spec_set.rb +2 -1
  118. data/lib/bundler/stub_specification.rb +17 -7
  119. data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  120. data/lib/bundler/templates/newgem/Gemfile.tt +9 -1
  121. data/lib/bundler/templates/newgem/README.md.tt +1 -2
  122. data/lib/bundler/templates/newgem/Rakefile.tt +19 -5
  123. data/lib/bundler/templates/newgem/bin/console.tt +1 -0
  124. data/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
  125. data/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
  126. data/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
  127. data/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  128. data/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
  129. data/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  130. data/lib/bundler/templates/newgem/newgem.gemspec.tt +14 -6
  131. data/lib/bundler/templates/newgem/rubocop.yml.tt +10 -0
  132. data/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  133. data/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  134. data/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
  135. data/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
  136. data/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  137. data/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  138. data/lib/bundler/ui/shell.rb +5 -5
  139. data/lib/bundler/uri_credentials_filter.rb +3 -1
  140. data/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
  141. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +34 -1
  142. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
  143. data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
  144. data/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  145. data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +38 -40
  146. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +82 -189
  147. data/lib/bundler/vendor/thor/lib/thor.rb +0 -7
  148. data/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
  149. data/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
  150. data/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  151. data/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
  152. data/lib/bundler/vendored_persistent.rb +0 -7
  153. data/lib/bundler/vendored_tmpdir.rb +4 -0
  154. data/lib/bundler/version.rb +1 -1
  155. data/lib/bundler/worker.rb +1 -1
  156. data/lib/bundler/yaml_serializer.rb +1 -1
  157. data/man/bundle-add.1 +1 -1
  158. data/man/bundle-binstubs.1 +5 -3
  159. data/man/bundle-cache.1 +1 -1
  160. data/man/bundle-check.1 +1 -1
  161. data/man/bundle-clean.1 +1 -1
  162. data/man/bundle-config.1 +16 -25
  163. data/man/bundle-doctor.1 +1 -1
  164. data/man/bundle-exec.1 +1 -1
  165. data/man/bundle-gem.1 +25 -3
  166. data/man/bundle-info.1 +1 -1
  167. data/man/bundle-init.1 +1 -1
  168. data/man/bundle-inject.1 +1 -1
  169. data/man/bundle-install.1 +30 -3
  170. data/man/bundle-list.1 +7 -7
  171. data/man/bundle-lock.1 +1 -1
  172. data/man/bundle-open.1 +1 -1
  173. data/man/bundle-outdated.1 +1 -1
  174. data/man/bundle-platform.1 +1 -1
  175. data/man/bundle-pristine.1 +1 -1
  176. data/man/bundle-remove.1 +1 -1
  177. data/man/bundle-show.1 +1 -1
  178. data/man/bundle-update.1 +1 -1
  179. data/man/bundle-viz.1 +1 -1
  180. data/man/bundle.1 +1 -1
  181. data/man/gemfile.5 +4 -4
  182. metadata +43 -59
  183. data/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
  184. data/man/bundle-add.1.txt +0 -58
  185. data/man/bundle-binstubs.1.txt +0 -48
  186. data/man/bundle-cache.1.txt +0 -78
  187. data/man/bundle-check.1.txt +0 -33
  188. data/man/bundle-clean.1.txt +0 -26
  189. data/man/bundle-config.1.txt +0 -528
  190. data/man/bundle-doctor.1.txt +0 -44
  191. data/man/bundle-exec.1.txt +0 -178
  192. data/man/bundle-gem.1.txt +0 -91
  193. data/man/bundle-info.1.txt +0 -21
  194. data/man/bundle-init.1.txt +0 -34
  195. data/man/bundle-inject.1.txt +0 -32
  196. data/man/bundle-install.1.txt +0 -401
  197. data/man/bundle-list.1.txt +0 -43
  198. data/man/bundle-lock.1.txt +0 -93
  199. data/man/bundle-open.1.txt +0 -29
  200. data/man/bundle-outdated.1.txt +0 -131
  201. data/man/bundle-platform.1.txt +0 -57
  202. data/man/bundle-pristine.1.txt +0 -44
  203. data/man/bundle-remove.1.txt +0 -34
  204. data/man/bundle-show.1.txt +0 -27
  205. data/man/bundle-update.1.txt +0 -390
  206. data/man/bundle-viz.1.txt +0 -39
  207. data/man/bundle.1.txt +0 -116
  208. data/man/gemfile.5.txt +0 -649
@@ -60,14 +60,37 @@ configuration file using the following names:
60
60
  Do not create a `LICENSE.txt` (overrides `--mit` specified in the global
61
61
  config).
62
62
 
63
- * `-t`, `--test=minitest`, `--test=rspec`:
63
+ * `-t`, `--test=minitest`, `--test=rspec`, `--test=test-unit`:
64
64
  Specify the test framework that Bundler should use when generating the
65
- project. Acceptable values are `minitest` and `rspec`. The `GEM_NAME.gemspec`
66
- will be configured and a skeleton test/spec directory will be created based
67
- on this option. If this option is unspecified, an interactive prompt will be
68
- displayed and the answer will be saved in Bundler's global config for future
69
- `bundle gem` use.
70
- If no option is specified, the default testing framework is RSpec.
65
+ project. Acceptable values are `minitest`, `rspec` and `test-unit`. The
66
+ `GEM_NAME.gemspec` will be configured and a skeleton test/spec directory will
67
+ be created based on this option. Given no option is specified:
68
+
69
+ When Bundler is configured to generate tests, this defaults to Bundler's
70
+ global config setting `gem.test`.
71
+
72
+ When Bundler is configured to not generate tests, an interactive prompt will
73
+ be displayed and the answer will be used for the current rubygem project.
74
+
75
+ When Bundler is unconfigured, an interactive prompt will be displayed and
76
+ the answer will be saved in Bundler's global config for future `bundle gem`
77
+ use.
78
+
79
+ * `--ci`, `--ci=github`, `--ci=travis`, `--ci=gitlab`, `--ci=circle`:
80
+ Specify the continuous integration service that Bundler should use when
81
+ generating the project. Acceptable values are `github`, `travis`, `gitlab`
82
+ and `circle`. A configuration file will be generated in the project directory.
83
+ Given no option is specified:
84
+
85
+ When Bundler is configured to generate CI files, this defaults to Bundler's
86
+ global config setting `gem.ci`.
87
+
88
+ When Bundler is configured to not generate CI files, an interactive prompt
89
+ will be displayed and the answer will be used for the current rubygem project.
90
+
91
+ When Bundler is unconfigured, an interactive prompt will be displayed and
92
+ the answer will be saved in Bundler's global config for future `bundle gem`
93
+ use.
71
94
 
72
95
  * `-e`, `--edit[=EDITOR]`:
73
96
  Open the resulting GEM_NAME.gemspec in EDITOR, or the default editor if not
@@ -43,8 +43,12 @@ update process below under [CONSERVATIVE UPDATING][].
43
43
 
44
44
  ## OPTIONS
45
45
 
46
- To apply any of `--binstubs`, `--deployment`, `--path`, or `--without` every
47
- time `bundle install` is run, use `bundle config` (see bundle-config(1)).
46
+ The `--clean`, `--deployment`, `--frozen`, `--no-prune`, `--path`, `--shebang`,
47
+ `--system`, `--without` and `--with` options are deprecated because they only
48
+ make sense if they are applied to every subsequent `bundle install` run
49
+ automatically and that requires `bundler` to silently remember them. Since
50
+ `bundler` will no longer remember CLI flags in future versions, `bundle config`
51
+ (see bundle-config(1)) should be used to apply them permanently.
48
52
 
49
53
  * `--binstubs[=<directory>]`:
50
54
  Binstubs are scripts that wrap around executables. Bundler creates a small Ruby
@@ -64,11 +68,15 @@ time `bundle install` is run, use `bundle config` (see bundle-config(1)).
64
68
  in the current Gemfile(5). Don't worry, gems currently in use will not be
65
69
  removed.
66
70
 
71
+ This option is deprecated in favor of the `clean` setting.
72
+
67
73
  * `--deployment`:
68
74
  In [deployment mode][DEPLOYMENT MODE], Bundler will 'roll-out' the bundle for
69
75
  production or CI use. Please check carefully if you want to have this option
70
76
  enabled in your development environment.
71
77
 
78
+ This option is deprecated in favor of the `deployment` setting.
79
+
72
80
  * `--redownload`:
73
81
  Force download every gem, even if the required versions are already available
74
82
  locally.
@@ -77,6 +85,8 @@ time `bundle install` is run, use `bundle config` (see bundle-config(1)).
77
85
  Do not allow the Gemfile.lock to be updated after this install. Exits
78
86
  non-zero if there are going to be changes to the Gemfile.lock.
79
87
 
88
+ This option is deprecated in favor of the `frozen` setting.
89
+
80
90
  * `--full-index`:
81
91
  Bundler will not call Rubygems' API endpoint (default) but download and cache
82
92
  a (currently big) index file of all gems. Performance can be improved for
@@ -95,7 +105,7 @@ time `bundle install` is run, use `bundle config` (see bundle-config(1)).
95
105
 
96
106
  * `--local`:
97
107
  Do not attempt to connect to `rubygems.org`. Instead, Bundler will use the
98
- gems already present in Rubygems' cache or in `vendor/cache`. Note that if a
108
+ gems already present in Rubygems' cache or in `vendor/cache`. Note that if an
99
109
  appropriate platform-specific gem exists on `rubygems.org` it will not be
100
110
  found.
101
111
 
@@ -107,6 +117,8 @@ time `bundle install` is run, use `bundle config` (see bundle-config(1)).
107
117
  * `--no-prune`:
108
118
  Don't remove stale gems from the cache when the installation finishes.
109
119
 
120
+ This option is deprecated in favor of the `no_prune` setting.
121
+
110
122
  * `--path=<path>`:
111
123
  The location to install the specified gems to. This defaults to Rubygems'
112
124
  setting. Bundler shares this location with Rubygems, `gem install ...` will
@@ -114,6 +126,8 @@ time `bundle install` is run, use `bundle config` (see bundle-config(1)).
114
126
  `--path ...` setting will show up by calling `gem list`. Accordingly, gems
115
127
  installed to other locations will not get listed.
116
128
 
129
+ This option is deprecated in favor of the `path` setting.
130
+
117
131
  * `--quiet`:
118
132
  Do not print progress information to the standard output. Instead, Bundler
119
133
  will exit using a status code (`$?`).
@@ -127,6 +141,8 @@ time `bundle install` is run, use `bundle config` (see bundle-config(1)).
127
141
  `--shebang jruby` these executables will be changed to execute `jruby`
128
142
  instead.
129
143
 
144
+ This option is deprecated in favor of the `shebang` setting.
145
+
130
146
  * `--standalone[=<list>]`:
131
147
  Makes a bundle that can work without depending on Rubygems or Bundler at
132
148
  runtime. A space separated list of groups to install has to be specified.
@@ -139,6 +155,8 @@ time `bundle install` is run, use `bundle config` (see bundle-config(1)).
139
155
  Installs the gems specified in the bundle to the system's Rubygems location.
140
156
  This overrides any previous configuration of `--path`.
141
157
 
158
+ This option is deprecated in favor of the `system` setting.
159
+
142
160
  * `--trust-policy=[<policy>]`:
143
161
  Apply the Rubygems security policy <policy>, where policy is one of
144
162
  `HighSecurity`, `MediumSecurity`, `LowSecurity`, `AlmostNoSecurity`, or
@@ -151,11 +169,15 @@ time `bundle install` is run, use `bundle config` (see bundle-config(1)).
151
169
  in the remembered list of groups given to --without, it is removed
152
170
  from that list.
153
171
 
172
+ This option is deprecated in favor of the `with` setting.
173
+
154
174
  * `--without=<list>`:
155
175
  A space-separated list of groups referencing gems to skip during installation.
156
176
  If a group is given that is in the remembered list of groups given
157
177
  to --with, it is removed from that list.
158
178
 
179
+ This option is deprecated in favor of the `without` setting.
180
+
159
181
  ## DEPLOYMENT MODE
160
182
 
161
183
  Bundler's defaults are optimized for development. To switch to
@@ -3,7 +3,7 @@ bundle-list(1) -- List all the gems in the bundle
3
3
 
4
4
  ## SYNOPSIS
5
5
 
6
- `bundle list` [--name-only] [--paths] [--without-group=GROUP] [--only-group=GROUP]
6
+ `bundle list` [--name-only] [--paths] [--without-group=GROUP[ GROUP...]] [--only-group=GROUP[ GROUP...]]
7
7
 
8
8
  ## DESCRIPTION
9
9
 
@@ -19,7 +19,7 @@ bundle list --without-group test
19
19
 
20
20
  bundle list --only-group dev
21
21
 
22
- bundle list --only-group dev --paths
22
+ bundle list --only-group dev test --paths
23
23
 
24
24
  ## OPTIONS
25
25
 
@@ -27,7 +27,7 @@ bundle list --only-group dev --paths
27
27
  Print only the name of each gem.
28
28
  * `--paths`:
29
29
  Print the path to each gem in the bundle.
30
- * `--without-group`:
31
- Print all gems expect from a group.
32
- * `--only-group`:
33
- Print gems from a particular group.
30
+ * `--without-group=<list>`:
31
+ A space-separated list of groups of gems to skip during printing.
32
+ * `--only-group=<list>`:
33
+ A space-separated list of groups of gems to print.
@@ -120,8 +120,8 @@ Each _gem_ `MAY` have one or more version specifiers.
120
120
  ### REQUIRE AS
121
121
 
122
122
  Each _gem_ `MAY` specify files that should be used when autorequiring via
123
- `Bundler.require`. You may pass an array with multiple files or `true` if file
124
- you want `required` has same name as _gem_ or `false` to
123
+ `Bundler.require`. You may pass an array with multiple files or `true` if the file
124
+ you want `required` has the same name as _gem_ or `false` to
125
125
  prevent any file from being autorequired.
126
126
 
127
127
  gem "redis", :require => ["redis/connection/hiredis", "redis"]
@@ -163,8 +163,8 @@ not install with the `without` configuration.
163
163
 
164
164
  To specify multiple groups to ignore, specify a list of groups separated by spaces.
165
165
 
166
- bundle config set without test
167
- bundle config set without development test
166
+ bundle config set --local without test
167
+ bundle config set --local without development test
168
168
 
169
169
  Also, calling `Bundler.setup` with no parameters, or calling `require "bundler/setup"`
170
170
  will setup all groups except for the ones you excluded via `--without` (since they
@@ -43,7 +43,7 @@ module Bundler
43
43
  config.update_mirror(mirror)
44
44
  end
45
45
 
46
- private
46
+ private
47
47
 
48
48
  def fetch_valid_mirror_for(uri)
49
49
  downcased = uri.to_s.downcase
@@ -158,7 +158,7 @@ module Bundler
158
158
  end
159
159
  end
160
160
 
161
- private
161
+ private
162
162
 
163
163
  def wait_for_writtable_socket(socket, address, timeout)
164
164
  if IO.select(nil, [socket], nil, timeout)
@@ -16,7 +16,7 @@ module Bundler
16
16
 
17
17
  PLUGIN_FILE_NAME = "plugins.rb".freeze
18
18
 
19
- module_function
19
+ module_function
20
20
 
21
21
  def reset!
22
22
  instance_variables.each {|i| remove_instance_variable(i) }
@@ -39,12 +39,37 @@ module Bundler
39
39
 
40
40
  save_plugins names, specs
41
41
  rescue PluginError => e
42
- if specs
43
- specs_to_delete = Hash[specs.select {|k, _v| names.include?(k) && !index.commands.values.include?(k) }]
44
- specs_to_delete.values.each {|spec| Bundler.rm_rf(spec.full_gem_path) }
42
+ specs_to_delete = specs.select {|k, _v| names.include?(k) && !index.commands.values.include?(k) }
43
+ specs_to_delete.each_value {|spec| Bundler.rm_rf(spec.full_gem_path) }
44
+
45
+ names_list = names.map {|name| "`#{name}`" }.join(", ")
46
+ Bundler.ui.error "Failed to install the following plugins: #{names_list}. The underlying error was: #{e.message}.\n #{e.backtrace.join("\n ")}"
47
+ end
48
+
49
+ # Uninstalls plugins by the given names
50
+ #
51
+ # @param [Array<String>] names the names of plugins to be uninstalled
52
+ def uninstall(names, options)
53
+ if names.empty? && !options[:all]
54
+ Bundler.ui.error "No plugins to uninstall. Specify at least 1 plugin to uninstall.\n"\
55
+ "Use --all option to uninstall all the installed plugins."
56
+ return
45
57
  end
46
58
 
47
- Bundler.ui.error "Failed to install plugin #{name}: #{e.message}\n #{e.backtrace.join("\n ")}"
59
+ names = index.installed_plugins if options[:all]
60
+ if names.any?
61
+ names.each do |name|
62
+ if index.installed?(name)
63
+ Bundler.rm_rf(index.plugin_path(name))
64
+ index.unregister_plugin(name)
65
+ Bundler.ui.info "Uninstalled plugin #{name}"
66
+ else
67
+ Bundler.ui.error "Plugin #{name} is not installed \n"
68
+ end
69
+ end
70
+ else
71
+ Bundler.ui.info "No plugins installed"
72
+ end
48
73
  end
49
74
 
50
75
  # List installed plugins and commands
@@ -260,7 +260,7 @@ module Bundler
260
260
  end
261
261
 
262
262
  def to_s
263
- "plugin source for #{options[:type]} with uri #{uri}"
263
+ "plugin source for #{@type} with uri #{@uri}"
264
264
  end
265
265
 
266
266
  # Note: Do not override if you don't know what you are doing.
@@ -10,7 +10,7 @@ module Bundler
10
10
  # So that we don't have to override all there methods to dummy ones
11
11
  # explicitly.
12
12
  # They will be handled by method_missing
13
- [:gemspec, :gem, :path, :install_if, :platforms, :env].each {|m| undef_method m }
13
+ [:gemspec, :gem, :install_if, :platforms, :env].each {|m| undef_method m }
14
14
 
15
15
  # This lists the plugins that was added automatically and not specified by
16
16
  # the user.
@@ -71,6 +71,15 @@ module Bundler
71
71
  raise
72
72
  end
73
73
 
74
+ def unregister_plugin(name)
75
+ @commands.delete_if {|_, v| v == name }
76
+ @sources.delete_if {|_, v| v == name }
77
+ @hooks.each {|_, plugin_names| plugin_names.delete(name) }
78
+ @plugin_paths.delete(name)
79
+ @load_paths.delete(name)
80
+ save_index
81
+ end
82
+
74
83
  # Path of default index file
75
84
  def index_file
76
85
  Plugin.root.join("index")
@@ -124,7 +133,7 @@ module Bundler
124
133
  @hooks[event] || []
125
134
  end
126
135
 
127
- private
136
+ private
128
137
 
129
138
  # Reads the index file from the directory and initializes the instance
130
139
  # variables.
@@ -41,7 +41,7 @@ module Bundler
41
41
  install_from_specs specs
42
42
  end
43
43
 
44
- private
44
+ private
45
45
 
46
46
  def check_sources_consistency!(options)
47
47
  if options.key?(:git) && options.key?(:local_git)
@@ -8,7 +8,7 @@ module Bundler
8
8
  "#{spec.name} #{spec.version}"
9
9
  end
10
10
 
11
- private
11
+ private
12
12
 
13
13
  def requires_sudo?
14
14
  false # Will change on implementation of project level plugins
@@ -17,7 +17,7 @@ module Bundler
17
17
  path_sources + git_sources + rubygems_sources + [metadata_source]
18
18
  end
19
19
 
20
- private
20
+ private
21
21
 
22
22
  def rubygems_aggregate_class
23
23
  Plugin::Installer::Rubygems
@@ -1,11 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Psych could be a gem, so try to ask for it
4
- begin
5
- gem "psych"
6
- rescue LoadError
7
- end if defined?(gem)
8
-
9
3
  # Psych could be in the stdlib
10
4
  # but it's too late if Syck is already loaded
11
5
  begin
@@ -26,12 +20,3 @@ module Bundler
26
20
  YamlLibrarySyntaxError = ::ArgumentError
27
21
  end
28
22
  end
29
-
30
- require_relative "deprecate"
31
- begin
32
- Bundler::Deprecate.skip_during do
33
- require "rubygems/safe_yaml"
34
- end
35
- rescue LoadError
36
- # it's OK if the file isn't there
37
- end
@@ -50,6 +50,8 @@ module Bundler
50
50
  # once the remote gem is downloaded, the backend specification will
51
51
  # be swapped out.
52
52
  def __swap__(spec)
53
+ raise APIResponseInvalidDependenciesError unless spec.dependencies.all? {|d| d.is_a?(Gem::Dependency) }
54
+
53
55
  SharedHelpers.ensure_same_dependencies(self, dependencies, spec.dependencies)
54
56
  @_remote_specification = spec
55
57
  end
@@ -76,7 +78,8 @@ module Bundler
76
78
  deps = method_missing(:dependencies)
77
79
 
78
80
  # allow us to handle when the specs dependencies are an array of array of string
79
- # see https://github.com/bundler/bundler/issues/5797
81
+ # in order to delay the crash to `#__swap__` where it results in a friendlier error
82
+ # see https://github.com/rubygems/bundler/issues/5797
80
83
  deps = deps.map {|d| d.is_a?(Gem::Dependency) ? d : Gem::Dependency.new(*d) }
81
84
 
82
85
  deps
@@ -88,7 +91,7 @@ module Bundler
88
91
  " #{source.revision[0..6]}"
89
92
  end
90
93
 
91
- private
94
+ private
92
95
 
93
96
  def to_ary
94
97
  nil
@@ -75,12 +75,17 @@ module Bundler
75
75
  return unless debug?
76
76
  debug_info = yield
77
77
  debug_info = debug_info.inspect unless debug_info.is_a?(String)
78
- warn debug_info.split("\n").map {|s| " " * depth + s }
78
+ puts debug_info.split("\n").map {|s| "BUNDLER: " + " " * depth + s }
79
79
  end
80
80
 
81
81
  def debug?
82
82
  return @debug_mode if defined?(@debug_mode)
83
- @debug_mode = ENV["DEBUG_RESOLVER"] || ENV["DEBUG_RESOLVER_TREE"] || false
83
+ @debug_mode =
84
+ ENV["BUNDLER_DEBUG_RESOLVER"] ||
85
+ ENV["BUNDLER_DEBUG_RESOLVER_TREE"] ||
86
+ ENV["DEBUG_RESOLVER"] ||
87
+ ENV["DEBUG_RESOLVER_TREE"] ||
88
+ false
84
89
  end
85
90
 
86
91
  def before_resolution
@@ -101,18 +106,19 @@ module Bundler
101
106
  specification.dependencies_for_activated_platforms
102
107
  end
103
108
 
104
- def search_for(dependency)
105
- platform = dependency.__platform
106
- dependency = dependency.dep unless dependency.is_a? Gem::Dependency
107
- search = @search_for[dependency] ||= begin
109
+ def search_for(dependency_proxy)
110
+ platform = dependency_proxy.__platform
111
+ dependency = dependency_proxy.dep
112
+ @search_for[dependency_proxy] ||= begin
113
+ name = dependency.name
108
114
  index = index_for(dependency)
109
- results = index.search(dependency, @base[dependency.name])
115
+ results = index.search(dependency, @base[name])
110
116
 
111
- if vertex = @base_dg.vertex_named(dependency.name)
117
+ if vertex = @base_dg.vertex_named(name)
112
118
  locked_requirement = vertex.payload.requirement
113
119
  end
114
120
 
115
- if !@prerelease_specified[dependency.name] && (!@use_gvp || locked_requirement.nil?)
121
+ if !@prerelease_specified[name] && (!@use_gvp || locked_requirement.nil?)
116
122
  # Move prereleases to the beginning of the list, so they're considered
117
123
  # last during resolution.
118
124
  pre, results = results.partition {|spec| spec.version.prerelease? }
@@ -140,13 +146,27 @@ module Bundler
140
146
  end
141
147
  # GVP handles major itself, but it's still a bit risky to trust it with it
142
148
  # until we get it settled with new behavior. For 2.x it can take over all cases.
143
- if !@use_gvp
149
+ search = if !@use_gvp
144
150
  spec_groups
145
151
  else
146
152
  @gem_version_promoter.sort_versions(dependency, spec_groups)
147
153
  end
154
+ selected_sgs = []
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
+ selected_sgs.insert(-2, sg_ruby) if sg_ruby
167
+ end
168
+ selected_sgs
148
169
  end
149
- search.select {|sg| sg.for?(platform) }.each {|sg| sg.activate_platform!(platform) }
150
170
  end
151
171
 
152
172
  def index_for(dependency)
@@ -183,9 +203,7 @@ module Bundler
183
203
  end
184
204
 
185
205
  def requirement_satisfied_by?(requirement, activated, spec)
186
- return false unless requirement.matches_spec?(spec) || spec.source.is_a?(Source::Gemspec)
187
- spec.activate_platform!(requirement.__platform) if !@platforms || @platforms.include?(requirement.__platform)
188
- true
206
+ requirement.matches_spec?(spec) || spec.source.is_a?(Source::Gemspec)
189
207
  end
190
208
 
191
209
  def relevant_sources_for_vertex(vertex)
@@ -223,11 +241,12 @@ module Bundler
223
241
  end
224
242
 
225
243
  def self.platform_sort_key(platform)
226
- return ["", "", ""] if Gem::Platform::RUBY == platform
227
- platform.to_a.map {|part| part || "" }
244
+ # Prefer specific platform to not specific platform
245
+ return ["99-LAST", "", "", ""] if Gem::Platform::RUBY == platform
246
+ ["00", *platform.to_a.map {|part| part || "" }]
228
247
  end
229
248
 
230
- private
249
+ private
231
250
 
232
251
  # returns an integer \in (-\infty, 0]
233
252
  # a number closer to 0 means the dependency is less constraining
@@ -279,7 +298,7 @@ module Bundler
279
298
  versions_with_platforms = specs.map {|s| [s.version, s.platform] }
280
299
  message = String.new("Could not find gem '#{SharedHelpers.pretty_dependency(requirement)}' in #{source}#{cache_message}.\n")
281
300
  message << if versions_with_platforms.any?
282
- "The source contains '#{name}' at: #{formatted_versions_with_platforms(versions_with_platforms)}"
301
+ "The source contains the following versions of '#{name}': #{formatted_versions_with_platforms(versions_with_platforms)}"
283
302
  else
284
303
  "The source does not contain any versions of '#{name}'"
285
304
  end