rubygems-update 3.2.33 → 3.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (139) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +77 -4
  3. data/CONTRIBUTING.md +40 -10
  4. data/Manifest.txt +7 -5
  5. data/POLICIES.md +22 -8
  6. data/README.md +9 -7
  7. data/UPGRADING.md +5 -81
  8. data/bin/gem +1 -6
  9. data/bundler/CHANGELOG.md +47 -0
  10. data/bundler/exe/bundle +7 -8
  11. data/bundler/lib/bundler/.document +1 -0
  12. data/bundler/lib/bundler/build_metadata.rb +2 -2
  13. data/bundler/lib/bundler/cli/gem.rb +1 -1
  14. data/bundler/lib/bundler/cli/install.rb +2 -3
  15. data/bundler/lib/bundler/cli.rb +5 -0
  16. data/bundler/lib/bundler/definition.rb +14 -5
  17. data/bundler/lib/bundler/dependency.rb +5 -7
  18. data/bundler/lib/bundler/dsl.rb +0 -27
  19. data/bundler/lib/bundler/endpoint_specification.rb +0 -8
  20. data/bundler/lib/bundler/fetcher/compact_index.rb +9 -4
  21. data/bundler/lib/bundler/fetcher.rb +2 -5
  22. data/bundler/lib/bundler/injector.rb +10 -1
  23. data/bundler/lib/bundler/installer/gem_installer.rb +1 -6
  24. data/bundler/lib/bundler/installer.rb +1 -4
  25. data/bundler/lib/bundler/lockfile_parser.rb +10 -13
  26. data/bundler/lib/bundler/man/bundle-add.1 +9 -1
  27. data/bundler/lib/bundler/man/bundle-add.1.ronn +7 -1
  28. data/bundler/lib/bundler/man/bundle-config.1 +2 -2
  29. data/bundler/lib/bundler/man/bundle-config.1.ronn +3 -3
  30. data/bundler/lib/bundler/man/bundle-install.1 +1 -1
  31. data/bundler/lib/bundler/man/bundle-install.1.ronn +2 -2
  32. data/bundler/lib/bundler/man/bundle-update.1 +1 -1
  33. data/bundler/lib/bundler/man/bundle-update.1.ronn +2 -1
  34. data/bundler/lib/bundler/man/gemfile.5 +1 -1
  35. data/bundler/lib/bundler/man/gemfile.5.ronn +1 -1
  36. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  37. data/bundler/lib/bundler/process_lock.rb +1 -1
  38. data/bundler/lib/bundler/psyched_yaml.rb +1 -13
  39. data/bundler/lib/bundler/resolver.rb +34 -29
  40. data/bundler/lib/bundler/rubygems_ext.rb +2 -0
  41. data/bundler/lib/bundler/rubygems_gem_installer.rb +1 -1
  42. data/bundler/lib/bundler/rubygems_integration.rb +11 -48
  43. data/bundler/lib/bundler/self_manager.rb +76 -0
  44. data/bundler/lib/bundler/settings.rb +1 -0
  45. data/bundler/lib/bundler/shared_helpers.rb +2 -9
  46. data/bundler/lib/bundler/source/metadata.rb +1 -1
  47. data/bundler/lib/bundler/templates/Executable.bundler +1 -1
  48. data/bundler/lib/bundler/templates/Gemfile +0 -2
  49. data/bundler/lib/bundler/templates/gems.rb +0 -3
  50. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +10 -1
  51. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +1 -1
  52. data/bundler/lib/bundler/templates/newgem/test/minitest/{newgem_test.rb.tt → test_newgem.rb.tt} +1 -1
  53. data/bundler/lib/bundler/ui/shell.rb +1 -1
  54. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +6 -6
  55. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +5 -3
  56. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +6 -2
  57. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
  58. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +9 -4
  59. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +19 -1
  60. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +22 -4
  61. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
  62. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
  63. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +17 -80
  64. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +0 -1
  65. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +5 -6
  66. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +0 -1
  67. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +0 -1
  68. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
  69. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +0 -1
  70. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +1 -14
  71. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +1 -12
  72. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  73. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +84 -0
  74. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +22 -0
  75. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +0 -1
  76. data/bundler/lib/bundler/version.rb +1 -1
  77. data/bundler/lib/bundler.rb +9 -3
  78. data/hide_lib_for_update/note.txt +0 -4
  79. data/lib/rubygems/bundler_version_finder.rb +10 -42
  80. data/lib/rubygems/command_manager.rb +1 -1
  81. data/lib/rubygems/commands/install_command.rb +5 -2
  82. data/lib/rubygems/commands/server_command.rb +14 -77
  83. data/lib/rubygems/commands/setup_command.rb +4 -16
  84. data/lib/rubygems/commands/update_command.rb +9 -4
  85. data/lib/rubygems/defaults.rb +2 -20
  86. data/lib/rubygems/dependency.rb +7 -7
  87. data/lib/rubygems/deprecate.rb +53 -6
  88. data/lib/rubygems/errors.rb +0 -3
  89. data/lib/rubygems/exceptions.rb +30 -1
  90. data/lib/rubygems/ext/builder.rb +5 -3
  91. data/lib/rubygems/install_update_options.rb +11 -2
  92. data/lib/rubygems/installer.rb +11 -1
  93. data/lib/rubygems/name_tuple.rb +2 -3
  94. data/lib/rubygems/path_support.rb +1 -6
  95. data/lib/rubygems/platform.rb +4 -0
  96. data/lib/rubygems/remote_fetcher.rb +1 -1
  97. data/lib/rubygems/requirement.rb +1 -1
  98. data/lib/rubygems/resolver/installer_set.rb +1 -1
  99. data/lib/rubygems/security/policy.rb +1 -3
  100. data/lib/rubygems/security.rb +14 -7
  101. data/lib/rubygems/source.rb +3 -1
  102. data/lib/rubygems/spec_fetcher.rb +1 -1
  103. data/lib/rubygems/specification.rb +12 -16
  104. data/lib/rubygems/stub_specification.rb +1 -1
  105. data/lib/rubygems/text.rb +21 -20
  106. data/lib/rubygems/uninstaller.rb +4 -1
  107. data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
  108. data/lib/rubygems/version.rb +2 -0
  109. data/lib/rubygems.rb +54 -55
  110. data/rubygems-update.gemspec +1 -1
  111. data/setup.rb +1 -6
  112. data/test/rubygems/helper.rb +20 -6
  113. data/test/rubygems/test_config.rb +2 -2
  114. data/test/rubygems/test_exit.rb +11 -0
  115. data/test/rubygems/test_gem.rb +46 -76
  116. data/test/rubygems/test_gem_bundler_version_finder.rb +22 -43
  117. data/test/rubygems/test_gem_command_manager.rb +16 -2
  118. data/test/rubygems/test_gem_commands_install_command.rb +33 -0
  119. data/test/rubygems/test_gem_commands_open_command.rb +1 -1
  120. data/test/rubygems/test_gem_commands_server_command.rb +4 -46
  121. data/test/rubygems/test_gem_commands_update_command.rb +2 -2
  122. data/test/rubygems/test_gem_dependency.rb +4 -8
  123. data/test/rubygems/test_gem_installer.rb +0 -27
  124. data/test/rubygems/test_gem_path_support.rb +2 -6
  125. data/test/rubygems/test_gem_remote_fetcher.rb +15 -0
  126. data/test/rubygems/test_gem_requirement.rb +0 -1
  127. data/test/rubygems/test_gem_security.rb +1 -1
  128. data/test/rubygems/test_gem_specification.rb +16 -25
  129. data/test/rubygems/test_gem_stream_ui.rb +1 -1
  130. data/test/rubygems/test_gem_text.rb +6 -0
  131. data/test/rubygems/test_kernel.rb +1 -13
  132. data/test/rubygems/test_project_sanity.rb +1 -1
  133. data/test/rubygems/test_require.rb +0 -32
  134. data/test/rubygems/test_rubygems.rb +23 -0
  135. metadata +10 -8
  136. data/bundler/lib/bundler/gemdeps.rb +0 -29
  137. data/lib/rubygems/server.rb +0 -882
  138. data/test/rubygems/bogussources.rb +0 -9
  139. data/test/rubygems/test_gem_server.rb +0 -608
