bundler 2.0.2 → 2.1.0

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 (249) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +735 -574
  3. data/LICENSE.md +18 -19
  4. data/README.md +8 -7
  5. data/bundler.gemspec +5 -23
  6. data/exe/bundle +19 -3
  7. data/lib/bundler.rb +202 -87
  8. data/lib/bundler/build_metadata.rb +3 -3
  9. data/lib/bundler/capistrano.rb +5 -5
  10. data/lib/bundler/cli.rb +179 -143
  11. data/lib/bundler/cli/add.rb +28 -16
  12. data/lib/bundler/cli/cache.rb +25 -13
  13. data/lib/bundler/cli/common.rb +10 -11
  14. data/lib/bundler/cli/config.rb +161 -86
  15. data/lib/bundler/cli/console.rb +2 -2
  16. data/lib/bundler/cli/doctor.rb +4 -4
  17. data/lib/bundler/cli/exec.rb +15 -18
  18. data/lib/bundler/cli/gem.rb +5 -5
  19. data/lib/bundler/cli/info.rb +17 -5
  20. data/lib/bundler/cli/init.rb +1 -1
  21. data/lib/bundler/cli/install.rb +3 -3
  22. data/lib/bundler/cli/issue.rb +1 -1
  23. data/lib/bundler/cli/open.rb +10 -6
  24. data/lib/bundler/cli/outdated.rb +85 -81
  25. data/lib/bundler/cli/plugin.rb +9 -2
  26. data/lib/bundler/cli/pristine.rb +1 -1
  27. data/lib/bundler/cli/show.rb +1 -1
  28. data/lib/bundler/cli/update.rb +31 -11
  29. data/lib/bundler/compact_index_client.rb +25 -9
  30. data/lib/bundler/compact_index_client/updater.rb +2 -6
  31. data/lib/bundler/current_ruby.rb +8 -7
  32. data/lib/bundler/definition.rb +33 -26
  33. data/lib/bundler/dependency.rb +16 -4
  34. data/lib/bundler/deployment.rb +2 -2
  35. data/lib/bundler/dsl.rb +19 -43
  36. data/lib/bundler/env.rb +6 -5
  37. data/lib/bundler/environment_preserver.rb +0 -1
  38. data/lib/bundler/feature_flag.rb +1 -13
  39. data/lib/bundler/fetcher.rb +16 -13
  40. data/lib/bundler/fetcher/compact_index.rb +26 -12
  41. data/lib/bundler/fetcher/dependency.rb +1 -1
  42. data/lib/bundler/fetcher/downloader.rb +4 -1
  43. data/lib/bundler/fetcher/index.rb +5 -3
  44. data/lib/bundler/friendly_errors.rb +6 -7
  45. data/lib/bundler/gem_helper.rb +14 -14
  46. data/lib/bundler/gem_helpers.rb +2 -4
  47. data/lib/bundler/gem_tasks.rb +1 -1
  48. data/lib/bundler/gem_version_promoter.rb +3 -3
  49. data/lib/bundler/graph.rb +2 -2
  50. data/lib/bundler/injector.rb +3 -1
  51. data/lib/bundler/inline.rb +40 -30
  52. data/lib/bundler/installer.rb +7 -14
  53. data/lib/bundler/installer/gem_installer.rb +5 -1
  54. data/lib/bundler/installer/parallel_installer.rb +4 -4
  55. data/lib/bundler/installer/standalone.rb +1 -2
  56. data/lib/bundler/lazy_specification.rb +2 -3
  57. data/lib/bundler/lockfile_parser.rb +14 -21
  58. data/lib/bundler/match_platform.rb +1 -1
  59. data/lib/bundler/mirror.rb +3 -3
  60. data/lib/bundler/plugin.rb +29 -18
  61. data/lib/bundler/plugin/api.rb +1 -1
  62. data/lib/bundler/plugin/api/source.rb +4 -6
  63. data/lib/bundler/plugin/index.rb +10 -2
  64. data/lib/bundler/plugin/installer.rb +28 -15
  65. data/lib/bundler/psyched_yaml.rb +1 -1
  66. data/lib/bundler/remote_specification.rb +0 -2
  67. data/lib/bundler/resolver.rb +72 -24
  68. data/lib/bundler/resolver/spec_group.rb +3 -2
  69. data/lib/bundler/retry.rb +2 -2
  70. data/lib/bundler/ruby_version.rb +4 -19
  71. data/lib/bundler/rubygems_ext.rb +11 -66
  72. data/lib/bundler/rubygems_gem_installer.rb +1 -1
  73. data/lib/bundler/rubygems_integration.rb +133 -410
  74. data/lib/bundler/runtime.rb +2 -9
  75. data/lib/bundler/settings.rb +22 -52
  76. data/lib/bundler/setup.rb +7 -13
  77. data/lib/bundler/shared_helpers.rb +46 -74
  78. data/lib/bundler/similarity_detector.rb +2 -2
  79. data/lib/bundler/source.rb +5 -5
  80. data/lib/bundler/source/git.rb +24 -17
  81. data/lib/bundler/source/git/git_proxy.rb +38 -41
  82. data/lib/bundler/source/metadata.rb +7 -2
  83. data/lib/bundler/source/path.rb +13 -8
  84. data/lib/bundler/source/rubygems.rb +14 -8
  85. data/lib/bundler/source/rubygems/remote.rb +2 -3
  86. data/lib/bundler/source_list.rb +9 -12
  87. data/lib/bundler/spec_set.rb +1 -6
  88. data/lib/bundler/stub_specification.rb +18 -30
  89. data/lib/bundler/templates/Executable.bundler +22 -13
  90. data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +3 -3
  91. data/lib/bundler/templates/newgem/Gemfile.tt +8 -0
  92. data/lib/bundler/templates/newgem/README.md.tt +4 -3
  93. data/lib/bundler/templates/newgem/newgem.gemspec.tt +2 -18
  94. data/lib/bundler/templates/newgem/test/test_helper.rb.tt +0 -4
  95. data/lib/bundler/templates/newgem/travis.yml.tt +0 -1
  96. data/lib/bundler/ui.rb +3 -3
  97. data/lib/bundler/ui/rg_proxy.rb +1 -1
  98. data/lib/bundler/ui/shell.rb +4 -8
  99. data/lib/bundler/uri_credentials_filter.rb +7 -3
  100. data/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +161 -0
  101. data/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +66 -0
  102. data/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +176 -0
  103. data/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
  104. data/lib/bundler/vendor/fileutils/lib/fileutils.rb +134 -111
  105. data/lib/bundler/vendor/molinillo/lib/molinillo.rb +6 -6
  106. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +2 -2
  107. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
  108. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
  109. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
  110. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
  111. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +6 -6
  112. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
  113. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +1 -1
  114. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +30 -8
  115. data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
  116. data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +4 -4
  117. data/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +2 -2
  118. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +273 -304
  119. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
  120. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
  121. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
  122. data/lib/bundler/vendor/thor/lib/thor.rb +19 -4
  123. data/lib/bundler/vendor/thor/lib/thor/actions.rb +17 -12
  124. data/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +1 -1
  125. data/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +1 -1
  126. data/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +7 -17
  127. data/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +5 -5
  128. data/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +19 -8
  129. data/lib/bundler/vendor/thor/lib/thor/base.rb +51 -39
  130. data/lib/bundler/vendor/thor/lib/thor/command.rb +21 -14
  131. data/lib/bundler/vendor/thor/lib/thor/error.rb +14 -18
  132. data/lib/bundler/vendor/thor/lib/thor/group.rb +1 -1
  133. data/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -0
  134. data/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
  135. data/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +1 -1
  136. data/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +6 -6
  137. data/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
  138. data/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
  139. data/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +2 -2
  140. data/lib/bundler/vendor/thor/lib/thor/parser/option.rb +20 -7
  141. data/lib/bundler/vendor/thor/lib/thor/parser/options.rb +13 -3
  142. data/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +1 -0
  143. data/lib/bundler/vendor/thor/lib/thor/runner.rb +13 -12
  144. data/lib/bundler/vendor/thor/lib/thor/shell.rb +3 -3
  145. data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +10 -1
  146. data/lib/bundler/vendor/thor/lib/thor/shell/color.rb +6 -2
  147. data/lib/bundler/vendor/thor/lib/thor/shell/html.rb +3 -3
  148. data/lib/bundler/vendor/thor/lib/thor/util.rb +18 -2
  149. data/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  150. data/lib/bundler/vendor/uri/lib/uri.rb +104 -0
  151. data/lib/bundler/vendor/uri/lib/uri/common.rb +744 -0
  152. data/lib/bundler/vendor/uri/lib/uri/file.rb +94 -0
  153. data/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
  154. data/lib/bundler/vendor/uri/lib/uri/generic.rb +1568 -0
  155. data/lib/bundler/vendor/uri/lib/uri/http.rb +88 -0
  156. data/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
  157. data/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
  158. data/lib/bundler/vendor/uri/lib/uri/ldaps.rb +21 -0
  159. data/lib/bundler/vendor/uri/lib/uri/mailto.rb +294 -0
  160. data/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +546 -0
  161. data/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +125 -0
  162. data/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
  163. data/lib/bundler/vendored_fileutils.rb +1 -6
  164. data/lib/bundler/vendored_molinillo.rb +1 -1
  165. data/lib/bundler/vendored_persistent.rb +7 -5
  166. data/lib/bundler/vendored_thor.rb +2 -2
  167. data/lib/bundler/vendored_uri.rb +4 -0
  168. data/lib/bundler/version.rb +1 -20
  169. data/lib/bundler/version_ranges.rb +51 -5
  170. data/lib/bundler/vlad.rb +3 -3
  171. data/lib/bundler/worker.rb +1 -3
  172. data/lib/bundler/yaml_serializer.rb +2 -3
  173. data/man/bundle-add.1 +10 -2
  174. data/man/bundle-add.1.txt +11 -5
  175. data/man/bundle-add.ronn +7 -1
  176. data/man/bundle-binstubs.1 +2 -2
  177. data/man/bundle-binstubs.1.txt +2 -2
  178. data/man/bundle-binstubs.ronn +1 -1
  179. data/man/bundle-cache.1 +55 -0
  180. data/man/bundle-cache.1.txt +78 -0
  181. data/man/{bundle-package.ronn → bundle-cache.ronn} +15 -15
  182. data/man/bundle-check.1 +1 -1
  183. data/man/bundle-check.1.txt +6 -6
  184. data/man/bundle-clean.1 +1 -1
  185. data/man/bundle-clean.1.txt +1 -1
  186. data/man/bundle-config.1 +35 -35
  187. data/man/bundle-config.1.txt +65 -66
  188. data/man/bundle-config.ronn +41 -39
  189. data/man/bundle-doctor.1 +1 -1
  190. data/man/bundle-doctor.1.txt +1 -1
  191. data/man/bundle-exec.1 +2 -2
  192. data/man/bundle-exec.1.txt +2 -2
  193. data/man/bundle-exec.ronn +1 -1
  194. data/man/bundle-gem.1 +1 -1
  195. data/man/bundle-gem.1.txt +3 -3
  196. data/man/bundle-info.1 +1 -1
  197. data/man/bundle-info.1.txt +1 -1
  198. data/man/bundle-init.1 +1 -1
  199. data/man/bundle-init.1.txt +1 -1
  200. data/man/bundle-inject.1 +1 -1
  201. data/man/bundle-inject.1.txt +1 -1
  202. data/man/bundle-install.1 +8 -5
  203. data/man/bundle-install.1.txt +56 -51
  204. data/man/bundle-install.ronn +9 -4
  205. data/man/bundle-list.1 +1 -1
  206. data/man/bundle-list.1.txt +1 -1
  207. data/man/bundle-lock.1 +1 -1
  208. data/man/bundle-lock.1.txt +16 -16
  209. data/man/bundle-open.1 +1 -1
  210. data/man/bundle-open.1.txt +1 -1
  211. data/man/bundle-outdated.1 +1 -1
  212. data/man/bundle-outdated.1.txt +1 -1
  213. data/man/bundle-platform.1 +1 -1
  214. data/man/bundle-platform.1.txt +1 -1
  215. data/man/bundle-pristine.1 +1 -1
  216. data/man/bundle-pristine.1.txt +1 -1
  217. data/man/bundle-remove.1 +1 -1
  218. data/man/bundle-remove.1.txt +1 -1
  219. data/man/bundle-show.1 +1 -1
  220. data/man/bundle-show.1.txt +1 -1
  221. data/man/bundle-update.1 +4 -4
  222. data/man/bundle-update.1.txt +64 -65
  223. data/man/bundle-update.ronn +3 -3
  224. data/man/bundle-viz.1 +1 -1
  225. data/man/bundle-viz.1.txt +1 -1
  226. data/man/bundle.1 +2 -2
  227. data/man/bundle.1.txt +7 -7
  228. data/man/bundle.ronn +1 -1
  229. data/man/gemfile.5 +12 -15
  230. data/man/gemfile.5.ronn +9 -13
  231. data/man/gemfile.5.txt +103 -107
  232. data/man/index.txt +1 -1
  233. metadata +30 -120
  234. data/exe/bundle_ruby +0 -60
  235. data/lib/bundler/cli/package.rb +0 -49
  236. data/lib/bundler/compatibility_guard.rb +0 -13
  237. data/lib/bundler/gem_remote_fetcher.rb +0 -43
  238. data/lib/bundler/ssl_certs/.document +0 -1
  239. data/lib/bundler/ssl_certs/certificate_manager.rb +0 -66
  240. data/lib/bundler/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +0 -21
  241. data/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  242. data/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
  243. data/lib/bundler/vendor/fileutils/lib/fileutils/version.rb +0 -5
  244. data/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +0 -27
  245. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb +0 -129
  246. data/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb +0 -12
  247. data/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +0 -129
  248. data/man/bundle-package.1 +0 -55
  249. data/man/bundle-package.1.txt +0 -79
