rubygems-update 3.5.23 → 3.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (229) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +57 -0
  3. data/Manifest.txt +23 -16
  4. data/README.md +14 -9
  5. data/bundler/CHANGELOG.md +59 -0
  6. data/bundler/bundler.gemspec +2 -2
  7. data/bundler/lib/bundler/build_metadata.rb +2 -2
  8. data/bundler/lib/bundler/cli/console.rb +0 -4
  9. data/bundler/lib/bundler/cli/doctor.rb +4 -4
  10. data/bundler/lib/bundler/cli/exec.rb +1 -0
  11. data/bundler/lib/bundler/cli/gem.rb +1 -1
  12. data/bundler/lib/bundler/cli/info.rb +2 -2
  13. data/bundler/lib/bundler/cli/inject.rb +1 -1
  14. data/bundler/lib/bundler/cli/install.rb +4 -0
  15. data/bundler/lib/bundler/cli/lock.rb +20 -1
  16. data/bundler/lib/bundler/cli/pristine.rb +1 -1
  17. data/bundler/lib/bundler/cli/show.rb +2 -2
  18. data/bundler/lib/bundler/cli.rb +22 -53
  19. data/bundler/lib/bundler/compact_index_client/cache_file.rb +0 -5
  20. data/bundler/lib/bundler/compact_index_client/updater.rb +0 -11
  21. data/bundler/lib/bundler/definition.rb +134 -61
  22. data/bundler/lib/bundler/dependency.rb +1 -1
  23. data/bundler/lib/bundler/dsl.rb +2 -13
  24. data/bundler/lib/bundler/endpoint_specification.rb +10 -1
  25. data/bundler/lib/bundler/errors.rb +10 -0
  26. data/bundler/lib/bundler/feature_flag.rb +1 -0
  27. data/bundler/lib/bundler/fetcher/compact_index.rb +1 -1
  28. data/bundler/lib/bundler/fetcher.rb +10 -3
  29. data/bundler/lib/bundler/gem_helpers.rb +21 -5
  30. data/bundler/lib/bundler/injector.rb +2 -2
  31. data/bundler/lib/bundler/installer/standalone.rb +2 -2
  32. data/bundler/lib/bundler/installer.rb +4 -38
  33. data/bundler/lib/bundler/lazy_specification.rb +65 -24
  34. data/bundler/lib/bundler/lockfile_parser.rb +9 -1
  35. data/bundler/lib/bundler/man/bundle-add.1 +13 -10
  36. data/bundler/lib/bundler/man/bundle-add.1.ronn +12 -9
  37. data/bundler/lib/bundler/man/bundle-binstubs.1 +7 -4
  38. data/bundler/lib/bundler/man/bundle-binstubs.1.ronn +6 -3
  39. data/bundler/lib/bundler/man/bundle-cache.1 +30 -2
  40. data/bundler/lib/bundler/man/bundle-cache.1.ronn +31 -2
  41. data/bundler/lib/bundler/man/bundle-check.1 +3 -3
  42. data/bundler/lib/bundler/man/bundle-check.1.ronn +4 -2
  43. data/bundler/lib/bundler/man/bundle-clean.1 +1 -1
  44. data/bundler/lib/bundler/man/bundle-config.1 +3 -1
  45. data/bundler/lib/bundler/man/bundle-config.1.ronn +2 -0
  46. data/bundler/lib/bundler/man/bundle-console.1 +2 -4
  47. data/bundler/lib/bundler/man/bundle-console.1.ronn +2 -7
  48. data/bundler/lib/bundler/man/bundle-doctor.1 +2 -2
  49. data/bundler/lib/bundler/man/bundle-doctor.1.ronn +1 -1
  50. data/bundler/lib/bundler/man/bundle-env.1 +9 -0
  51. data/bundler/lib/bundler/man/bundle-env.1.ronn +10 -0
  52. data/bundler/lib/bundler/man/bundle-exec.1 +5 -2
  53. data/bundler/lib/bundler/man/bundle-exec.1.ronn +4 -1
  54. data/bundler/lib/bundler/man/bundle-fund.1 +22 -0
  55. data/bundler/lib/bundler/man/bundle-fund.1.ronn +25 -0
  56. data/bundler/lib/bundler/man/bundle-gem.1 +17 -5
  57. data/bundler/lib/bundler/man/bundle-gem.1.ronn +27 -6
  58. data/bundler/lib/bundler/man/bundle-help.1 +1 -1
  59. data/bundler/lib/bundler/man/bundle-info.1 +5 -2
  60. data/bundler/lib/bundler/man/bundle-info.1.ronn +6 -2
  61. data/bundler/lib/bundler/man/bundle-init.1 +3 -3
  62. data/bundler/lib/bundler/man/bundle-init.1.ronn +3 -2
  63. data/bundler/lib/bundler/man/bundle-inject.1 +10 -2
  64. data/bundler/lib/bundler/man/bundle-inject.1.ronn +9 -1
  65. data/bundler/lib/bundler/man/bundle-install.1 +14 -11
  66. data/bundler/lib/bundler/man/bundle-install.1.ronn +21 -16
  67. data/bundler/lib/bundler/man/bundle-issue.1 +45 -0
  68. data/bundler/lib/bundler/man/bundle-issue.1.ronn +37 -0
  69. data/bundler/lib/bundler/man/bundle-licenses.1 +9 -0
  70. data/bundler/lib/bundler/man/bundle-licenses.1.ronn +10 -0
  71. data/bundler/lib/bundler/man/bundle-list.1 +1 -1
  72. data/bundler/lib/bundler/man/bundle-list.1.ronn +4 -1
  73. data/bundler/lib/bundler/man/bundle-lock.1 +21 -6
  74. data/bundler/lib/bundler/man/bundle-lock.1.ronn +25 -4
  75. data/bundler/lib/bundler/man/bundle-open.1 +2 -2
  76. data/bundler/lib/bundler/man/bundle-open.1.ronn +2 -1
  77. data/bundler/lib/bundler/man/bundle-outdated.1 +8 -5
  78. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +8 -4
  79. data/bundler/lib/bundler/man/bundle-platform.1 +1 -1
  80. data/bundler/lib/bundler/man/bundle-plugin.1 +1 -1
  81. data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
  82. data/bundler/lib/bundler/man/bundle-pristine.1.ronn +1 -1
  83. data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
  84. data/bundler/lib/bundler/man/bundle-remove.1.ronn +1 -1
  85. data/bundler/lib/bundler/man/bundle-show.1 +5 -2
  86. data/bundler/lib/bundler/man/bundle-show.1.ronn +4 -0
  87. data/bundler/lib/bundler/man/bundle-update.1 +13 -7
  88. data/bundler/lib/bundler/man/bundle-update.1.ronn +14 -6
  89. data/bundler/lib/bundler/man/bundle-version.1 +1 -1
  90. data/bundler/lib/bundler/man/bundle-viz.1 +4 -4
  91. data/bundler/lib/bundler/man/bundle-viz.1.ronn +7 -3
  92. data/bundler/lib/bundler/man/bundle.1 +1 -1
  93. data/bundler/lib/bundler/man/gemfile.5 +1 -1
  94. data/bundler/lib/bundler/man/index.txt +4 -0
  95. data/bundler/lib/bundler/materialization.rb +59 -0
  96. data/bundler/lib/bundler/plugin/events.rb +24 -0
  97. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  98. data/bundler/lib/bundler/process_lock.rb +1 -1
  99. data/bundler/lib/bundler/remote_specification.rb +6 -1
  100. data/bundler/lib/bundler/resolver/base.rb +2 -6
  101. data/bundler/lib/bundler/resolver/candidate.rb +2 -2
  102. data/bundler/lib/bundler/resolver/spec_group.rb +4 -3
  103. data/bundler/lib/bundler/resolver.rb +5 -5
  104. data/bundler/lib/bundler/rubygems_ext.rb +17 -28
  105. data/bundler/lib/bundler/rubygems_gem_installer.rb +0 -1
  106. data/bundler/lib/bundler/rubygems_integration.rb +21 -11
  107. data/bundler/lib/bundler/runtime.rb +27 -7
  108. data/bundler/lib/bundler/self_manager.rb +2 -3
  109. data/bundler/lib/bundler/settings.rb +1 -0
  110. data/bundler/lib/bundler/shared_helpers.rb +2 -2
  111. data/bundler/lib/bundler/source/git/git_proxy.rb +0 -6
  112. data/bundler/lib/bundler/source/git.rb +56 -31
  113. data/bundler/lib/bundler/source/path.rb +2 -2
  114. data/bundler/lib/bundler/source_list.rb +1 -1
  115. data/bundler/lib/bundler/spec_set.rb +81 -56
  116. data/bundler/lib/bundler/stub_specification.rb +8 -0
  117. data/bundler/lib/bundler/templates/newgem/README.md.tt +1 -1
  118. data/bundler/lib/bundler/uri_credentials_filter.rb +1 -1
  119. data/bundler/lib/bundler/vendor/fileutils/COPYING +56 -0
  120. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +15 -13
  121. data/bundler/lib/bundler/vendor/securerandom/COPYING +56 -0
  122. data/bundler/lib/bundler/vendor/securerandom/lib/securerandom.rb +5 -5
  123. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +3 -5
  124. data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +11 -0
  125. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +1 -4
  126. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +2 -2
  127. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +2 -1
  128. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +9 -9
  129. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +1 -1
  130. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +5 -21
  131. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
  132. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  133. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +11 -0
  134. data/bundler/lib/bundler/vendor/uri/COPYING +56 -0
  135. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +37 -16
  136. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +3 -3
  137. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +1 -1
  138. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +16 -26
  139. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +2 -2
  140. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +10 -3
  141. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +26 -3
  142. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  143. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +9 -9
  144. data/bundler/lib/bundler/vendored_securerandom.rb +0 -2
  145. data/bundler/lib/bundler/version.rb +1 -1
  146. data/bundler/lib/bundler.rb +37 -13
  147. data/{CONTRIBUTING.md → doc/rubygems/CONTRIBUTING.md} +9 -9
  148. data/{POLICIES.md → doc/rubygems/POLICIES.md} +11 -11
  149. data/lib/rubygems/basic_specification.rb +5 -4
  150. data/lib/rubygems/commands/cleanup_command.rb +2 -2
  151. data/lib/rubygems/commands/contents_command.rb +4 -4
  152. data/lib/rubygems/commands/exec_command.rb +3 -0
  153. data/lib/rubygems/commands/pristine_command.rb +2 -2
  154. data/lib/rubygems/commands/push_command.rb +29 -5
  155. data/lib/rubygems/commands/rdoc_command.rb +2 -2
  156. data/lib/rubygems/commands/rebuild_command.rb +0 -2
  157. data/lib/rubygems/commands/setup_command.rb +1 -16
  158. data/lib/rubygems/commands/unpack_command.rb +0 -6
  159. data/lib/rubygems/commands/update_command.rb +2 -8
  160. data/lib/rubygems/config_file.rb +12 -0
  161. data/lib/rubygems/core_ext/kernel_warn.rb +2 -6
  162. data/lib/rubygems/defaults.rb +1 -1
  163. data/lib/rubygems/exceptions.rb +0 -6
  164. data/lib/rubygems/ext/builder.rb +6 -4
  165. data/lib/rubygems/ext/cargo_builder.rb +7 -4
  166. data/lib/rubygems/ext/cmake_builder.rb +7 -2
  167. data/lib/rubygems/ext/configure_builder.rb +7 -2
  168. data/lib/rubygems/ext/ext_conf_builder.rb +9 -5
  169. data/lib/rubygems/ext/rake_builder.rb +6 -1
  170. data/lib/rubygems/install_update_options.rb +5 -0
  171. data/lib/rubygems/installer.rb +2 -2
  172. data/lib/rubygems/platform.rb +4 -3
  173. data/lib/rubygems/psych_tree.rb +4 -0
  174. data/lib/rubygems/request_set/gem_dependency_api.rb +1 -1
  175. data/lib/rubygems/requirement.rb +0 -4
  176. data/lib/rubygems/resolver/composed_set.rb +3 -3
  177. data/lib/rubygems/resolver/git_set.rb +0 -1
  178. data/lib/rubygems/resolver/index_set.rb +2 -2
  179. data/lib/rubygems/resolver.rb +3 -3
  180. data/lib/rubygems/source/git.rb +13 -10
  181. data/lib/rubygems/spec_fetcher.rb +16 -5
  182. data/lib/rubygems/specification.rb +37 -31
  183. data/lib/rubygems/target_rbconfig.rb +50 -0
  184. data/lib/rubygems/uri.rb +1 -1
  185. data/lib/rubygems/util/licenses.rb +10 -1
  186. data/lib/rubygems/vendor/net-http/COPYING +56 -0
  187. data/lib/rubygems/vendor/net-http/lib/net/http/header.rb +1 -1
  188. data/lib/rubygems/vendor/net-http/lib/net/http/requests.rb +5 -0
  189. data/lib/rubygems/vendor/net-http/lib/net/http.rb +120 -36
  190. data/lib/rubygems/vendor/optparse/lib/optparse/ac.rb +16 -0
  191. data/lib/rubygems/vendor/optparse/lib/optparse/kwargs.rb +8 -3
  192. data/lib/rubygems/vendor/optparse/lib/optparse/version.rb +9 -0
  193. data/lib/rubygems/vendor/optparse/lib/optparse.rb +147 -51
  194. data/lib/rubygems/vendor/resolv/COPYING +56 -0
  195. data/lib/rubygems/vendor/resolv/lib/resolv.rb +50 -37
  196. data/lib/rubygems/vendor/securerandom/COPYING +56 -0
  197. data/lib/rubygems/vendor/securerandom/lib/securerandom.rb +5 -5
  198. data/lib/rubygems/vendor/timeout/COPYING +56 -0
  199. data/lib/rubygems/vendor/timeout/lib/timeout.rb +5 -8
  200. data/lib/rubygems/vendor/uri/COPYING +56 -0
  201. data/lib/rubygems/vendor/uri/lib/uri/common.rb +37 -16
  202. data/lib/rubygems/vendor/uri/lib/uri/file.rb +3 -3
  203. data/lib/rubygems/vendor/uri/lib/uri/ftp.rb +1 -1
  204. data/lib/rubygems/vendor/uri/lib/uri/generic.rb +16 -26
  205. data/lib/rubygems/vendor/uri/lib/uri/http.rb +2 -2
  206. data/lib/rubygems/vendor/uri/lib/uri/rfc2396_parser.rb +10 -3
  207. data/lib/rubygems/vendor/uri/lib/uri/rfc3986_parser.rb +26 -3
  208. data/lib/rubygems/vendor/uri/lib/uri/version.rb +1 -1
  209. data/lib/rubygems/vendor/uri/lib/uri.rb +9 -9
  210. data/lib/rubygems/vendored_securerandom.rb +0 -1
  211. data/lib/rubygems/version.rb +0 -4
  212. data/lib/rubygems.rb +29 -20
  213. data/rubygems-update.gemspec +5 -5
  214. data/setup.rb +1 -1
  215. metadata +36 -27
  216. data/bundler/lib/bundler/vendor/fileutils/LICENSE.txt +0 -22
  217. data/bundler/lib/bundler/vendor/securerandom/LICENSE.txt +0 -22
  218. data/bundler/lib/bundler/vendor/securerandom/lib/random/formatter.rb +0 -373
  219. data/bundler/lib/bundler/vendor/uri/LICENSE.txt +0 -22
  220. data/lib/rubygems/vendor/net-http/LICENSE.txt +0 -22
  221. data/lib/rubygems/vendor/net-http/lib/net/http/backward.rb +0 -40
  222. data/lib/rubygems/vendor/resolv/LICENSE.txt +0 -22
  223. data/lib/rubygems/vendor/securerandom/LICENSE.txt +0 -22
  224. data/lib/rubygems/vendor/securerandom/lib/random/formatter.rb +0 -373
  225. data/lib/rubygems/vendor/timeout/LICENSE.txt +0 -22
  226. data/lib/rubygems/vendor/uri/LICENSE.txt +0 -22
  227. /data/{MAINTAINERS.txt → doc/MAINTAINERS.txt} +0 -0
  228. /data/{bundler → doc/bundler}/UPGRADING.md +0 -0
  229. /data/{UPGRADING.md → doc/rubygems/UPGRADING.md} +0 -0