@@ -3,7 +3,6 @@
3
3
  # = uri/common.rb
4
4
  #
5
5
  # Author:: Akira Yamada <akira@ruby-lang.org>
6
- # Revision:: $Id$
7
6
  # License::
8
7
  # You can redistribute it and/or modify it under the same term as Ruby.
9
8
  #
@@ -61,82 +60,6 @@ module Bundler::URI
61
60
  module_function :make_components_hash
62
61
  end
63
62
 
64
- # Module for escaping unsafe characters with codes.
65
- module Escape
66
- #
67
- # == Synopsis
68
- #
69
- # Bundler::URI.escape(str [, unsafe])
70
- #
71
- # == Args
72
- #
73
- # +str+::
74
- # String to replaces in.
75
- # +unsafe+::
76
- # Regexp that matches all symbols that must be replaced with codes.
77
- # By default uses <tt>UNSAFE</tt>.
78
- # When this argument is a String, it represents a character set.
79
- #
80
- # == Description
81
- #
82
- # Escapes the string, replacing all unsafe characters with codes.
83
- #
84
- # This method is obsolete and should not be used. Instead, use
85
- # CGI.escape, Bundler::URI.encode_www_form or Bundler::URI.encode_www_form_component
86
- # depending on your specific use case.
87
- #
88
- # == Usage
89
- #
90
- # require 'bundler/vendor/uri/lib/uri'
91
- #
92
- # enc_uri = Bundler::URI.escape("http://example.com/?a=\11\15")
93
- # # => "http://example.com/?a=%09%0D"
94
- #
95
- # Bundler::URI.unescape(enc_uri)
96
- # # => "http://example.com/?a=\t\r"
97
- #
98
- # Bundler::URI.escape("@?@!", "!?")
99
- # # => "@%3F@%21"
100
- #
101
- def escape(*arg)
102
- warn "Bundler::URI.escape is obsolete", uplevel: 1
103
- DEFAULT_PARSER.escape(*arg)
104
- end
105
- alias encode escape
106
- #
107
- # == Synopsis
108
- #
109
- # Bundler::URI.unescape(str)
110
- #
111
- # == Args
112
- #
113
- # +str+::
114
- # String to unescape.
115
- #
116
- # == Description
117
- #
118
- # This method is obsolete and should not be used. Instead, use
119
- # CGI.unescape, Bundler::URI.decode_www_form or Bundler::URI.decode_www_form_component
120
- # depending on your specific use case.
121
- #
122
- # == Usage
123
- #
124
- # require 'bundler/vendor/uri/lib/uri'
125
- #
126
- # enc_uri = Bundler::URI.escape("http://example.com/?a=\11\15")
127
- # # => "http://example.com/?a=%09%0D"
128
- #
129
- # Bundler::URI.unescape(enc_uri)
130
- # # => "http://example.com/?a=\t\r"
131
- #
132
- def unescape(*arg)
133
- warn "Bundler::URI.unescape is obsolete", uplevel: 1
134
- DEFAULT_PARSER.unescape(*arg)
135
- end
136
- alias decode unescape
137
- end # module Escape
138
-
139
- extend Escape
140
63
  include REGEXP