@@ -0,0 +1,125 @@
1
+ # frozen_string_literal: false
2
+ module Bundler::URI
3
+ class RFC3986_Parser # :nodoc:
4
+ # Bundler::URI defined in RFC3986
5
+ # this regexp is modified not to host is not empty string
6
+ RFC3986_URI = /\A(?<Bundler::URI>(?<scheme>[A-Za-z][+\-.0-9A-Za-z]*):(?<hier-part>\/\/(?<authority>(?:(?<userinfo>(?:%\h\h|[!$&-.0-;=A-Z_a-z~])*)@)?(?<host>(?<IP-literal>\[(?:(?<IPv6address>(?:\h{1,4}:){6}(?<ls32>\h{1,4}:\h{1,4}|(?<IPv4address>(?<dec-octet>[1-9]\d|1\d{2}|2[0-4]\d|25[0-5]|\d)\.\g<dec-octet>\.\g<dec-octet>\.\g<dec-octet>))|::(?:\h{1,4}:){5}\g<ls32>|\h{1,4}?::(?:\h{1,4}:){4}\g<ls32>|(?:(?:\h{1,4}:)?\h{1,4})?::(?:\h{1,4}:){3}\g<ls32>|(?:(?:\h{1,4}:){,2}\h{1,4})?::(?:\h{1,4}:){2}\g<ls32>|(?:(?:\h{1,4}:){,3}\h{1,4})?::\h{1,4}:\g<ls32>|(?:(?:\h{1,4}:){,4}\h{1,4})?::\g<ls32>|(?:(?:\h{1,4}:){,5}\h{1,4})?::\h{1,4}|(?:(?:\h{1,4}:){,6}\h{1,4})?::)|(?<IPvFuture>v\h+\.[!$&-.0-;=A-Z_a-z~]+))\])|\g<IPv4address>|(?<reg-name>(?:%\h\h|[!$&-.0-9;=A-Z_a-z~])+))?(?::(?<port>\d*))?)(?<path-abempty>(?:\/(?<segment>(?:%\h\h|[!$&-.0-;=@-Z_a-z~])*))*)|(?<path-absolute>\/(?:(?<segment-nz>(?:%\h\h|[!$&-.0-;=@-Z_a-z~])+)(?:\/\g<segment>)*)?)|(?<path-rootless>\g<segment-nz>(?:\/\g<segment>)*)|(?<path-empty>))(?:\?(?<query>[^#]*))?(?:\#(?<fragment>(?:%\h\h|[!$&-.0-;=@-Z_a-z~\/?])*))?)\z/
7
+ RFC3986_relative_ref = /\A(?<relative-ref>(?<relative-part>\/\/(?<authority>(?:(?<userinfo>(?:%\h\h|[!$&-.0-;=A-Z_a-z~])*)@)?(?<host>(?<IP-literal>\[(?<IPv6address>(?:\h{1,4}:){6}(?<ls32>\h{1,4}:\h{1,4}|(?<IPv4address>(?<dec-octet>[1-9]\d|1\d{2}|2[0-4]\d|25[0-5]|\d)\.\g<dec-octet>\.\g<dec-octet>\.\g<dec-octet>))|::(?:\h{1,4}:){5}\g<ls32>|\h{1,4}?::(?:\h{1,4}:){4}\g<ls32>|(?:(?:\h{1,4}:){,1}\h{1,4})?::(?:\h{1,4}:){3}\g<ls32>|(?:(?:\h{1,4}:){,2}\h{1,4})?::(?:\h{1,4}:){2}\g<ls32>|(?:(?:\h{1,4}:){,3}\h{1,4})?::\h{1,4}:\g<ls32>|(?:(?:\h{1,4}:){,4}\h{1,4})?::\g<ls32>|(?:(?:\h{1,4}:){,5}\h{1,4})?::\h{1,4}|(?:(?:\h{1,4}:){,6}\h{1,4})?::)|(?<IPvFuture>v\h+\.[!$&-.0-;=A-Z_a-z~]+)\])|\g<IPv4address>|(?<reg-name>(?:%\h\h|[!$&-.0-9;=A-Z_a-z~])+))?(?::(?<port>\d*))?)(?<path-abempty>(?:\/(?<segment>(?:%\h\h|[!$&-.0-;=@-Z_a-z~])*))*)|(?<path-absolute>\/(?:(?<segment-nz>(?:%\h\h|[!$&-.0-;=@-Z_a-z~])+)(?:\/\g<segment>)*)?)|(?<path-noscheme>(?<segment-nz-nc>(?:%\h\h|[!$&-.0-9;=@-Z_a-z~])+)(?:\/\g<segment>)*)|(?<path-empty>))(?:\?(?<query>[^#]*))?(?:\#(?<fragment>(?:%\h\h|[!$&-.0-;=@-Z_a-z~\/?])*))?)\z/
8
+ attr_reader :regexp
9
+
10
+ def initialize
11
+ @regexp = default_regexp.each_value(&:freeze).freeze
12
+ end
13
+
14
+ def split(uri) #:nodoc:
15
+ begin
16
+ uri = uri.to_str
17
+ rescue NoMethodError
18
+ raise InvalidURIError, "bad Bundler::URI(is not Bundler::URI?): #{uri.inspect}"
19
+ end
20
+ uri.ascii_only? or
21
+ raise InvalidURIError, "Bundler::URI must be ascii only #{uri.dump}"
22
+ if m = RFC3986_URI.match(uri)
23
+ query = m["query".freeze]
24
+ scheme = m["scheme".freeze]
25
+ opaque = m["path-rootless".freeze]
26
+ if opaque
27
+ opaque << "?#{query}" if query
28
+ [ scheme,
29
+ nil, # userinfo
30
+ nil, # host
31
+ nil, # port
32
+ nil, # registry
33
+ nil, # path
34
+ opaque,
35
+ nil, # query
36
+ m["fragment".freeze]
37
+ ]
38
+ else # normal
39
+ [ scheme,
40
+ m["userinfo".freeze],
41
+ m["host".freeze],
42
+ m["port".freeze],
43
+ nil, # registry
44
+ (m["path-abempty".freeze] ||
45
+ m["path-absolute".freeze] ||
46
+ m["path-empty".freeze]),
47
+ nil, # opaque
48
+ query,
49
+ m["fragment".freeze]
50
+ ]
51
+ end
52
+ elsif m = RFC3986_relative_ref.match(uri)
53
+ [ nil, # scheme
54
+ m["userinfo".freeze],
55
+ m["host".freeze],
56
+ m["port".freeze],
57
+ nil, # registry,
58
+ (m["path-abempty".freeze] ||
59
+ m["path-absolute".freeze] ||
60
+ m["path-noscheme".freeze] ||
61
+ m["path-empty".freeze]),
62
+ nil, # opaque
63
+ m["query".freeze],
64
+ m["fragment".freeze]
65
+ ]
66
+ else
67
+ raise InvalidURIError, "bad Bundler::URI(is not Bundler::URI?): #{uri.inspect}"
68
+ end
69
+ end
70
+
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
84
+ end
85
+
86
+
87
+ def join(*uris) # :nodoc:
88
+ uris[0] = convert_to_uri(uris[0])
89
+ uris.inject :merge
90
+ end
91
+
92
+ @@to_s = Kernel.instance_method(:to_s)
93
+ def inspect
94
+ @@to_s.bind_call(self)
95
+ end
96
+
97
+ private
98
+
99
+ def default_regexp # :nodoc:
100
+ {
101
+ SCHEME: /\A[A-Za-z][A-Za-z0-9+\-.]*\z/,
102
+ USERINFO: /\A(?:%\h\h|[!$&-.0-;=A-Z_a-z~])*\z/,
103
+ HOST: /\A(?:(?<IP-literal>\[(?:(?<IPv6address>(?:\h{1,4}:){6}(?<ls32>\h{1,4}:\h{1,4}|(?<IPv4address>(?<dec-octet>[1-9]\d|1\d{2}|2[0-4]\d|25[0-5]|\d)\.\g<dec-octet>\.\g<dec-octet>\.\g<dec-octet>))|::(?:\h{1,4}:){5}\g<ls32>|\h{,4}::(?:\h{1,4}:){4}\g<ls32>|(?:(?:\h{1,4}:)?\h{1,4})?::(?:\h{1,4}:){3}\g<ls32>|(?:(?:\h{1,4}:){,2}\h{1,4})?::(?:\h{1,4}:){2}\g<ls32>|(?:(?:\h{1,4}:){,3}\h{1,4})?::\h{1,4}:\g<ls32>|(?:(?:\h{1,4}:){,4}\h{1,4})?::\g<ls32>|(?:(?:\h{1,4}:){,5}\h{1,4})?::\h{1,4}|(?:(?:\h{1,4}:){,6}\h{1,4})?::)|(?<IPvFuture>v\h+\.[!$&-.0-;=A-Z_a-z~]+))\])|\g<IPv4address>|(?<reg-name>(?:%\h\h|[!$&-.0-9;=A-Z_a-z~])*))\z/,
104
+ ABS_PATH: /\A\/(?:%\h\h|[!$&-.0-;=@-Z_a-z~])*(?:\/(?:%\h\h|[!$&-.0-;=@-Z_a-z~])*)*\z/,
105
+ REL_PATH: /\A(?:%\h\h|[!$&-.0-;=@-Z_a-z~])+(?:\/(?:%\h\h|[!$&-.0-;=@-Z_a-z~])*)*\z/,
106
+ QUERY: /\A(?:%\h\h|[!$&-.0-;=@-Z_a-z~\/?])*\z/,
107
+ FRAGMENT: /\A(?:%\h\h|[!$&-.0-;=@-Z_a-z~\/?])*\z/,
108
+ OPAQUE: /\A(?:[^\/].*)?\z/,
109
+ PORT: /\A[\x09\x0a\x0c\x0d ]*\d*[\x09\x0a\x0c\x0d ]*\z/,
110
+ }
111
+ end
112
+
113
+ def convert_to_uri(uri)
114
+ if uri.is_a?(Bundler::URI::Generic)
115
+ uri
116
+ elsif uri = String.try_convert(uri)
117
+ parse(uri)
118
+ else
119
+ raise ArgumentError,
120
+ "bad argument (expected Bundler::URI object or Bundler::URI string)"
121
+ end
122
+ end
123
+
124
+ end # class Parser
125
+ end # module Bundler::URI
@@ -0,0 +1,6 @@
1
+ module Bundler::URI
2
+ # :stopdoc:
3
+ VERSION_CODE = '001000'.freeze
4
+ VERSION = VERSION_CODE.scan(/../).collect{|n| n.to_i}.join('.').freeze
5
+ # :startdoc:
6
+ end
@@ -1,9 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bundler; end
4
- if RUBY_VERSION >= "2.4"
5
- require "bundler/vendor/fileutils/lib/fileutils"
6
- else
7
- # the version we vendor is 2.4+
8
- require "fileutils"
9
- end
4
+ require_relative "vendor/fileutils/lib/fileutils"
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bundler; end
4
- require "bundler/vendor/molinillo/lib/molinillo"
4
+ require_relative "vendor/molinillo/lib/molinillo"
@@ -15,18 +15,20 @@ module Bundler
15
15
  end
16
16
  end
17
17
  end
18
- require "bundler/vendor/net-http-persistent/lib/net/http/persistent"
18
+ require_relative "vendor/net-http-persistent/lib/net/http/persistent"
19
19
 
20
20
  module Bundler
21
21
  class PersistentHTTP < Persistent::Net::HTTP::Persistent
22
22
  def connection_for(uri)
23
- connection = super
24
- warn_old_tls_version_rubygems_connection(uri, connection)
25
- connection
23
+ super(uri) do |connection|
24
+ result = yield connection
25
+ warn_old_tls_version_rubygems_connection(uri, connection)
26
+ result
27
+ end
26
28
  end
27
29
 
28
30
  def warn_old_tls_version_rubygems_connection(uri, connection)
29
- return unless connection.use_ssl?
31
+ return unless connection.http.use_ssl?
30
32
  return unless (uri.host || "").end_with?("rubygems.org")
31
33
 
32
34
  socket = connection.instance_variable_get(:@socket)
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Bundler
4
4
  def self.require_thor_actions
5
- Kernel.send(:require, "bundler/vendor/thor/lib/thor/actions")
5
+ require_relative "vendor/thor/lib/thor/actions"
6
6
  end
7
7
  end
8
- require "bundler/vendor/thor/lib/thor"
8
+ require_relative "vendor/thor/lib/thor"
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bundler; end
4
+ require_relative "vendor/uri/lib/uri"
@@ -1,26 +1,7 @@
1
1
  # frozen_string_literal: false
2
2
 
3
- # Ruby 1.9.3 and old RubyGems don't play nice with frozen version strings
4
- # rubocop:disable MutableConstant
5
-
6
3
  module Bundler
7
- # We're doing this because we might write tests that deal
8
- # with other versions of bundler and we are unsure how to
9
- # handle this better.
10
- VERSION = "2.0.2" unless defined?(::Bundler::VERSION)
11
-
12
- def self.overwrite_loaded_gem_version
13
- begin
14
- require "rubygems"
15
- rescue LoadError
16
- return
17
- end
18
- return unless bundler_spec = Gem.loaded_specs["bundler"]
19
- return if bundler_spec.version == VERSION
20
- bundler_spec.version = Bundler::VERSION
21
- end
22
- private_class_method :overwrite_loaded_gem_version
23
- overwrite_loaded_gem_version
4
+ VERSION = "2.1.0".freeze
24
5
 
25
6
  def self.bundler_major_version
26
7
  @bundler_major_version ||= VERSION.split(".").first.to_i
@@ -5,11 +5,42 @@ module Bundler
5
5
  NEq = Struct.new(:version)
6
6
  ReqR = Struct.new(:left, :right)
7
7
  class ReqR
8
- Endpoint = Struct.new(:version, :inclusive)
8
+ Endpoint = Struct.new(:version, :inclusive) do
9
+ def <=>(other)
10
+ if version.equal?(INFINITY)
11
+ return 0 if other.version.equal?(INFINITY)
12
+ return 1
13
+ elsif other.version.equal?(INFINITY)
14
+ return -1
15
+ end
16
+
17
+ comp = version <=> other.version
18
+ return comp unless comp.zero?
19
+
20
+ if inclusive && !other.inclusive
21
+ 1
22
+ elsif !inclusive && other.inclusive
23
+ -1
24
+ else
25
+ 0
26
+ end
27
+ end
28
+ end
29
+
9
30
  def to_s
10
31
  "#{left.inclusive ? "[" : "("}#{left.version}, #{right.version}#{right.inclusive ? "]" : ")"}"
11
32
  end
12
- INFINITY = Object.new.freeze
33
+ INFINITY = begin
34
+ inf = Object.new
35
+ def inf.to_s
36
+ "∞"
37
+ end
38
+ def inf.<=>(other)
39
+ return 0 if other.equal?(self)
40
+ 1
41
+ end
42
+ inf.freeze
43
+ end
13
44
  ZERO = Gem::Version.new("0.a")
14
45
 
15
46
  def cover?(v)
@@ -32,6 +63,15 @@ module Bundler
32
63
  left.version == right.version
33
64
  end
34
65
 
66
+ def <=>(other)
67
+ return -1 if other.equal?(INFINITY)
68
+
69
+ comp = left <=> other.left
70
+ return comp unless comp.zero?
71
+
72
+ right <=> other.right
73
+ end
74
+
35
75
  UNIVERSAL = ReqR.new(ReqR::Endpoint.new(Gem::Version.new("0.a"), true), ReqR::Endpoint.new(ReqR::INFINITY, false)).freeze
36
76
  end
37
77
 
@@ -57,7 +97,7 @@ module Bundler
57
97
  end.uniq
58
98
  ranges, neqs = ranges.partition {|r| !r.is_a?(NEq) }
59
99
 
60
- [ranges.sort_by {|range| [range.left.version, range.left.inclusive ? 0 : 1] }, neqs.map(&:version)]
100
+ [ranges.sort, neqs.map(&:version)]
61
101
  end
62
102
 
63
103
  def self.empty?(ranges, neqs)
@@ -66,8 +106,14 @@ module Bundler
66
106
  next false if curr_range.single? && neqs.include?(curr_range.left.version)
67
107
  next curr_range if last_range.right.version == ReqR::INFINITY
68
108
  case last_range.right.version <=> curr_range.left.version
69
- when 1 then next curr_range
70
- when 0 then next(last_range.right.inclusive && curr_range.left.inclusive && !neqs.include?(curr_range.left.version) && curr_range)
109
+ # higher
110
+ when 1 then next ReqR.new(curr_range.left, last_range.right)
111
+ # equal
112
+ when 0
113
+ if last_range.right.inclusive && curr_range.left.inclusive && !neqs.include?(curr_range.left.version)
114
+ ReqR.new(curr_range.left, [curr_range.right, last_range.right].max)
115
+ end
116
+ # lower
71
117
  when -1 then next false
72
118
  end
73
119
  end
@@ -1,14 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "bundler/shared_helpers"
4
- Bundler::SharedHelpers.major_deprecation 3,
3
+ require_relative "shared_helpers"
4
+ Bundler::SharedHelpers.major_deprecation 2,
5
5
  "The Bundler task for Vlad"
6
6
 
7
7
  # Vlad task for Bundler.
8
8
  #
9
9
  # Add "require 'bundler/vlad'" in your Vlad deploy.rb, and
10
10
  # include the vlad:bundle:install task in your vlad:deploy task.
11
- require "bundler/deployment"
11
+ require_relative "deployment"
12
12
 
13
13
  include Rake::DSL if defined? Rake::DSL
14
14
 
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "thread"
4
-
5
3
  module Bundler
6
4
  class Worker
7
5
  POISON = Object.new
@@ -62,7 +60,7 @@ module Bundler
62
60
 
63
61
  def apply_func(obj, i)
64
62
  @func.call(obj, i)
65
- rescue Exception => e
63
+ rescue Exception => e # rubocop:disable Lint/RescueException
66
64
  WrappedException.new(e)
67
65
  end
68
66
 
@@ -32,7 +32,7 @@ module Bundler
32
32
  (.*) # value
33
33
  \1 # matching closing quote
34
34
  $
35
- /xo
35
+ /xo.freeze
36
36
 
37
37
  HASH_REGEX = /
38
38
  ^
@@ -40,12 +40,11 @@ module Bundler
40
40
  (.+) # key
41
41
  (?::(?=(?:\s|$))) # : (without the lookahead the #key includes this when : is present in value)
42
42
  [ ]?
43
- (?: !\s)? # optional exclamation mark found with ruby 1.9.3
44
43
  (['"]?) # optional opening quote
45
44
  (.*) # value
46
45
  \3 # matching closing quote
47
46
  $
48
- /xo
47
+ /xo.freeze
49
48
 
50
49
  def load(str)
51
50
  res = {}
@@ -1,13 +1,13 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-ADD" "1" "June 2019" "" ""
4
+ .TH "BUNDLE\-ADD" "1" "December 2019" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-add\fR \- Add gem to the Gemfile and run bundle install
8
8
  .
9
9
  .SH "SYNOPSIS"
10
- \fBbundle add\fR \fIGEM_NAME\fR [\-\-group=GROUP] [\-\-version=VERSION] [\-\-source=SOURCE] [\-\-skip\-install] [\-\-strict] [\-\-optimistic]
10
+ \fBbundle add\fR \fIGEM_NAME\fR [\-\-group=GROUP] [\-\-version=VERSION] [\-\-source=SOURCE] [\-\-git=GIT] [\-\-branch=BRANCH] [\-\-skip\-install] [\-\-strict] [\-\-optimistic]
11
11
  .
12
12
  .SH "DESCRIPTION"
13
13
  Adds the named gem to the Gemfile and run \fBbundle install\fR\. \fBbundle install\fR can be avoided by using the flag \fB\-\-skip\-install\fR\.
@@ -45,6 +45,14 @@ Specify the group(s) for the added gem\. Multiple groups should be separated by
45
45
  Specify the source for the added gem\.
46
46
  .
47
47
  .TP
48
+ \fB\-\-git\fR
49
+ Specify the git source for the added gem\.
50
+ .
51
+ .TP
52
+ \fB\-\-branch\fR
53
+ Specify the git branch for the added gem\.
54
+ .
55
+ .TP
48
56
  \fB\-\-skip\-install\fR
49
57
  Adds the gem to the Gemfile but does not install it\.
50
58
  .
@@ -7,10 +7,11 @@ NAME
7
7
 
8
8
  SYNOPSIS
9
9
  bundle add GEM_NAME [--group=GROUP] [--version=VERSION]
10
- [--source=SOURCE] [--skip-install] [--strict] [--optimistic]
10
+ [--source=SOURCE] [--git=GIT] [--branch=BRANCH] [--skip-install]
11
+ [--strict] [--optimistic]
11
12
 
12
13
  DESCRIPTION
13
- Adds the named gem to the Gemfile and run bundle install. bundle
14
+ Adds the named gem to the Gemfile and run bundle install. bundle
14
15
  install can be avoided by using the flag --skip-install.
15
16
 
16
17
  Example:
@@ -19,7 +20,7 @@ DESCRIPTION
19
20
 
20
21
  bundle add rails --version "< 3.0, > 1.1"
21
22
 
22
- bundle add rails --version "~> 5.0.0" --source "https://gems.exam-
23
+ bundle add rails --version "~> 5.0.0" --source "https://gems.exam-
23
24
  ple.com" --group "development"
24
25
 
25
26
  bundle add rails --skip-install
@@ -31,12 +32,17 @@ OPTIONS
31
32
  Specify version requirements(s) for the added gem.
32
33
 
33
34
  --group, -g
34
- Specify the group(s) for the added gem. Multiple groups should
35
+ Specify the group(s) for the added gem. Multiple groups should
35
36
  be separated by commas.
36
37
 
37
38
  --source, , -s
38
39
  Specify the source for the added gem.
39
40
 
41
+ --git Specify the git source for the added gem.
42
+
43
+ --branch
44
+ Specify the git branch for the added gem.
45
+
40
46
  --skip-install
41
47
  Adds the gem to the Gemfile but does not install it.
42
48
 
@@ -49,4 +55,4 @@ OPTIONS
49
55
 
50
56
 
51
57
 
52
- June 2019 BUNDLE-ADD(1)
58
+ December 2019 BUNDLE-ADD(1)
@@ -3,7 +3,7 @@ bundle-add(1) -- Add gem to the Gemfile and run bundle install
3
3
 
4
4
  ## SYNOPSIS
5
5
 
6
- `bundle add` <GEM_NAME> [--group=GROUP] [--version=VERSION] [--source=SOURCE] [--skip-install] [--strict] [--optimistic]
6
+ `bundle add` <GEM_NAME> [--group=GROUP] [--version=VERSION] [--source=SOURCE] [--git=GIT] [--branch=BRANCH] [--skip-install] [--strict] [--optimistic]
7
7
 
8
8
  ## DESCRIPTION
9
9
  Adds the named gem to the Gemfile and run `bundle install`. `bundle install` can be avoided by using the flag `--skip-install`.
@@ -30,6 +30,12 @@ bundle add rails --group "development, test"
30
30
  * `--source`, , `-s`:
31
31
  Specify the source for the added gem.
32
32
 
33
+ * `--git`:
34
+ Specify the git source for the added gem.
35
+
36
+ * `--branch`:
37
+ Specify the git branch for the added gem.
38
+
33
39
  * `--skip-install`:
34
40
  Adds the gem to the Gemfile but does not install it.
35
41