@@ -140,11 +140,11 @@ module Bundler::URI
140
140
 
141
141
  if !scheme
142
142
  raise InvalidURIError,
143
- "bad Bundler::URI(absolute but no scheme): #{uri}"
143
+ "bad Bundler::URI (absolute but no scheme): #{uri}"
144
144
  end
145
145
  if !opaque && (!path && (!host && !registry))
146
146
  raise InvalidURIError,
147
- "bad Bundler::URI(absolute but no path): #{uri}"
147
+ "bad Bundler::URI (absolute but no path): #{uri}"
148
148
  end
149
149
 
150
150
  when @regexp[:REL_URI]
@@ -173,7 +173,7 @@ module Bundler::URI
173
173
  # server = [ [ userinfo "@" ] hostport ]
174
174
 
175
175
  else
176
- raise InvalidURIError, "bad Bundler::URI(is not Bundler::URI?): #{uri}"
176
+ raise InvalidURIError, "bad Bundler::URI (is not Bundler::URI?): #{uri}"
177
177
  end
178
178
 
179
179
  path = '' if !path && !opaque # (see RFC2396 Section 5.2)
@@ -536,4 +536,11 @@ module Bundler::URI
536
536
  end
537
537
 
538
538
  end # class Parser
539
+
540
+ # Backward compatibility for Bundler::URI::REGEXP::PATTERN::*
541
+ RFC2396_Parser.new.pattern.each_pair do |sym, str|
542
+ unless RFC2396_REGEXP::PATTERN.const_defined?(sym, false)
543
+ RFC2396_REGEXP::PATTERN.const_set(sym, str)
544
+ end
545
+ end
539
546
  end # module Bundler::URI