141
64
 
142
65
  @@schemes = {}
@@ -145,6 +68,20 @@ module Bundler::URI
145
68
  @@schemes
146
69
  end
147
70
 
71
+ #
72
+ # Construct a Bundler::URI instance, using the scheme to detect the appropriate class
73
+ # from +Bundler::URI.scheme_list+.
74
+ #
75
+ def self.for(scheme, *arguments, default: Generic)
76
+ if scheme
77
+ uri_class = @@schemes[scheme.upcase] || default
78
+ else
79
+ uri_class = default
80
+ end
81
+
82
+ return uri_class.new(scheme, *arguments)
83
+ end
84
+
148
85
  #
149
86
  # Base class for all Bundler::URI exceptions.
150
87
  #
@@ -315,7 +252,7 @@ module Bundler::URI
315
252
  #
316
253
  # Returns a Regexp object which matches to Bundler::URI-like strings.
317
254
  # The Regexp object returned by this method includes arbitrary
318
- # number of capture group (parentheses). Never rely on it's number.
255
+ # number of capture group (parentheses). Never rely on its number.
319
256
  #
320
257
  # == Usage
321
258
  #
@@ -362,7 +299,7 @@ module Bundler::URI
362
299
  # If +enc+ is given, convert +str+ to the encoding before percent encoding.
363
300
  #
364
301
  # This is an implementation of
365
- # http://www.w3.org/TR/2013/CR-html5-20130806/forms.html#url-encoded-form-data.
302
+ # https://www.w3.org/TR/2013/CR-html5-20130806/forms.html#url-encoded-form-data.
366
303
  #
367
304
  # See Bundler::URI.decode_www_form_component, Bundler::URI.encode_www_form.
368
305
  def self.encode_www_form_component(str, enc=nil)
@@ -403,7 +340,7 @@ module Bundler::URI
403
340
  # This method doesn't handle files. When you send a file, use
404
341
  # multipart/form-data.
405
342
  #
406
- # This refers http://url.spec.whatwg.org/#concept-urlencoded-serializer
343
+ # This refers https://url.spec.whatwg.org/#concept-urlencoded-serializer
407
344
  #
408
345
  # Bundler::URI.encode_www_form([["q", "ruby"], ["lang", "en"]])
409
346
  # #=> "q=ruby&lang=en"
@@ -3,7 +3,6 @@
3
3
  #
4
4
  # Author:: Akira Yamada <akira@ruby-lang.org>
5
5
  # License:: You can redistribute it and/or modify it under the same term as Ruby.
6
- # Revision:: $Id$
7
6
  #
8
7
  # See Bundler::URI for general documentation
9
8
  #
@@ -4,7 +4,6 @@
4
4
  #
5
5
  # Author:: Akira Yamada <akira@ruby-lang.org>
6
6
  # License:: You can redistribute it and/or modify it under the same term as Ruby.
7
- # Revision:: $Id$
8
7
  #
9
8
  # See Bundler::URI for general documentation
10
9
  #
@@ -1098,7 +1097,7 @@ module Bundler::URI
1098
1097
  # # => "http://my.example.com/main.rbx?page=1"
1099
1098
  #
1100
1099
  def merge(oth)
1101
- rel = parser.send(:convert_to_uri, oth)
1100
+ rel = parser.__send__(:convert_to_uri, oth)
1102
1101
 
1103
1102
  if rel.absolute?
1104
1103
  #raise BadURIError, "both Bundler::URI are absolute" if absolute?
@@ -1183,7 +1182,7 @@ module Bundler::URI
1183
1182
 
1184
1183
  # :stopdoc:
1185
1184
  def route_from0(oth)
1186
- oth = parser.send(:convert_to_uri, oth)
1185
+ oth = parser.__send__(:convert_to_uri, oth)
1187
1186
  if self.relative?
1188
1187
  raise BadURIError,
1189
1188
  "relative Bundler::URI: #{self}"
@@ -1291,7 +1290,7 @@ module Bundler::URI
1291
1290
  # #=> #<Bundler::URI::Generic /main.rbx?page=1>
1292
1291
  #
1293
1292
  def route_to(oth)
1294
- parser.send(:convert_to_uri, oth).route_from(self)
1293
+ parser.__send__(:convert_to_uri, oth).route_from(self)
1295
1294
  end
1296
1295
 
1297
1296
  #
@@ -1405,7 +1404,7 @@ module Bundler::URI
1405
1404
  # Returns an Array of the components defined from the COMPONENT Array.
1406
1405
  def component_ary
1407
1406
  component.collect do |x|
1408
- self.send(x)
1407
+ self.__send__(x)
1409
1408
  end
1410
1409
  end
1411
1410
  protected :component_ary
@@ -1430,7 +1429,7 @@ module Bundler::URI
1430
1429
  def select(*components)
1431
1430
  components.collect do |c|
1432
1431
  if component.include?(c)
1433
- self.send(c)
1432
+ self.__send__(c)
1434
1433
  else
1435
1434
  raise ArgumentError,
1436
1435
  "expected of components of #{self.class} (#{self.class.component.join(', ')})"
@@ -3,7 +3,6 @@
3
3
  #
4
4
  # Author:: Akira Yamada <akira@ruby-lang.org>
5
5
  # License:: You can redistribute it and/or modify it under the same term as Ruby.
6
- # Revision:: $Id$
7
6
  #
8
7
  # See Bundler::URI for general documentation
9
8
  #
@@ -3,7 +3,6 @@
3
3
  #
4
4
  # Author:: Akira Yamada <akira@ruby-lang.org>
5
5
  # License:: You can redistribute it and/or modify it under the same term as Ruby.
6
- # Revision:: $Id$
7
6
  #
8
7
  # See Bundler::URI for general documentation
9
8
  #
@@ -7,7 +7,6 @@
7
7
  # License::
8
8
  # Bundler::URI::LDAP is copyrighted free software by Takaaki Tateishi and Akira Yamada.
9
9
  # You can redistribute it and/or modify it under the same term as Ruby.
10
- # Revision:: $Id$
11
10
  #
12
11
  # See Bundler::URI for general documentation
13
12
  #
@@ -119,6 +118,7 @@ module Bundler::URI
119
118
 