@@ -78,7 +78,7 @@ module Bundler::URI
78
78
  begin
79
79
  uri = uri.to_str
80
80
  rescue NoMethodError
81
- raise InvalidURIError, "bad Bundler::URI(is not Bundler::URI?): #{uri.inspect}"
81
+ raise InvalidURIError, "bad Bundler::URI (is not Bundler::URI?): #{uri.inspect}"
82
82
  end
83
83
  uri.ascii_only? or
84
84
  raise InvalidURIError, "Bundler::URI must be ascii only #{uri.dump}"
@@ -127,7 +127,7 @@ module Bundler::URI
127
127
  m["fragment"]
128
128
  ]
129
129
  else
130
- raise InvalidURIError, "bad Bundler::URI(is not Bundler::URI?): #{uri.inspect}"
130
+ raise InvalidURIError, "bad Bundler::URI (is not Bundler::URI?): #{uri.inspect}"
131
131
  end
132
132
  end
133
133
 
@@ -135,12 +135,35 @@ module Bundler::URI
135
135
  Bundler::URI.for(*self.split(uri), self)
136
136
  end
137
137
 
138
-
139
138
  def join(*uris) # :nodoc:
140
139
  uris[0] = convert_to_uri(uris[0])
141
140
  uris.inject :merge
142
141
  end