120
119
  # Private method to cleanup +dn+ from using the +path+ component attribute.
121
120
  def parse_dn
121
+ raise InvalidURIError, 'bad LDAP URL' unless @path
122
122
  @dn = @path[1..-1]
123
123
  end
124
124
  private :parse_dn
@@ -3,7 +3,6 @@
3
3
  #
4
4
  # Author:: Akira Yamada <akira@ruby-lang.org>
5
5
  # License:: You can redistribute it and/or modify it under the same term as Ruby.
6
- # Revision:: $Id$
7
6
  #
8
7
  # See Bundler::URI for general documentation
9
8
  #
@@ -3,7 +3,6 @@
3
3
  # = uri/common.rb
4
4
  #
5
5
  # Author:: Akira Yamada <akira@ruby-lang.org>
6
- # Revision:: $Id$
7
6
  # License::
8
7
  # You can redistribute it and/or modify it under the same term as Ruby.
9
8
  #
@@ -208,21 +207,9 @@ module Bundler::URI
208
207
  # #=> #<Bundler::URI::LDAP ldap://ldap.example.com/dc=example?user=john>
209
208
  #
210
209
  def parse(uri)
211
- scheme, userinfo, host, port,
212
- registry, path, opaque, query, fragment = self.split(uri)
213
-
214
- if scheme && Bundler::URI.scheme_list.include?(scheme.upcase)
215
- Bundler::URI.scheme_list[scheme.upcase].new(scheme, userinfo, host, port,
216
- registry, path, opaque, query,
217
- fragment, self)
218
- else
219
- Generic.new(scheme, userinfo, host, port,
220
- registry, path, opaque, query,
221
- fragment, self)
222
- end
210
+ Bundler::URI.for(*self.split(uri), self)
223
211
  end
224
212
 
225
-
226
213
  #
227
214
  # == Args
228
215
  #
@@ -69,18 +69,7 @@ module Bundler::URI
69
69
  end
70
70
 
71
71
  def parse(uri) # :nodoc:
72
- scheme, userinfo, host, port,
73
- registry, path, opaque, query, fragment = self.split(uri)
74
- scheme_list = Bundler::URI.scheme_list
75
- if scheme && scheme_list.include?(uc = scheme.upcase)
76
- scheme_list[uc].new(scheme, userinfo, host, port,
77
- registry, path, opaque, query,
78
- fragment, self)
79
- else
80
- Generic.new(scheme, userinfo, host, port,
81
- registry, path, opaque, query,
82
- fragment, self)
83
- end
72
+ Bundler::URI.for(*self.split(uri), self)
84
73
  end
85
74
 
86
75
 
@@ -1,6 +1,6 @@
1
1
  module Bundler::URI
2
2
  # :stopdoc:
3
- VERSION_CODE = '001000'.freeze
3
+ VERSION_CODE = '001001'.freeze
4
4
  VERSION = VERSION_CODE.scan(/../).collect{|n| n.to_i}.join('.').freeze
5
5
  # :startdoc:
6
6
  end
@@ -0,0 +1,84 @@
1
+ # frozen_string_literal: false
2
+ # = uri/ws.rb
3
+ #
4
+ # Author:: Matt Muller <mamuller@amazon.com>
5
+ # License:: You can redistribute it and/or modify it under the same term as Ruby.
6
+ #
7
+ # See Bundler::URI for general documentation
8
+ #
9
+
10
+ require_relative 'generic'
11
+
12
+ module Bundler::URI
13
+
14
+ #
15
+ # The syntax of WS URIs is defined in RFC6455 section 3.
16
+ #
17
+ # Note that the Ruby Bundler::URI library allows WS URLs containing usernames and
18
+ # passwords. This is not legal as per the RFC, but used to be
19
+ # supported in Internet Explorer 5 and 6, before the MS04-004 security
20
+ # update. See <URL:http://support.microsoft.com/kb/834489>.
21
+ #
22
+ class WS < Generic
23
+ # A Default port of 80 for Bundler::URI::WS.
24
+ DEFAULT_PORT = 80
25
+
26
+ # An Array of the available components for Bundler::URI::WS.
27
+ COMPONENT = %i[
28
+ scheme
29
+ userinfo host port
30
+ path
31
+ query
32
+ ].freeze
33
+
34
+ #
35
+ # == Description
36
+ #
37
+ # Creates a new Bundler::URI::WS object from components, with syntax checking.
38
+ #
39
+ # The components accepted are userinfo, host, port, path, and query.
40
+ #
41
+ # The components should be provided either as an Array, or as a Hash
42
+ # with keys formed by preceding the component names with a colon.
43
+ #
44
+ # If an Array is used, the components must be passed in the
45
+ # order <code>[userinfo, host, port, path, query]</code>.
46
+ #
47
+ # Example:
48
+ #
49
+ # uri = Bundler::URI::WS.build(host: 'www.example.com', path: '/foo/bar')
50
+ #
51
+ # uri = Bundler::URI::WS.build([nil, "www.example.com", nil, "/path", "query"])
52
+ #
53
+ # Currently, if passed userinfo components this method generates
54
+ # invalid WS URIs as per RFC 1738.
55
+ #
56
+ def self.build(args)
57
+ tmp = Util.make_components_hash(self, args)
58
+ super(tmp)
59
+ end
60
+
61
+ #
62
+ # == Description
63
+ #
64
+ # Returns the full path for a WS Bundler::URI, as required by Net::HTTP::Get.
65
+ #
66
+ # If the Bundler::URI contains a query, the full path is Bundler::URI#path + '?' + Bundler::URI#query.
67
+ # Otherwise, the path is simply Bundler::URI#path.
68
+ #
69
+ # Example:
70
+ #
71
+ # uri = Bundler::URI::WS.build(path: '/foo/bar', query: 'test=true')
72
+ # uri.request_uri # => "/foo/bar?test=true"
73
+ #
74
+ def request_uri
75
+ return unless @path
76
+
77
+ url = @query ? "#@path?#@query" : @path.dup
78
+ url.start_with?(?/.freeze) ? url : ?/ + url
79
+ end
80
+ end
81
+
82
+ @@schemes['WS'] = WS
83
+
84
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: false
2
+ # = uri/wss.rb
3
+ #
4
+ # Author:: Matt Muller <mamuller@amazon.com>
5
+ # License:: You can redistribute it and/or modify it under the same term as Ruby.
6
+ #
7
+ # See Bundler::URI for general documentation
8
+ #
9
+
10
+ require_relative 'ws'
11
+
12
+ module Bundler::URI
13
+
14
+ # The default port for WSS URIs is 443, and the scheme is 'wss:' rather
15
+ # than 'ws:'. Other than that, WSS URIs are identical to WS URIs;
16
+ # see Bundler::URI::WS.
17
+ class WSS < WS
18
+ # A Default port of 443 for Bundler::URI::WSS
19
+ DEFAULT_PORT = 443
20
+ end
21
+ @@schemes['WSS'] = WSS
22
+ end
@@ -86,7 +86,6 @@
86
86
  # License::
87
87
  # Copyright (c) 2001 akira yamada <akira@ruby-lang.org>
88
88
  # You can redistribute it and/or modify it under the same term as Ruby.
89
- # Revision:: $Id$
90
89
  #
91
90
 
92
91
  module Bundler::URI
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: false
2
2
 
3
3
  module Bundler
4
- VERSION = "2.2.33".freeze
4
+ VERSION = "2.3.3".freeze
5
5
 
6
6
  def self.bundler_major_version
7
7
  @bundler_major_version ||= VERSION.split(".").first.to_i
@@ -66,6 +66,7 @@ module Bundler
66
66
  autoload :RubyDsl, File.expand_path("bundler/ruby_dsl", __dir__)
67
67
  autoload :RubyVersion, File.expand_path("bundler/ruby_version", __dir__)
68
68
  autoload :Runtime, File.expand_path("bundler/runtime", __dir__)
69
+ autoload :SelfManager, File.expand_path("bundler/self_manager", __dir__)
69
70
  autoload :Settings, File.expand_path("bundler/settings", __dir__)
70
71
  autoload :SharedHelpers, File.expand_path("bundler/shared_helpers", __dir__)
71
72
  autoload :Source, File.expand_path("bundler/source", __dir__)
@@ -643,15 +644,20 @@ EOF
643
644
  Bundler.rubygems.clear_paths
644
645
  end
645
646
 
647
+ def self_manager
648
+ @self_manager ||= begin
649
+ require_relative "bundler/self_manager"
650
+ Bundler::SelfManager.new
651
+ end
652
+ end
653
+
646
654
  private
647
655
 
648
656
  def eval_yaml_gemspec(path, contents)
649
657
  require_relative "bundler/psyched_yaml"
650
658
 