143
142
 
143
+ # Compatibility for RFC2396 parser
144
+ def extract(str, schemes = nil, &block) # :nodoc:
145
+ warn "Bundler::URI::RFC3986_PARSER.extract is obsolete. Use Bundler::URI::RFC2396_PARSER.extract explicitly.", uplevel: 1 if $VERBOSE
146
+ RFC2396_PARSER.extract(str, schemes, &block)
147
+ end
148
+
149
+ # Compatibility for RFC2396 parser
150
+ def make_regexp(schemes = nil) # :nodoc:
151
+ warn "Bundler::URI::RFC3986_PARSER.make_regexp is obsolete. Use Bundler::URI::RFC2396_PARSER.make_regexp explicitly.", uplevel: 1 if $VERBOSE
152
+ RFC2396_PARSER.make_regexp(schemes)
153
+ end
154
+
155
+ # Compatibility for RFC2396 parser
156
+ def escape(str, unsafe = nil) # :nodoc:
157
+ warn "Bundler::URI::RFC3986_PARSER.escape is obsolete. Use Bundler::URI::RFC2396_PARSER.escape explicitly.", uplevel: 1 if $VERBOSE
158
+ unsafe ? RFC2396_PARSER.escape(str, unsafe) : RFC2396_PARSER.escape(str)
159
+ end
160
+
161
+ # Compatibility for RFC2396 parser
162
+ def unescape(str, escaped = nil) # :nodoc:
163
+ warn "Bundler::URI::RFC3986_PARSER.unescape is obsolete. Use Bundler::URI::RFC2396_PARSER.unescape explicitly.", uplevel: 1 if $VERBOSE
164
+ escaped ? RFC2396_PARSER.unescape(str, escaped) : RFC2396_PARSER.unescape(str)
165
+ end
166
+
144
167
  @@to_s = Kernel.instance_method(:to_s)
145
168
  if @@to_s.respond_to?(:bind_call)
146
169
  def inspect
@@ -1,6 +1,6 @@
1
1
  module Bundler::URI
2
2
  # :stopdoc:
3
- VERSION_CODE = '001301'.freeze
3
+ VERSION_CODE = '010002'.freeze
4
4
  VERSION = VERSION_CODE.scan(/../).collect{|n| n.to_i}.join('.').freeze
5
5
  # :startdoc:
6
6
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: false
2
2
  # Bundler::URI is a module providing classes to handle Uniform Resource Identifiers
3
- # (RFC2396[http://tools.ietf.org/html/rfc2396]).
3
+ # (RFC2396[https://www.rfc-editor.org/rfc/rfc2396]).
4
4
  #
5
5
  # == Features
6
6
  #
@@ -47,14 +47,14 @@
47
47
  # A good place to view an RFC spec is http://www.ietf.org/rfc.html.
48
48
  #
49
49
  # Here is a list of all related RFC's:
50
- # - RFC822[http://tools.ietf.org/html/rfc822]
51
- # - RFC1738[http://tools.ietf.org/html/rfc1738]
52
- # - RFC2255[http://tools.ietf.org/html/rfc2255]
53
- # - RFC2368[http://tools.ietf.org/html/rfc2368]
54
- # - RFC2373[http://tools.ietf.org/html/rfc2373]
55
- # - RFC2396[http://tools.ietf.org/html/rfc2396]
56
- # - RFC2732[http://tools.ietf.org/html/rfc2732]
57
- # - RFC3986[http://tools.ietf.org/html/rfc3986]
50
+ # - RFC822[https://www.rfc-editor.org/rfc/rfc822]
51
+ # - RFC1738[https://www.rfc-editor.org/rfc/rfc1738]
52
+ # - RFC2255[https://www.rfc-editor.org/rfc/rfc2255]
53
+ # - RFC2368[https://www.rfc-editor.org/rfc/rfc2368]
54
+ # - RFC2373[https://www.rfc-editor.org/rfc/rfc2373]
55
+ # - RFC2396[https://www.rfc-editor.org/rfc/rfc2396]
56
+ # - RFC2732[https://www.rfc-editor.org/rfc/rfc2732]
57
+ # - RFC3986[https://www.rfc-editor.org/rfc/rfc3986]
58
58
  #