651
- # If the YAML is invalid, Syck raises an ArgumentError, and Psych
652
- # raises a Psych::SyntaxError. See psyched_yaml.rb for more info.
653
659
  Gem::Specification.from_yaml(contents)
654
- rescue YamlLibrarySyntaxError, ArgumentError, Gem::EndOfYAMLException, Gem::Exception
660
+ rescue ::Psych::SyntaxError, ArgumentError, Gem::EndOfYAMLException, Gem::Exception
655
661
  eval_gemspec(path, contents)
656
662
  end
657
663
 
@@ -1,5 +1 @@
1
1
  This directory exists to prevent rubygems-update from being used as real code.
2
-
3
- If you haven't, you probably want to run `update_rubygems`.
4
-
5
- You can gem uninstall rubygems-update after doing that.
@@ -2,48 +2,18 @@
2
2
 
3
3
  module Gem::BundlerVersionFinder
4
4
  def self.bundler_version
5
- version, _ = bundler_version_with_reason
5
+ v = ENV["BUNDLER_VERSION"]
6
6
 
7
- return unless version
7
+ v ||= bundle_update_bundler_version
8
+ return if v == true
8
9
 
9
- Gem::Version.new(version)
10
- end
11
-
12
- def self.bundler_version_with_reason
13
- if v = ENV["BUNDLER_VERSION"]
14
- return [v, "`$BUNDLER_VERSION`"]
15
- end
16
- if v = bundle_update_bundler_version
17
- return if v == true
18
- return [v, "`bundle update --bundler`"]
19
- end
20
- v, lockfile = lockfile_version
21
- if v
22
- return [v, "your #{lockfile}"]
23
- end
24
- end
10
+ v ||= lockfile_version
11
+ return unless v
25
12
 
26
- def self.missing_version_message
27
- return unless vr = bundler_version_with_reason
28
- <<-EOS
29
- Could not find 'bundler' (#{vr.first}) required by #{vr.last}.
30
- To update to the latest version installed on your system, run `bundle update --bundler`.
31
- To install the missing version, run `gem install bundler:#{vr.first}`
32
- EOS
13
+ Gem::Version.new(v)
33
14
  end
34
15
 
35
- def self.compatible?(spec)
36
- return true unless spec.name == "bundler".freeze
37
- return true unless bundler_version = self.bundler_version
38
-
39
- spec.version.segments.first == bundler_version.segments.first
40
- end
41
-
42
- def self.filter!(specs)
43
- return unless bundler_version = self.bundler_version
44
-
45
- specs.reject! {|spec| spec.version.segments.first != bundler_version.segments.first }
46
-
16
+ def self.prioritize!(specs)
47
17
  exact_match_index = specs.find_index {|spec| spec.version == bundler_version }
48
18
  return unless exact_match_index
49
19
 
@@ -68,12 +38,10 @@ To install the missing version, run `gem install bundler:#{vr.first}`
68
38
  private_class_method :bundle_update_bundler_version
69
39
 
70
40
  def self.lockfile_version
71
- return unless lockfile = lockfile_contents
72
- lockfile, contents = lockfile
73
- lockfile ||= "lockfile"
41
+ return unless contents = lockfile_contents
74
42
  regexp = /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/
75
43
  return unless contents =~ regexp
76
- [$1, lockfile]
44
+ $1
77
45
  end
78
46
  private_class_method :lockfile_version
79
47
 
@@ -103,7 +71,7 @@ To install the missing version, run `gem install bundler:#{vr.first}`
103
71
 
104
72
  return unless File.file?(lockfile)
105
73
 
106
- [lockfile, File.read(lockfile)]
74
+ File.read(lockfile)
107
75
  end
108
76
  private_class_method :lockfile_contents
109
77
  end
@@ -190,7 +190,7 @@ class Gem::CommandManager
190
190
  raise Gem::CommandLineError,
191
191
  "Ambiguous command #{cmd_name} matches [#{possibilities.join(', ')}]"
192
192
  elsif possibilities.empty?
193
- raise Gem::CommandLineError, "Unknown command #{cmd_name}"
193
+ raise Gem::UnknownCommandError.new(cmd_name)
194
194
  end
195
195
 
196
196
  self[possibilities.first]
@@ -27,6 +27,8 @@ class Gem::Commands::InstallCommand < Gem::Command
27
27
  :without_groups => [],
28
28
  })
29
29
 