59
59
  # == Class tree
60
60
  #
@@ -7,8 +7,6 @@
7
7
  begin
8
8
  require "rubygems/vendored_securerandom"
9
9
  rescue LoadError
10
- module Bundler::Random; end
11
10
  require_relative "vendor/securerandom/lib/securerandom"
12
11
  Gem::SecureRandom = Bundler::SecureRandom
13
- Gem::Random = Bundler::Random
14
12
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: false
2
2
 
3
3
  module Bundler
4
- VERSION = "2.5.23".freeze
4
+ VERSION = "2.6.0".freeze
5
5
 
6
6
  def self.bundler_major_version
7
7
  @bundler_major_version ||= VERSION.split(".").first.to_i
@@ -10,7 +10,6 @@ require_relative "bundler/plugin"
10
10
  require_relative "bundler/rubygems_ext"
11
11
  require_relative "bundler/rubygems_integration"
12
12
  require_relative "bundler/version"
13
- require_relative "bundler/constants"
14
13
  require_relative "bundler/current_ruby"
15
14
  require_relative "bundler/build_metadata"
16
15
 
@@ -52,6 +51,7 @@ module Bundler
52
51
  autoload :Env, File.expand_path("bundler/env", __dir__)
53
52
  autoload :Fetcher, File.expand_path("bundler/fetcher", __dir__)
54
53
  autoload :FeatureFlag, File.expand_path("bundler/feature_flag", __dir__)
54
+ autoload :FREEBSD, File.expand_path("bundler/constants", __dir__)
55
55
  autoload :GemHelper, File.expand_path("bundler/gem_helper", __dir__)
56
56
  autoload :GemHelpers, File.expand_path("bundler/gem_helpers", __dir__)
57
57
  autoload :GemVersionPromoter, File.expand_path("bundler/gem_version_promoter", __dir__)
@@ -62,6 +62,8 @@ module Bundler
62
62
  autoload :LazySpecification, File.expand_path("bundler/lazy_specification", __dir__)
63
63
  autoload :LockfileParser, File.expand_path("bundler/lockfile_parser", __dir__)
64
64
  autoload :MatchRemoteMetadata, File.expand_path("bundler/match_remote_metadata", __dir__)
65
+ autoload :Materialization, File.expand_path("bundler/materialization", __dir__)
66
+ autoload :NULL, File.expand_path("bundler/constants", __dir__)
65
67
  autoload :ProcessLock, File.expand_path("bundler/process_lock", __dir__)
66
68
  autoload :RemoteSpecification, File.expand_path("bundler/remote_specification", __dir__)
67
69
  autoload :Resolver, File.expand_path("bundler/resolver", __dir__)
@@ -80,6 +82,7 @@ module Bundler
80
82
  autoload :UI, File.expand_path("bundler/ui", __dir__)
81
83
  autoload :URICredentialsFilter, File.expand_path("bundler/uri_credentials_filter", __dir__)
82
84
  autoload :URINormalizer, File.expand_path("bundler/uri_normalizer", __dir__)
85
+ autoload :WINDOWS, File.expand_path("bundler/constants", __dir__)
83
86
  autoload :SafeMarshal, File.expand_path("bundler/safe_marshal", __dir__)
84
87
 
85
88
  class << self
@@ -209,6 +212,7 @@ module Bundler
209
212
  # Bundler.require(:test) # requires second_gem
210
213
  #
211
214
  def require(*groups)
215
+ load_plugins
212
216
  setup(*groups).require(*groups)
213
217
  end
214
218
 
@@ -252,12 +256,6 @@ module Bundler
252
256
  end
253
257
  end
254
258
 
255
- def most_specific_locked_platform?(platform)
256
- return false unless defined?(@definition) && @definition
257
-
258
- definition.most_specific_locked_platform == platform
259
- end
260
-
261
259
  def ruby_scope
262
260
  "#{Bundler.rubygems.ruby_engine}/#{RbConfig::CONFIG["ruby_version"]}"
263
261
  end
@@ -498,18 +496,27 @@ module Bundler
498
496
  end
499
497
 
500
498
  def which(executable)
501
- if File.file?(executable) && File.executable?(executable)
502
- executable
503
- elsif paths = ENV["PATH"]
499
+ executable_path = find_executable(executable)
500
+ return executable_path if executable_path
501
+
502
+ if (paths = ENV["PATH"])
504
503
  quote = '"'
505
504
  paths.split(File::PATH_SEPARATOR).find do |path|
506
505
  path = path[1..-2] if path.start_with?(quote) && path.end_with?(quote)
507
- executable_path = File.expand_path(executable, path)
508
- return executable_path if File.file?(executable_path) && File.executable?(executable_path)
506
+ executable_path = find_executable(File.expand_path(executable, path))
507
+ return executable_path if executable_path
509
508
  end
510
509
  end
511
510
  end
512
511
 
512
+ def find_executable(path)
513
+ extensions = RbConfig::CONFIG["EXECUTABLE_EXTS"]&.split
514
+ extensions = [RbConfig::CONFIG["EXEEXT"]] unless extensions&.any?
515
+ candidates = extensions.map {|ext| "#{path}#{ext}" }
516
+
517
+ candidates.find {|candidate| File.file?(candidate) && File.executable?(candidate) }
518
+ end
519
+
513
520
  def read_file(file)
514
521
  SharedHelpers.filesystem_access(file, :read) do
515
522
  File.open(file, "r:UTF-8", &:read)
@@ -562,13 +569,30 @@ module Bundler
562
569
 
563
570
  def git_present?
564
571
  return @git_present if defined?(@git_present)
565
- @git_present = Bundler.which("git#{RbConfig::CONFIG["EXEEXT"]}")
572
+ @git_present = Bundler.which("git")
566
573
  end
567
574
 
568
575
  def feature_flag
569
576
  @feature_flag ||= FeatureFlag.new(VERSION)
570
577
  end
571
578
 
579
+ def load_plugins(definition = Bundler.definition)
580
+ return if defined?(@load_plugins_ran)
581
+
582
+ Bundler.rubygems.load_plugins
583
+
584
+ requested_path_gems = definition.requested_specs.select {|s| s.source.is_a?(Source::Path) }
585
+ path_plugin_files = requested_path_gems.flat_map do |spec|
586
+ spec.matches_for_glob("rubygems_plugin#{Bundler.rubygems.suffix_pattern}")
587
+ rescue TypeError
588
+ error_message = "#{spec.name} #{spec.version} has an invalid gemspec"
589
+ raise Gem::InvalidSpecificationException, error_message
590
+ end
591
+ Bundler.rubygems.load_plugin_files(path_plugin_files)
592
+ Bundler.rubygems.load_env_plugins
593
+ @load_plugins_ran = true
594
+ end
595
+
572
596
  def reset!
573
597
  reset_paths!
574
598
  Plugin.reset!
@@ -11,11 +11,11 @@ contributors to follow to reduce the time it takes to get changes merged in.
11
11
  2. Ensure that your code blends well with ours:
12
12
  * No trailing whitespace
13
13
  * Match indentation (two spaces)
14
- * Match coding style (run `rake rubocop`)
14
+ * Match coding style (run `bin/rake rubocop`)
15
15
 
16
16
  3. If any new files are added or existing files removed in a commit or PR,
17
17
  please update the `Manifest.txt` accordingly. This can be done by running
18
- `rake update_manifest`
18
+ `bin/rake update_manifest`
19
19
 
20
20
  4. Don't modify the history file or version number.
21
21
 
@@ -70,13 +70,11 @@ And to run an individual test method named `test_default` within a test file, yo
70
70
 
71
71
  ### Running bundler tests
72
72
 
73
- Everything needs to be run from the `bundler/` subfolder.
74
-
75
73
  To setup bundler tests:
76
74
 
77
- rake spec:parallel_deps
75
+ bin/rake spec:parallel_deps
78
76
 
79
- To run the entire bundler test suite in parallel (it takes a while):
77
+ To run the entire bundler test suite in parallel (it takes a while), run the following from the `bundler/` subfolder:
80
78
 
81
79
  bin/parallel_rspec
82
80
 
@@ -84,7 +82,7 @@ There are some realworld higher level specs run in CI, but not run by `bin/paral
84
82
 
85
83
  bin/rake spec:realworld
86
84
 
87
- To run an individual test file location for example in `spec/install/gems/standalone_spec.rb` you can use:
85
+ To run an individual test file location for example in `spec/install/gems/standalone_spec.rb` you can use the following from the `bundler/` subfolder:
88
86
 
89
87
  bin/rspec spec/install/gems/standalone_spec.rb
90
88
 
@@ -92,11 +90,13 @@ To run an individual test file location for example in `spec/install/gems/standa
92
90
 
93
91
  You can check compliance with our code style with
94
92
 
95
- rake rubocop
93
+ bin/rake rubocop
96
94
 
97
95
  Optionally you can configure git hooks with to check this before every commit with
98
96
 
99
- rake git_hooks
97
+ bin/rake git_hooks
98
+
99
+ For more information, check [SETUP.md](../bundler/development/SETUP.md) and [DEBUGGING.md](../bundler/development/DEBUGGING.md).
100
100
 
101
101
  ## Issues
102
102
 
@@ -84,7 +84,7 @@ changes to `master` by default _won't_ make their way into the current stable
84
84
  branch, and development on `master` will be targeting the next minor
85
85
  or major release.
86
86
 
87
- There is a `rake prepare_release[<target_rubygems_version>]` rake task
87
+ There is a `bin/rake prepare_release[<target_rubygems_version>]` rake task
88
88
  that helps with creating a release. It takes a single argument, the _exact
89
89
  rubygems release_ being made (e.g. `3.2.3` when releasing bundler `2.2.3`).
90
90
  This task checks out the appropriate stable branch (`3.2`, for example), grabs
@@ -158,21 +158,21 @@ affect only very few users in rare cases.
158
158
 
159
159
  * Confirm all PRs that you want backported are properly tagged with `rubygems:
160
160
  <type>` or `bundler: <type>` labels at GitHub.
161
- * Run `rake prepare_release[<target_rubygems_version>]`. This will create a PR
162
- to the stable branch with the backports included in the release, and proper
163
- changelogs and version bumps. It will also create a PR to merge release
164
- changelogs into master.
161
+ * Run `bin/rake prepare_release[<target_rubygems_version>]`. This will create
162
+ a PR to the stable branch with the backports included in the release, and
163
+ proper changelogs and version bumps. It will also create a PR to merge
164
+ release changelogs into master.
165
165
  * Once CI passes, merge the release PR, switch to the stable branch and pull
166
166
  the PR just merged.
167
- * Release `bundler` with `rake bundler:release`.
168
- * Release `rubygems` with `rake release`.
167
+ * Release `bundler` with `bin/rake bundler:release`.
168
+ * Release `rubygems` with `bin/rake release`.
169
169
 
170
170
  ### Steps for minor and major releases