30
+ defaults.merge!(install_update_options)
31
+
30
32
  super 'install', 'Install a gem into the local repository', defaults
31
33
 
32
34
  add_install_update_options
@@ -43,8 +45,9 @@ class Gem::Commands::InstallCommand < Gem::Command
43
45
  end
44
46
 
45
47
  def defaults_str # :nodoc:
46
- "--both --version '#{Gem::Requirement.default}' --document --no-force\n" +
47
- "--install-dir #{Gem.dir} --lock"
48
+ "--both --version '#{Gem::Requirement.default}' --no-force\n" +
49
+ "--install-dir #{Gem.dir} --lock\n" +
50
+ install_update_defaults_str
48
51
  end
49
52
 
50
53
  def description # :nodoc:
@@ -1,88 +1,25 @@
1
1
  # frozen_string_literal: true
2
2
  require_relative '../command'
3
- require_relative '../server'
4
- require_relative '../deprecate'
5
3
 
6
- class Gem::Commands::ServerCommand < Gem::Command
7
- extend Gem::Deprecate
8
- rubygems_deprecate_command
9
-
10
- def initialize
11
- super 'server', 'Documentation and gem repository HTTP server',
12
- :port => 8808, :gemdir => [], :daemon => false
13
-
14
- Gem::OptionParser.accept :Port do |port|
15
- if port =~ /\A\d+\z/
16
- port = Integer port
17
- raise Gem::OptionParser::InvalidArgument, "#{port}: not a port number" if
18
- port > 65535
19
-
20
- port
21
- else
22
- begin
23
- Socket.getservbyname port
24
- rescue SocketError
25
- raise Gem::OptionParser::InvalidArgument, "#{port}: no such named service"
26
- end
4
+ unless defined? Gem::Commands::ServerCommand
5
+ class Gem::Commands::ServerCommand < Gem::Command
6
+ def initialize
7
+ super('server', 'Starts up a web server that hosts the RDoc (requires rubygems-server)')
8
+ begin
9
+ Gem::Specification.find_by_name('rubygems-server').activate
10
+ rescue Gem::LoadError
11
+ # no-op
27
12
  end
28
13
  end
29
14
 
30
- add_option '-p', '--port=PORT', :Port,
31
- 'port to listen on' do |port, options|
32
- options[:port] = port
33
- end
34
-
35
- add_option '-d', '--dir=GEMDIR',
36
- 'directories from which to serve gems',
37
- 'multiple directories may be provided' do |gemdir, options|
38
- options[:gemdir] << File.expand_path(gemdir)
15
+ def description # :nodoc:
16
+ <<-EOF
17
+ The server command has been moved to the rubygems-server gem.
18
+ EOF
39
19
  end
40
20
 
41
- add_option '--[no-]daemon', 'run as a daemon' do |daemon, options|
42
- options[:daemon] = daemon
21
+ def execute
22
+ alert_error "Install the rubygems-server gem for the server command"
43
23
  end
44
-
45
- add_option '-b', '--bind=HOST,HOST',
46
- 'addresses to bind', Array do |address, options|
47
- options[:addresses] ||= []
48
- options[:addresses].push(*address)
49
- end
50
-
51
- add_option '-l', '--launch[=COMMAND]',
52
- 'launches a browser window',
53
- "COMMAND defaults to 'start' on Windows",
54
- "and 'open' on all other platforms" do |launch, options|
55
- launch ||= Gem.win_platform? ? 'start' : 'open'
56
- options[:launch] = launch
57
- end
58
- end
59
-
60
- def defaults_str # :nodoc:
61
- "--port 8808 --dir #{Gem.dir} --no-daemon"
62
- end
63
-
64
- def description # :nodoc:
65
- <<-EOF
66
- The server command starts up a web server that hosts the RDoc for your
67
- installed gems and can operate as a server for installation of gems on other
68
- machines.
69
-
70
- The cache files for installed gems must exist to use the server as a source
71
- for gem installation.
72
-
73
- To install gems from a running server, use `gem install GEMNAME --source
74
- http://gem_server_host:8808`
75
-
76
- You can set up a shortcut to gem server documentation using the URL:
77
-
78
- http://localhost:8808/rdoc?q=%s - Firefox
79
- http://localhost:8808/rdoc?q=* - LaunchBar
80
-
81
- EOF
82
- end
83
-
84
- def execute
85
- options[:gemdir] = Gem.path if options[:gemdir].empty?
86
- Gem::Server.run options
87
24
  end
88
25
  end