171
171
 
172
172
  * Confirm all PRs that you want listed in changelogs are properly tagged with
173
173
  `rubygems: <type>` or `bundler: <type>` labels at GitHub.
174
- * Run `rake prepare_release[<target_rubygems_version>]`. This will create a
175
- new stable branch off the master branch, and create a PR to it with the
174
+ * Run `bin/rake prepare_release[<target_rubygems_version>]`. This will create
175
+ a new stable branch off the master branch, and create a PR to it with the
176
176
  proper version bumps and changelogs. It will also create a PR to merge
177
177
  release changelogs into master.
178
178
  * Replace the stable branch in the workflows with the new stable branch, and
@@ -181,8 +181,8 @@ affect only very few users in rare cases.
181
181
  to the master PR.
182
182
  * Once CI passes, merge the release PR, switch to the stable branch and pull
183
183
  the PR just merged.
184
- * Release `bundler` with `rake bundler:release`.
185
- * Release `rubygems` with `rake release`.
184
+ * Release `bundler` with `bin/rake bundler:release`.
185
+ * Release `rubygems` with `bin/rake release`.
186
186
 
187
187
  ## Committer Access
188
188
 
@@ -134,7 +134,6 @@ class Gem::BasicSpecification
134
134
  end
135
135
 
136
136
  def find_full_gem_path # :nodoc:
137
- # TODO: also, shouldn't it default to full_name if it hasn't been written?
138
137
  File.expand_path File.join(gems_dir, full_name)
139
138
  end
140
139
 
@@ -142,10 +141,10 @@ class Gem::BasicSpecification
142
141
 
143
142
  ##
144
143
  # The full path to the gem (install path + full name).
144
+ #
145
+ # TODO: This is duplicated with #gem_dir. Eventually either of them should be deprecated.
145
146
 
146
147
  def full_gem_path
147
- # TODO: This is a heavily used method by gems, so we'll need
148
- # to aleast just alias it to #gem_dir rather than remove it.
149
148
  @full_gem_path ||= find_full_gem_path
150
149
  end
151
150
 
@@ -221,9 +220,11 @@ class Gem::BasicSpecification
221
220
  ##
222
221
  # Returns the full path to this spec's gem directory.
223
222
  # eg: /usr/local/lib/ruby/1.8/gems/mygem-1.0
223
+ #
224
+ # TODO: This is duplicated with #full_gem_path. Eventually either of them should be deprecated.
224
225
 
225
226
  def gem_dir
226
- @gem_dir ||= File.expand_path File.join(gems_dir, full_name)
227
+ @gem_dir ||= find_full_gem_path
227
228
  end
228
229
 
229
230
  ##
@@ -113,9 +113,9 @@ If no gems are named all gems in GEM_HOME are cleaned.
113
113
  @candidate_gems = if options[:args].empty?
114
114
  Gem::Specification.to_a
115
115
  else
116
- options[:args].map do |gem_name|
116
+ options[:args].flat_map do |gem_name|
117
117
  Gem::Specification.find_all_by_name gem_name
118
- end.flatten
118
+ end
119
119
  end
120
120
  end
121
121
 
@@ -102,7 +102,7 @@ prefix or only the files that are requireable.
102
102
  end
103
103
 
104
104
  def files_in_default_gem(spec)
105
- spec.files.map do |file|
105
+ spec.files.filter_map do |file|
106
106
  if file.start_with?("#{spec.bindir}/")
107
107
  [RbConfig::CONFIG["bindir"], file.delete_prefix("#{spec.bindir}/")]
108
108
  else
@@ -119,7 +119,7 @@ prefix or only the files that are requireable.
119
119
 
120
120
  [resolve.delete_suffix(requirable_part), requirable_part]
121
121
  end
122
- end.compact
122
+ end
123
123
  end
124
124
 
125
125
  def gem_contents(name)
@@ -189,8 +189,8 @@ prefix or only the files that are requireable.
189
189
  end
190
190
 
191
191
  def specification_directories # :nodoc:
192
- options[:specdirs].map do |i|
192
+ options[:specdirs].flat_map do |i|
193
193
  [i, File.join(i, "specifications")]
194
- end.flatten
194
+ end
195
195
  end
196
196
  end
@@ -222,8 +222,11 @@ to the same gem path as user-installed gems.
222
222
  terminate_interaction 1
223
223
  end
224
224
 
225
+ old_exe = $0
226
+ $0 = exe
225
227
  load Gem.activate_bin_path(contains_executable.first.name, exe, ">= 0.a")
226
228
  ensure
229
+ $0 = old_exe if old_exe
227
230
  ARGV.replace argv
228
231
  end
229
232
 
@@ -120,9 +120,9 @@ extensions will be restored.
120
120
  elsif options[:only_missing_extensions]
121
121
  specification_record.select(&:missing_extensions?)
122
122
  else
123
- get_all_gem_names.sort.map do |gem_name|
123
+ get_all_gem_names.sort.flat_map do |gem_name|
124
124
  specification_record.find_all_by_name(gem_name, options[:version]).reverse
125
- end.flatten
125
+ end
126
126
  end
127
127
 
128
128
  specs = specs.select {|spec| spec.platform == RUBY_ENGINE || Gem::Platform.local === spec.platform || spec.platform == Gem::Platform::RUBY }
@@ -30,7 +30,7 @@ The push command will use ~/.gem/credentials to authenticate to a server, but yo
30
30
  end
31
31
 
32
32
  def initialize
33
- super "push", "Push a gem up to the gem server", host: host
33
+ super "push", "Push a gem up to the gem server", host: host, attestations: []
34
34
 
35
35
  @user_defined_host = false
36
36
 
@@ -45,6 +45,11 @@ The push command will use ~/.gem/credentials to authenticate to a server, but yo
45
45
  @user_defined_host = true
46
46
  end
47
47
 
48
+ add_option("--attestation FILE",
49
+ "Push with sigstore attestations") do |value, options|
50
+ options[:attestations] << value
51
+ end
52
+
48
53
  @host = nil
49
54
  end
50
55
 
@@ -88,10 +93,18 @@ The push command will use ~/.gem/credentials to authenticate to a server, but yo
88
93
 
89
94
  def send_push_request(name, args)
90
95
  rubygems_api_request(*args, scope: get_push_scope) do |request|
91
- request.body = Gem.read_binary name
92
- request.add_field "Content-Length", request.body.size
93
- request.add_field "Content-Type", "application/octet-stream"
94
- request.add_field "Authorization", api_key
96
+ body = Gem.read_binary name
97
+ if options[:attestations].any?
98
+ request.set_form([
99
+ ["gem", body, { filename: name, content_type: "application/octet-stream" }],
100
+ get_attestations_part,
101
+ ], "multipart/form-data")
102
+ else
103
+ request.body = body
104
+ request.add_field "Content-Type", "application/octet-stream"
105
+ request.add_field "Content-Length", request.body.size
106
+ end
107
+ request.add_field "Authorization", api_key
95
108
  end
96
109
  end
97
110
 
@@ -107,4 +120,15 @@ The push command will use ~/.gem/credentials to authenticate to a server, but yo
107
120
  def get_push_scope
108
121
  :push_rubygem
109
122
  end
123
+
124
+ def get_attestations_part
125
+ bundles = "[" + options[:attestations].map do |attestation|
126
+ Gem.read_binary(attestation)
127
+ end.join(",") + "]"
128
+ [
129
+ "attestations",
130
+ bundles,
131
+ { content_type: "application/json" },
132
+ ]
133
+ end
110
134
  end
@@ -64,9 +64,9 @@ Use --overwrite to force rebuilding of documentation.
64
64
  specs = if options[:all]
65
65
  Gem::Specification.to_a
66
66
  else
67
- get_all_gem_names.map do |name|
67
+ get_all_gem_names.flat_map do |name|
68
68
  Gem::Specification.find_by_name name, options[:version]
69
- end.flatten.uniq
69
+ end.uniq
70
70
  end
71
71
 
72
72
  if specs.empty?
@@ -10,8 +10,6 @@ require_relative "../package"
10
10
  class Gem::Commands::RebuildCommand < Gem::Command
11
11
  include Gem::GemspecHelpers
12
12
 
13
- DATE_FORMAT = "%Y-%m-%d %H:%M:%S.%N Z"
14
-
15
13
  def initialize
16
14
  super "rebuild", "Attempt to reproduce a build of a gem."
17
15
 
@@ -107,15 +107,6 @@ class Gem::Commands::SetupCommand < Gem::Command
107
107
  @verbose = nil
108
108
  end
109
109
 
110
- def check_ruby_version
111
- required_version = Gem::Requirement.new ">= 2.6.0"
112
-
113
- unless required_version.satisfied_by? Gem.ruby_version
114
- alert_error "Expected Ruby version #{required_version}, is #{Gem.ruby_version}"
115
- terminate_interaction 1
116
- end
117
- end
118
-
119
110
  def defaults_str # :nodoc:
120
111
  "--format-executable --document ri --regenerate-binstubs"
121
112
  end
@@ -148,8 +139,6 @@ By default, this RubyGems will install gem as:
148
139
  def execute
149
140
  @verbose = Gem.configuration.really_verbose
150
141
 
151
- check_ruby_version
152
-
153
142
  require "fileutils"
154
143
  if Gem.configuration.really_verbose
155
144
  extend FileUtils::Verbose
@@ -279,11 +268,7 @@ By default, this RubyGems will install gem as:
279
268
  File.open bin_cmd_file, "w" do |file|
280
269
  file.puts <<-TEXT
281
270
  @ECHO OFF
282
- IF NOT "%~f0" == "~f0" GOTO :WinNT
283
- @"#{File.basename(Gem.ruby).chomp('"')}" "#{dest_file}" %1 %2 %3 %4 %5 %6 %7 %8 %9
284
- GOTO :EOF
285
- :WinNT
286
- @"#{File.basename(Gem.ruby).chomp('"')}" "%~dpn0" %*
271
+ @"%~dp0#{File.basename(Gem.ruby).chomp('"')}" "%~dpn0" %*
287
272
  TEXT
288
273
  end
289
274
 
@@ -143,12 +143,6 @@ command help for an example.
143
143
  # get_path 'rake', '< 0.1' # nil
144
144
  # get_path 'rak' # nil (exact name required)
145
145
  #--
146
- # TODO: This should be refactored so that it's a general service. I don't
147
- # think any of our existing classes are the right place though. Just maybe
148
- # 'Cache'?
149
- #
150
- # TODO: It just uses Gem.dir for now. What's an easy way to get the list of
151
- # source directories?
152
146
 
153
147
  def get_path(dependency)
154
148
  return dependency.name if /\.gem$/i.match?(dependency.name)
@@ -317,16 +317,10 @@ command to remove old versions.
317
317
 
318
318
  #
319
319
  # Oldest version we support downgrading to. This is the version that
320
- # originally ships with the first patch version of each ruby, because we never
321
- # test each ruby against older rubygems, so we can't really guarantee it
322
- # works. Version list can be checked here: https://stdgems.org/rubygems
320
+ # originally ships with the oldest supported patch version of ruby.
323
321
  #
324
322
  def oldest_supported_version
325
323
  @oldest_supported_version ||=
326
- if Gem.ruby_version > Gem::Version.new("3.1.a")
327
- Gem::Version.new("3.3.3")
328
- else
329
- Gem::Version.new("3.2.3")
330
- end
324
+ Gem::Version.new("3.3.3")
331
325
  end
332
326
  end