rubygems-update 2.7.11 → 3.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (359) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +67 -0
  3. data/.travis.yml +24 -18
  4. data/CODE_OF_CONDUCT.md +10 -8
  5. data/CONTRIBUTING.md +148 -0
  6. data/History.txt +458 -8
  7. data/MAINTAINERS.txt +1 -0
  8. data/Manifest.txt +16 -9
  9. data/POLICIES.md +92 -0
  10. data/README.md +53 -26
  11. data/Rakefile +77 -211
  12. data/{UPGRADING.rdoc → UPGRADING.md} +31 -32
  13. data/appveyor.yml +20 -45
  14. data/bin/gem +1 -2
  15. data/bin/update_rubygems +2 -3
  16. data/bundler/CHANGELOG.md +65 -0
  17. data/bundler/bundler.gemspec +7 -1
  18. data/bundler/lib/bundler/build_metadata.rb +1 -1
  19. data/bundler/lib/bundler/cli/add.rb +15 -5
  20. data/bundler/lib/bundler/cli/binstubs.rb +8 -2
  21. data/bundler/lib/bundler/cli/doctor.rb +47 -1
  22. data/bundler/lib/bundler/cli/install.rb +8 -5
  23. data/bundler/lib/bundler/cli/list.rb +41 -5
  24. data/bundler/lib/bundler/cli/outdated.rb +7 -1
  25. data/bundler/lib/bundler/cli/pristine.rb +4 -0
  26. data/bundler/lib/bundler/cli/remove.rb +18 -0
  27. data/bundler/lib/bundler/cli.rb +63 -21
  28. data/bundler/lib/bundler/definition.rb +15 -16
  29. data/bundler/lib/bundler/dependency.rb +2 -2
  30. data/bundler/lib/bundler/dsl.rb +19 -3
  31. data/bundler/lib/bundler/feature_flag.rb +7 -0
  32. data/bundler/lib/bundler/gem_version_promoter.rb +4 -2
  33. data/bundler/lib/bundler/injector.rb +168 -9
  34. data/bundler/lib/bundler/installer/parallel_installer.rb +5 -0
  35. data/bundler/lib/bundler/installer.rb +29 -6
  36. data/bundler/lib/bundler/plugin/events.rb +61 -0
  37. data/bundler/lib/bundler/plugin.rb +10 -3
  38. data/bundler/lib/bundler/resolver.rb +2 -2
  39. data/bundler/lib/bundler/rubygems_gem_installer.rb +7 -0
  40. data/bundler/lib/bundler/runtime.rb +8 -2
  41. data/bundler/lib/bundler/settings/validator.rb +23 -0
  42. data/bundler/lib/bundler/settings.rb +24 -3
  43. data/bundler/lib/bundler/shared_helpers.rb +19 -3
  44. data/bundler/lib/bundler/source/metadata.rb +2 -3
  45. data/bundler/lib/bundler/source.rb +9 -9
  46. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +1 -0
  47. data/bundler/lib/bundler/version.rb +1 -1
  48. data/bundler/lib/bundler.rb +26 -8
  49. data/bundler/man/bundle-add.ronn +13 -2
  50. data/bundler/man/bundle-config.ronn +21 -0
  51. data/bundler/man/bundle-install.ronn +1 -1
  52. data/bundler/man/bundle-list.ronn +19 -1
  53. data/bundler/man/bundle-outdated.ronn +4 -0
  54. data/bundler/man/bundle-remove.ronn +23 -0
  55. data/bundler/man/bundle-update.ronn +1 -1
  56. data/bundler/man/bundle.ronn +3 -0
  57. data/lib/rubygems/available_set.rb +1 -1
  58. data/lib/rubygems/basic_specification.rb +12 -12
  59. data/lib/rubygems/bundler_version_finder.rb +3 -3
  60. data/lib/rubygems/command.rb +22 -15
  61. data/lib/rubygems/command_manager.rb +22 -5
  62. data/lib/rubygems/commands/build_command.rb +41 -7
  63. data/lib/rubygems/commands/cert_command.rb +45 -24
  64. data/lib/rubygems/commands/check_command.rb +1 -1
  65. data/lib/rubygems/commands/cleanup_command.rb +14 -7
  66. data/lib/rubygems/commands/contents_command.rb +14 -15
  67. data/lib/rubygems/commands/dependency_command.rb +17 -17
  68. data/lib/rubygems/commands/environment_command.rb +20 -1
  69. data/lib/rubygems/commands/fetch_command.rb +2 -3
  70. data/lib/rubygems/commands/generate_index_command.rb +2 -3
  71. data/lib/rubygems/commands/help_command.rb +12 -13
  72. data/lib/rubygems/commands/info_command.rb +33 -0
  73. data/lib/rubygems/commands/install_command.rb +21 -17
  74. data/lib/rubygems/commands/list_command.rb +0 -1
  75. data/lib/rubygems/commands/lock_command.rb +3 -4
  76. data/lib/rubygems/commands/open_command.rb +16 -10
  77. data/lib/rubygems/commands/owner_command.rb +21 -7
  78. data/lib/rubygems/commands/pristine_command.rb +23 -16
  79. data/lib/rubygems/commands/push_command.rb +19 -8
  80. data/lib/rubygems/commands/query_command.rb +24 -24
  81. data/lib/rubygems/commands/rdoc_command.rb +3 -4
  82. data/lib/rubygems/commands/search_command.rb +0 -1
  83. data/lib/rubygems/commands/server_command.rb +1 -2
  84. data/lib/rubygems/commands/setup_command.rb +86 -48
  85. data/lib/rubygems/commands/signin_command.rb +2 -1
  86. data/lib/rubygems/commands/signout_command.rb +2 -2
  87. data/lib/rubygems/commands/sources_command.rb +11 -12
  88. data/lib/rubygems/commands/specification_command.rb +7 -7
  89. data/lib/rubygems/commands/uninstall_command.rb +50 -18
  90. data/lib/rubygems/commands/unpack_command.rb +16 -7
  91. data/lib/rubygems/commands/update_command.rb +28 -23
  92. data/lib/rubygems/commands/which_command.rb +5 -8
  93. data/lib/rubygems/commands/yank_command.rb +1 -2
  94. data/lib/rubygems/compatibility.rb +1 -21
  95. data/lib/rubygems/config_file.rb +36 -36
  96. data/lib/rubygems/core_ext/kernel_require.rb +6 -6
  97. data/lib/rubygems/core_ext/kernel_warn.rb +45 -0
  98. data/lib/rubygems/defaults.rb +31 -19
  99. data/lib/rubygems/dependency.rb +15 -15
  100. data/lib/rubygems/dependency_installer.rb +30 -33
  101. data/lib/rubygems/dependency_list.rb +9 -10
  102. data/lib/rubygems/deprecate.rb +2 -3
  103. data/lib/rubygems/doctor.rb +5 -6
  104. data/lib/rubygems/errors.rb +3 -3
  105. data/lib/rubygems/exceptions.rb +11 -8
  106. data/lib/rubygems/ext/build_error.rb +0 -1
  107. data/lib/rubygems/ext/builder.rb +50 -23
  108. data/lib/rubygems/ext/cmake_builder.rb +2 -2
  109. data/lib/rubygems/ext/configure_builder.rb +2 -3
  110. data/lib/rubygems/ext/ext_conf_builder.rb +8 -7
  111. data/lib/rubygems/ext/rake_builder.rb +16 -18
  112. data/lib/rubygems/ext.rb +0 -1
  113. data/lib/rubygems/gem_runner.rb +2 -2
  114. data/lib/rubygems/gemcutter_utilities.rb +46 -12
  115. data/lib/rubygems/indexer.rb +19 -12
  116. data/lib/rubygems/install_default_message.rb +0 -1
  117. data/lib/rubygems/install_message.rb +0 -1
  118. data/lib/rubygems/install_update_options.rb +3 -29
  119. data/lib/rubygems/installer.rb +97 -55
  120. data/lib/rubygems/installer_test_case.rb +2 -16
  121. data/lib/rubygems/local_remote_options.rb +5 -4
  122. data/lib/rubygems/mock_gem_ui.rb +3 -4
  123. data/lib/rubygems/name_tuple.rb +4 -4
  124. data/lib/rubygems/package/digest_io.rb +3 -4
  125. data/lib/rubygems/package/file_source.rb +3 -4
  126. data/lib/rubygems/package/io_source.rb +1 -2
  127. data/lib/rubygems/package/old.rb +8 -16
  128. data/lib/rubygems/package/source.rb +0 -1
  129. data/lib/rubygems/package/tar_header.rb +13 -4
  130. data/lib/rubygems/package/tar_reader/entry.rb +20 -4
  131. data/lib/rubygems/package/tar_reader.rb +2 -4
  132. data/lib/rubygems/package/tar_test_case.rb +2 -8
  133. data/lib/rubygems/package/tar_writer.rb +13 -15
  134. data/lib/rubygems/package.rb +90 -63
  135. data/lib/rubygems/package_task.rb +0 -1
  136. data/lib/rubygems/path_support.rb +16 -6
  137. data/lib/rubygems/platform.rb +4 -5
  138. data/lib/rubygems/psych_tree.rb +1 -1
  139. data/lib/rubygems/rdoc.rb +2 -313
  140. data/lib/rubygems/remote_fetcher.rb +29 -82
  141. data/lib/rubygems/request/connection_pools.rb +24 -13
  142. data/lib/rubygems/request/http_pool.rb +3 -4
  143. data/lib/rubygems/request/https_pool.rb +1 -3
  144. data/lib/rubygems/request.rb +17 -16
  145. data/lib/rubygems/request_set/gem_dependency_api.rb +46 -49
  146. data/lib/rubygems/request_set/lockfile/parser.rb +18 -29
  147. data/lib/rubygems/request_set/lockfile/tokenizer.rb +9 -9
  148. data/lib/rubygems/request_set/lockfile.rb +12 -12
  149. data/lib/rubygems/request_set.rb +52 -25
  150. data/lib/rubygems/requirement.rb +32 -21
  151. data/lib/rubygems/resolver/activation_request.rb +6 -6
  152. data/lib/rubygems/resolver/api_set.rb +5 -6
  153. data/lib/rubygems/resolver/api_specification.rb +2 -3
  154. data/lib/rubygems/resolver/best_set.rb +5 -6
  155. data/lib/rubygems/resolver/composed_set.rb +5 -6
  156. data/lib/rubygems/resolver/conflict.rb +5 -5
  157. data/lib/rubygems/resolver/current_set.rb +1 -2
  158. data/lib/rubygems/resolver/dependency_request.rb +4 -4
  159. data/lib/rubygems/resolver/git_set.rb +5 -6
  160. data/lib/rubygems/resolver/git_specification.rb +4 -5
  161. data/lib/rubygems/resolver/index_set.rb +5 -6
  162. data/lib/rubygems/resolver/index_specification.rb +3 -4
  163. data/lib/rubygems/resolver/installed_specification.rb +3 -4
  164. data/lib/rubygems/resolver/installer_set.rb +12 -12
  165. data/lib/rubygems/resolver/local_specification.rb +1 -2
  166. data/lib/rubygems/resolver/lock_set.rb +5 -6
  167. data/lib/rubygems/resolver/lock_specification.rb +7 -8
  168. data/lib/rubygems/resolver/requirement_list.rb +1 -1
  169. data/lib/rubygems/resolver/set.rb +2 -2
  170. data/lib/rubygems/resolver/source_set.rb +4 -5
  171. data/lib/rubygems/resolver/spec_specification.rb +1 -2
  172. data/lib/rubygems/resolver/specification.rb +10 -7
  173. data/lib/rubygems/resolver/stats.rb +1 -1
  174. data/lib/rubygems/resolver/vendor_set.rb +4 -5
  175. data/lib/rubygems/resolver/vendor_specification.rb +2 -3
  176. data/lib/rubygems/resolver.rb +14 -16
  177. data/lib/rubygems/s3_uri_signer.rb +183 -0
  178. data/lib/rubygems/safe_yaml.rb +18 -10
  179. data/lib/rubygems/security/policies.rb +1 -2
  180. data/lib/rubygems/security/policy.rb +25 -25
  181. data/lib/rubygems/security/signer.rb +72 -24
  182. data/lib/rubygems/security/trust_dir.rb +10 -10
  183. data/lib/rubygems/security.rb +21 -22
  184. data/lib/rubygems/security_option.rb +0 -1
  185. data/lib/rubygems/server.rb +21 -21
  186. data/lib/rubygems/source/git.rb +9 -10
  187. data/lib/rubygems/source/installed.rb +3 -4
  188. data/lib/rubygems/source/local.rb +7 -7
  189. data/lib/rubygems/source/lock.rb +4 -4
  190. data/lib/rubygems/source/specific_file.rb +5 -5
  191. data/lib/rubygems/source/vendor.rb +2 -3
  192. data/lib/rubygems/source.rb +16 -25
  193. data/lib/rubygems/source_list.rb +2 -2
  194. data/lib/rubygems/source_local.rb +0 -1
  195. data/lib/rubygems/spec_fetcher.rb +5 -6
  196. data/lib/rubygems/specification.rb +219 -558
  197. data/lib/rubygems/specification_policy.rb +407 -0
  198. data/lib/rubygems/stub_specification.rb +12 -17
  199. data/lib/rubygems/test_case.rb +161 -75
  200. data/lib/rubygems/test_utilities.rb +20 -35
  201. data/lib/rubygems/text.rb +6 -6
  202. data/lib/rubygems/uninstaller.rb +38 -27
  203. data/lib/rubygems/uri_formatter.rb +1 -2
  204. data/lib/rubygems/user_interaction.rb +37 -89
  205. data/lib/rubygems/util/licenses.rb +27 -1
  206. data/lib/rubygems/util/list.rb +1 -1
  207. data/lib/rubygems/util.rb +32 -14
  208. data/lib/rubygems/validator.rb +4 -5
  209. data/lib/rubygems/version.rb +15 -15
  210. data/lib/rubygems/version_option.rb +2 -3
  211. data/lib/rubygems.rb +71 -102
  212. data/rubygems-update.gemspec +43 -0
  213. data/setup.rb +2 -8
  214. data/test/rubygems/ca_cert.pem +74 -65
  215. data/test/rubygems/client.pem +103 -45
  216. data/test/rubygems/rubygems_plugin.rb +0 -1
  217. data/test/rubygems/simple_gem.rb +1 -1
  218. data/test/rubygems/ssl_cert.pem +78 -17
  219. data/test/rubygems/ssl_key.pem +25 -13
  220. data/test/rubygems/test_bundled_ca.rb +1 -1
  221. data/test/rubygems/test_config.rb +7 -2
  222. data/test/rubygems/test_gem.rb +205 -132
  223. data/test/rubygems/test_gem_bundler_version_finder.rb +4 -0
  224. data/test/rubygems/test_gem_command.rb +0 -1
  225. data/test/rubygems/test_gem_command_manager.rb +18 -3
  226. data/test/rubygems/test_gem_commands_build_command.rb +220 -15
  227. data/test/rubygems/test_gem_commands_cert_command.rb +69 -8
  228. data/test/rubygems/test_gem_commands_check_command.rb +1 -1
  229. data/test/rubygems/test_gem_commands_cleanup_command.rb +27 -1
  230. data/test/rubygems/test_gem_commands_contents_command.rb +1 -2
  231. data/test/rubygems/test_gem_commands_dependency_command.rb +33 -34
  232. data/test/rubygems/test_gem_commands_environment_command.rb +1 -0
  233. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -1
  234. data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -1
  235. data/test/rubygems/test_gem_commands_help_command.rb +7 -4
  236. data/test/rubygems/test_gem_commands_info_command.rb +44 -0
  237. data/test/rubygems/test_gem_commands_install_command.rb +79 -12
  238. data/test/rubygems/test_gem_commands_lock_command.rb +0 -1
  239. data/test/rubygems/test_gem_commands_open_command.rb +29 -0
  240. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -1
  241. data/test/rubygems/test_gem_commands_owner_command.rb +93 -57
  242. data/test/rubygems/test_gem_commands_pristine_command.rb +65 -30
  243. data/test/rubygems/test_gem_commands_push_command.rb +54 -0
  244. data/test/rubygems/test_gem_commands_query_command.rb +102 -100
  245. data/test/rubygems/test_gem_commands_search_command.rb +0 -1
  246. data/test/rubygems/test_gem_commands_server_command.rb +0 -1
  247. data/test/rubygems/test_gem_commands_setup_command.rb +50 -15
  248. data/test/rubygems/test_gem_commands_signin_command.rb +1 -1
  249. data/test/rubygems/test_gem_commands_sources_command.rb +0 -1
  250. data/test/rubygems/test_gem_commands_specification_command.rb +2 -3
  251. data/test/rubygems/test_gem_commands_stale_command.rb +3 -2
  252. data/test/rubygems/test_gem_commands_uninstall_command.rb +161 -8
  253. data/test/rubygems/test_gem_commands_unpack_command.rb +17 -1
  254. data/test/rubygems/test_gem_commands_update_command.rb +19 -2
  255. data/test/rubygems/test_gem_commands_which_command.rb +0 -1
  256. data/test/rubygems/test_gem_commands_yank_command.rb +0 -1
  257. data/test/rubygems/test_gem_config_file.rb +4 -2
  258. data/test/rubygems/test_gem_dependency.rb +0 -1
  259. data/test/rubygems/test_gem_dependency_installer.rb +8 -5
  260. data/test/rubygems/test_gem_dependency_list.rb +6 -7
  261. data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -1
  262. data/test/rubygems/test_gem_doctor.rb +1 -2
  263. data/test/rubygems/test_gem_ext_builder.rb +10 -23
  264. data/test/rubygems/test_gem_ext_cmake_builder.rb +5 -4
  265. data/test/rubygems/test_gem_ext_configure_builder.rb +3 -3
  266. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +8 -9
  267. data/test/rubygems/test_gem_ext_rake_builder.rb +20 -5
  268. data/test/rubygems/test_gem_gem_runner.rb +0 -1
  269. data/test/rubygems/test_gem_gemcutter_utilities.rb +32 -6
  270. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -1
  271. data/test/rubygems/test_gem_indexer.rb +16 -10
  272. data/test/rubygems/test_gem_install_update_options.rb +1 -20
  273. data/test/rubygems/test_gem_installer.rb +154 -119
  274. data/test/rubygems/test_gem_local_remote_options.rb +3 -3
  275. data/test/rubygems/test_gem_name_tuple.rb +0 -1
  276. data/test/rubygems/test_gem_package.rb +77 -31
  277. data/test/rubygems/test_gem_package_old.rb +0 -1
  278. data/test/rubygems/test_gem_package_tar_header.rb +42 -2
  279. data/test/rubygems/test_gem_package_tar_reader.rb +0 -1
  280. data/test/rubygems/test_gem_package_tar_reader_entry.rb +11 -0
  281. data/test/rubygems/test_gem_package_tar_writer.rb +43 -7
  282. data/test/rubygems/test_gem_package_task.rb +2 -2
  283. data/test/rubygems/test_gem_path_support.rb +28 -11
  284. data/test/rubygems/test_gem_platform.rb +4 -5
  285. data/test/rubygems/test_gem_rdoc.rb +1 -136
  286. data/test/rubygems/test_gem_remote_fetcher.rb +241 -141
  287. data/test/rubygems/test_gem_request.rb +9 -9
  288. data/test/rubygems/test_gem_request_connection_pools.rb +24 -3
  289. data/test/rubygems/test_gem_request_set.rb +5 -5
  290. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +82 -64
  291. data/test/rubygems/test_gem_request_set_lockfile.rb +1 -2
  292. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +4 -9
  293. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +1 -1
  294. data/test/rubygems/test_gem_requirement.rb +24 -4
  295. data/test/rubygems/test_gem_resolver.rb +13 -17
  296. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -1
  297. data/test/rubygems/test_gem_resolver_api_set.rb +0 -1
  298. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -1
  299. data/test/rubygems/test_gem_resolver_best_set.rb +0 -1
  300. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -1
  301. data/test/rubygems/test_gem_resolver_conflict.rb +0 -1
  302. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -1
  303. data/test/rubygems/test_gem_resolver_git_set.rb +0 -1
  304. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -1
  305. data/test/rubygems/test_gem_resolver_index_set.rb +0 -1
  306. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -1
  307. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -1
  308. data/test/rubygems/test_gem_resolver_installer_set.rb +2 -3
  309. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -1
  310. data/test/rubygems/test_gem_resolver_lock_set.rb +0 -1
  311. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -1
  312. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -1
  313. data/test/rubygems/test_gem_resolver_specification.rb +1 -2
  314. data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -1
  315. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -1
  316. data/test/rubygems/test_gem_security.rb +1 -3
  317. data/test/rubygems/test_gem_security_policy.rb +5 -6
  318. data/test/rubygems/test_gem_security_signer.rb +4 -3
  319. data/test/rubygems/test_gem_security_trust_dir.rb +1 -2
  320. data/test/rubygems/test_gem_server.rb +4 -4
  321. data/test/rubygems/test_gem_source.rb +0 -13
  322. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -1
  323. data/test/rubygems/test_gem_source_git.rb +0 -1
  324. data/test/rubygems/test_gem_source_installed.rb +0 -1
  325. data/test/rubygems/test_gem_source_lock.rb +0 -1
  326. data/test/rubygems/test_gem_source_vendor.rb +0 -1
  327. data/test/rubygems/test_gem_spec_fetcher.rb +0 -1
  328. data/test/rubygems/test_gem_specification.rb +366 -198
  329. data/test/rubygems/test_gem_stream_ui.rb +15 -32
  330. data/test/rubygems/test_gem_stub_specification.rb +0 -2
  331. data/test/rubygems/test_gem_text.rb +4 -0
  332. data/test/rubygems/test_gem_uninstaller.rb +42 -3
  333. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -1
  334. data/test/rubygems/test_gem_uri_formatter.rb +0 -1
  335. data/test/rubygems/test_gem_util.rb +31 -11
  336. data/test/rubygems/test_gem_validator.rb +0 -1
  337. data/test/rubygems/test_gem_version.rb +11 -11
  338. data/test/rubygems/test_gem_version_option.rb +0 -1
  339. data/test/rubygems/test_remote_fetch_error.rb +0 -1
  340. data/test/rubygems/test_require.rb +67 -52
  341. data/util/CL2notes +1 -2
  342. data/util/ci +20 -12
  343. data/util/cops/deprecations.rb +52 -0
  344. data/util/create_certs.rb +6 -7
  345. data/util/create_certs.sh +27 -0
  346. data/util/create_encrypted_key.rb +4 -5
  347. data/util/patch_with_prs.rb +1 -1
  348. data/util/rubocop +8 -0
  349. data/util/update_bundled_ca_certificates.rb +12 -13
  350. data/util/update_changelog.rb +1 -1
  351. metadata +61 -51
  352. data/.autotest +0 -71
  353. data/.document +0 -5
  354. data/CONTRIBUTING.rdoc +0 -130
  355. data/CVE-2013-4287.txt +0 -35
  356. data/CVE-2013-4363.txt +0 -45
  357. data/CVE-2015-3900.txt +0 -40
  358. data/POLICIES.rdoc +0 -74
  359. data/test/rubygems/fix_openssl_warnings.rb +0 -13
@@ -73,7 +73,7 @@ prefix or only the files that are requireable.
73
73
 
74
74
  names.each do |name|
75
75
  found =
76
- if options[:show_install_dir] then
76
+ if options[:show_install_dir]
77
77
  gem_install_dir name
78
78
  else
79
79
  gem_contents name
@@ -83,15 +83,15 @@ prefix or only the files that are requireable.
83
83
  end
84
84
  end
85
85
 
86
- def files_in spec
87
- if spec.default_gem? then
86
+ def files_in(spec)
87
+ if spec.default_gem?
88
88
  files_in_default_gem spec
89
89
  else
90
90
  files_in_gem spec
91
91
  end
92
92
  end
93
93
 
94
- def files_in_gem spec
94
+ def files_in_gem(spec)
95
95
  gem_path = spec.full_gem_path
96
96
  extra = "/{#{spec.require_paths.join ','}}" if options[:lib_only]
97
97
  glob = "#{gem_path}#{extra}/**/*"
@@ -102,7 +102,7 @@ prefix or only the files that are requireable.
102
102
  end
103
103
  end
104
104
 
105
- def files_in_default_gem spec
105
+ def files_in_default_gem(spec)
106
106
  spec.files.map do |file|
107
107
  case file
108
108
  when /\A#{spec.bindir}\//
@@ -115,7 +115,7 @@ prefix or only the files that are requireable.
115
115
  end
116
116
  end
117
117
 
118
- def gem_contents name
118
+ def gem_contents(name)
119
119
  spec = spec_for name
120
120
 
121
121
  return false unless spec
@@ -127,7 +127,7 @@ prefix or only the files that are requireable.
127
127
  true
128
128
  end
129
129
 
130
- def gem_install_dir name
130
+ def gem_install_dir(name)
131
131
  spec = spec_for name
132
132
 
133
133
  return false unless spec
@@ -138,27 +138,27 @@ prefix or only the files that are requireable.
138
138
  end
139
139
 
140
140
  def gem_names # :nodoc:
141
- if options[:all] then
141
+ if options[:all]
142
142
  Gem::Specification.map(&:name)
143
143
  else
144
144
  get_all_gem_names
145
145
  end
146
146
  end
147
147
 
148
- def path_description spec_dirs # :nodoc:
149
- if spec_dirs.empty? then
148
+ def path_description(spec_dirs) # :nodoc:
149
+ if spec_dirs.empty?
150
150
  "default gem paths"
151
151
  else
152
152
  "specified path"
153
153
  end
154
154
  end
155
155
 
156
- def show_files files
156
+ def show_files(files)
157
157
  files.sort.each do |prefix, basename|
158
158
  absolute_path = File.join(prefix, basename)
159
159
  next if File.directory? absolute_path
160
160
 
161
- if options[:prefix] then
161
+ if options[:prefix]
162
162
  say absolute_path
163
163
  else
164
164
  say basename
@@ -166,14 +166,14 @@ prefix or only the files that are requireable.
166
166
  end
167
167
  end
168
168
 
169
- def spec_for name
169
+ def spec_for(name)
170
170
  spec = Gem::Specification.find_all_by_name(name, @version).last
171
171
 
172
172
  return spec if spec
173
173
 
174
174
  say "Unable to find gem '#{name}' in #{@path_kind}"
175
175
 
176
- if Gem.configuration.verbose then
176
+ if Gem.configuration.verbose
177
177
  say "\nDirectories searched:"
178
178
  @spec_dirs.sort.each { |dir| say dir }
179
179
  end
@@ -188,4 +188,3 @@ prefix or only the files that are requireable.
188
188
  end
189
189
 
190
190
  end
191
-
@@ -54,7 +54,7 @@ use with other commands.
54
54
  "#{program_name} REGEXP"
55
55
  end
56
56
 
57
- def fetch_remote_specs dependency # :nodoc:
57
+ def fetch_remote_specs(dependency) # :nodoc:
58
58
  fetcher = Gem::SpecFetcher.fetcher
59
59
 
60
60
  ss, = fetcher.spec_for_dependency dependency
@@ -62,7 +62,7 @@ use with other commands.
62
62
  ss.map { |spec, _| spec }
63
63
  end
64
64
 
65
- def fetch_specs name_pattern, dependency # :nodoc:
65
+ def fetch_specs(name_pattern, dependency) # :nodoc:
66
66
  specs = []
67
67
 
68
68
  if local?
@@ -79,7 +79,7 @@ use with other commands.
79
79
  specs.uniq.sort
80
80
  end
81
81
 
82
- def gem_dependency pattern, version, prerelease # :nodoc:
82
+ def gem_dependency(pattern, version, prerelease) # :nodoc:
83
83
  dependency = Gem::Deprecate.skip_during {
84
84
  Gem::Dependency.new pattern, version
85
85
  }
@@ -89,9 +89,9 @@ use with other commands.
89
89
  dependency
90
90
  end
91
91
 
92
- def display_pipe specs # :nodoc:
92
+ def display_pipe(specs) # :nodoc:
93
93
  specs.each do |spec|
94
- unless spec.dependencies.empty? then
94
+ unless spec.dependencies.empty?
95
95
  spec.dependencies.sort_by { |dep| dep.name }.each do |dep|
96
96
  say "#{dep.name} --version '#{dep.requirement}'"
97
97
  end
@@ -99,12 +99,12 @@ use with other commands.
99
99
  end
100
100
  end
101
101
 
102
- def display_readable specs, reverse # :nodoc:
102
+ def display_readable(specs, reverse) # :nodoc:
103
103
  response = String.new
104
104
 
105
105
  specs.each do |spec|
106
106
  response << print_dependencies(spec)
107
- unless reverse[spec.full_name].empty? then
107
+ unless reverse[spec.full_name].empty?
108
108
  response << " Used by\n"
109
109
  reverse[spec.full_name].each do |sp, dep|
110
110
  response << " #{sp} (#{dep})\n"
@@ -128,7 +128,7 @@ use with other commands.
128
128
 
129
129
  reverse = reverse_dependencies specs
130
130
 
131
- if options[:pipe_format] then
131
+ if options[:pipe_format]
132
132
  display_pipe specs
133
133
  else
134
134
  display_readable specs, reverse
@@ -136,13 +136,13 @@ use with other commands.
136
136
  end
137
137
 
138
138
  def ensure_local_only_reverse_dependencies # :nodoc:
139
- if options[:reverse_dependencies] and remote? and not local? then
139
+ if options[:reverse_dependencies] and remote? and not local?
140
140
  alert_error 'Only reverse dependencies for local gems are supported.'
141
141
  terminate_interaction 1
142
142
  end
143
143
  end
144
144
 
145
- def ensure_specs specs # :nodoc:
145
+ def ensure_specs(specs) # :nodoc:
146
146
  return unless specs.empty?
147
147
 
148
148
  patterns = options[:args].join ','
@@ -155,7 +155,7 @@ use with other commands.
155
155
  def print_dependencies(spec, level = 0) # :nodoc:
156
156
  response = String.new
157
157
  response << ' ' * level + "Gem #{spec.full_name}\n"
158
- unless spec.dependencies.empty? then
158
+ unless spec.dependencies.empty?
159
159
  spec.dependencies.sort_by { |dep| dep.name }.each do |dep|
160
160
  response << ' ' * level + " #{dep}\n"
161
161
  end
@@ -163,7 +163,7 @@ use with other commands.
163
163
  response
164
164
  end
165
165
 
166
- def remote_specs dependency # :nodoc:
166
+ def remote_specs(dependency) # :nodoc:
167
167
  fetcher = Gem::SpecFetcher.fetcher
168
168
 
169
169
  ss, _ = fetcher.spec_for_dependency dependency
@@ -171,7 +171,7 @@ use with other commands.
171
171
  ss.map { |s,o| s }
172
172
  end
173
173
 
174
- def reverse_dependencies specs # :nodoc:
174
+ def reverse_dependencies(specs) # :nodoc:
175
175
  reverse = Hash.new { |h, k| h[k] = [] }
176
176
 
177
177
  return reverse unless options[:reverse_dependencies]
@@ -186,7 +186,7 @@ use with other commands.
186
186
  ##
187
187
  # Returns an Array of [specification, dep] that are satisfied by +spec+.
188
188
 
189
- def find_reverse_dependencies spec # :nodoc:
189
+ def find_reverse_dependencies(spec) # :nodoc:
190
190
  result = []
191
191
 
192
192
  Gem::Specification.each do |sp|
@@ -194,7 +194,7 @@ use with other commands.
194
194
  dep = Gem::Dependency.new(*dep) unless Gem::Dependency === dep
195
195
 
196
196
  if spec.name == dep.name and
197
- dep.requirement.satisfied_by?(spec.version) then
197
+ dep.requirement.satisfied_by?(spec.version)
198
198
  result << [sp.full_name, dep]
199
199
  end
200
200
  end
@@ -205,10 +205,10 @@ use with other commands.
205
205
 
206
206
  private
207
207
 
208
- def name_pattern args
208
+ def name_pattern(args)
209
209
  args << '' if args.empty?
210
210
 
211
- if args.length == 1 and args.first =~ /\A\/(.*)\/(i)?\z/m then
211
+ if args.length == 1 and args.first =~ /\A\/(.*)\/(i)?\z/m
212
212
  flags = $2 ? Regexp::IGNORECASE : nil
213
213
  Regexp.new $1, flags
214
214
  else
@@ -97,7 +97,7 @@ lib/rubygems/defaults/operating_system.rb
97
97
  true
98
98
  end
99
99
 
100
- def add_path out, path
100
+ def add_path(out, path)
101
101
  path.each do |component|
102
102
  out << " - #{component}\n"
103
103
  end
@@ -120,6 +120,8 @@ lib/rubygems/defaults/operating_system.rb
120
120
 
121
121
  out << " - RUBY EXECUTABLE: #{Gem.ruby}\n"
122
122
 
123
+ out << " - GIT EXECUTABLE: #{git_path}\n"
124
+
123
125
  out << " - EXECUTABLE DIRECTORY: #{Gem.bindir}\n"
124
126
 
125
127
  out << " - SPEC CACHE DIRECTORY: #{Gem.spec_cache_dir}\n"
@@ -157,4 +159,21 @@ lib/rubygems/defaults/operating_system.rb
157
159
  out
158
160
  end
159
161
 
162
+ private
163
+
164
+ ##
165
+ # Git binary path
166
+
167
+ def git_path
168
+ exts = ENV["PATHEXT"] ? ENV["PATHEXT"].split(";") : [""]
169
+ ENV["PATH"].split(File::PATH_SEPARATOR).each do |path|
170
+ exts.each do |ext|
171
+ exe = File.join(path, "git#{ext}")
172
+ return exe if File.executable?(exe) && !File.directory?(exe)
173
+ end
174
+ end
175
+
176
+ return nil
177
+ end
178
+
160
179
  end
@@ -56,14 +56,14 @@ then repackaging it.
56
56
  specs_and_sources, errors =
57
57
  Gem::SpecFetcher.fetcher.spec_for_dependency dep
58
58
 
59
- if platform then
59
+ if platform
60
60
  filtered = specs_and_sources.select { |s,| s.platform == platform }
61
61
  specs_and_sources = filtered unless filtered.empty?
62
62
  end
63
63
 
64
64
  spec, source = specs_and_sources.max_by { |s,| s.version }
65
65
 
66
- if spec.nil? then
66
+ if spec.nil?
67
67
  show_lookup_failure gem_name, version, errors, options[:domain]
68
68
  next
69
69
  end
@@ -75,4 +75,3 @@ then repackaging it.
75
75
  end
76
76
 
77
77
  end
78
-
@@ -67,13 +67,13 @@ Marshal::MINOR_VERSION constants. It is used to ensure compatibility.
67
67
  options[:build_modern] = true
68
68
 
69
69
  if not File.exist?(options[:directory]) or
70
- not File.directory?(options[:directory]) then
70
+ not File.directory?(options[:directory])
71
71
  alert_error "unknown directory name #{options[:directory]}."
72
72
  terminate_interaction 1
73
73
  else
74
74
  indexer = Gem::Indexer.new options.delete(:directory), options
75
75
 
76
- if options[:update] then
76
+ if options[:update]
77
77
  indexer.update_index
78
78
  else
79
79
  indexer.generate_index
@@ -82,4 +82,3 @@ Marshal::MINOR_VERSION constants. It is used to ensure compatibility.
82
82
  end
83
83
 
84
84
  end
85
-
@@ -4,7 +4,7 @@ require 'rubygems/command'
4
4
  class Gem::Commands::HelpCommand < Gem::Command
5
5
 
6
6
  # :stopdoc:
7
- EXAMPLES = <<-EOF
7
+ EXAMPLES = <<-EOF.freeze
8
8
  Some examples of 'gem' usage.
9
9
 
10
10
  * Install 'rake', either from local directory or remote server:
@@ -53,7 +53,7 @@ Some examples of 'gem' usage.
53
53
  gem update --system
54
54
  EOF
55
55
 
56
- GEM_DEPENDENCIES = <<-EOF
56
+ GEM_DEPENDENCIES = <<-EOF.freeze
57
57
  A gem dependencies file allows installation of a consistent set of gems across
58
58
  multiple environments. The RubyGems implementation is designed to be
59
59
  compatible with Bundler's Gemfile format. You can see additional
@@ -230,7 +230,7 @@ default. This may be overridden with the :development_group option:
230
230
 
231
231
  EOF
232
232
 
233
- PLATFORMS = <<-'EOF'
233
+ PLATFORMS = <<-'EOF'.freeze
234
234
  RubyGems platforms are composed of three parts, a CPU, an OS, and a
235
235
  version. These values are taken from values in rbconfig.rb. You can view
236
236
  your current platform by running `gem environment`.
@@ -277,7 +277,7 @@ platform.
277
277
  ["examples", EXAMPLES],
278
278
  ["gem_dependencies", GEM_DEPENDENCIES],
279
279
  ["platforms", PLATFORMS],
280
- ]
280
+ ].freeze
281
281
  # :startdoc:
282
282
 
283
283
  def initialize
@@ -297,8 +297,8 @@ platform.
297
297
  begins? command, arg
298
298
  end
299
299
 
300
- if help then
301
- if Symbol === help then
300
+ if help
301
+ if Symbol === help
302
302
  send help
303
303
  else
304
304
  say help
@@ -306,10 +306,10 @@ platform.
306
306
  return
307
307
  end
308
308
 
309
- if options[:help] then
309
+ if options[:help]
310
310
  show_help
311
311
 
312
- elsif arg then
312
+ elsif arg
313
313
  show_command_help arg
314
314
 
315
315
  else
@@ -334,7 +334,7 @@ platform.
334
334
  command = @command_manager[cmd_name]
335
335
 
336
336
  summary =
337
- if command then
337
+ if command
338
338
  command.summary
339
339
  else
340
340
  "[No command found for #{cmd_name}]"
@@ -356,15 +356,15 @@ platform.
356
356
  say out.join("\n")
357
357
  end
358
358
 
359
- def show_command_help command_name # :nodoc:
359
+ def show_command_help(command_name) # :nodoc:
360
360
  command_name = command_name.downcase
361
361
 
362
362
  possibilities = @command_manager.find_command_possibilities command_name
363
363
 
364
- if possibilities.size == 1 then
364
+ if possibilities.size == 1
365
365
  command = @command_manager[possibilities.first]
366
366
  command.invoke("--help")
367
- elsif possibilities.size > 1 then
367
+ elsif possibilities.size > 1
368
368
  alert_warning "Ambiguous command #{command_name} (#{possibilities.join(', ')})"
369
369
  else
370
370
  alert_warning "Unknown command #{command_name}. Try: gem help commands"
@@ -372,4 +372,3 @@ platform.
372
372
  end
373
373
 
374
374
  end
375
-
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rubygems/command'
4
+ require 'rubygems/commands/query_command'
5
+
6
+ class Gem::Commands::InfoCommand < Gem::Commands::QueryCommand
7
+ def initialize
8
+ super "info", "Show information for the given gem"
9
+
10
+ remove_option('--name-matches')
11
+ remove_option('-d')
12
+
13
+ defaults[:details] = true
14
+ defaults[:exact] = true
15
+ end
16
+
17
+ def description # :nodoc:
18
+ "Info prints information about the gem such as name,"\
19
+ " description, website, license and installed paths"
20
+ end
21
+
22
+ def usage # :nodoc:
23
+ "#{program_name} GEMNAME"
24
+ end
25
+
26
+ def arguments # :nodoc:
27
+ "GEMNAME name of the gem to print information about"
28
+ end
29
+
30
+ def defaults_str
31
+ "--local"
32
+ end
33
+ end
@@ -132,7 +132,7 @@ You can use `i` command instead of `install`.
132
132
  end
133
133
 
134
134
  def check_install_dir # :nodoc:
135
- if options[:install_dir] and options[:user_install] then
135
+ if options[:install_dir] and options[:user_install]
136
136
  alert_error "Use --install-dir or --user-install but not both"
137
137
  terminate_interaction 1
138
138
  end
@@ -140,22 +140,22 @@ You can use `i` command instead of `install`.
140
140
 
141
141
  def check_version # :nodoc:
142
142
  if options[:version] != Gem::Requirement.default and
143
- get_all_gem_names.size > 1 then
144
- alert_error "Can't use --version w/ multiple gems. Use name:ver instead."
143
+ get_all_gem_names.size > 1
144
+ alert_error "Can't use --version with multiple gems. You can specify multiple gems with" \
145
+ " version requirements using `gem install 'my_gem:1.0.0' 'my_other_gem:~>2.0.0'`"
145
146
  terminate_interaction 1
146
147
  end
147
148
  end
148
149
 
149
150
  def execute
150
-
151
- if options.include? :gemdeps then
151
+ if options.include? :gemdeps
152
152
  install_from_gemdeps
153
153
  return # not reached
154
154
  end
155
155
 
156
156
  @installed_specs = []
157
157
 
158
- ENV.delete 'GEM_PATH' if options[:install_dir].nil? and RUBY_VERSION > '1.9'
158
+ ENV.delete 'GEM_PATH' if options[:install_dir].nil?
159
159
 
160
160
  check_install_dir
161
161
  check_version
@@ -188,13 +188,13 @@ You can use `i` command instead of `install`.
188
188
  terminate_interaction
189
189
  end
190
190
 
191
- def install_gem name, version # :nodoc:
191
+ def install_gem(name, version) # :nodoc:
192
192
  return if options[:conservative] and
193
193
  not Gem::Dependency.new(name, version).matching_specs.empty?
194
194
 
195
195
  req = Gem::Requirement.create(version)
196
196
 
197
- if options[:ignore_dependencies] then
197
+ if options[:ignore_dependencies]
198
198
  install_gem_without_dependencies name, req
199
199
  else
200
200
  inst = Gem::DependencyInstaller.new options
@@ -216,11 +216,11 @@ You can use `i` command instead of `install`.
216
216
  end
217
217
  end
218
218
 
219
- def install_gem_without_dependencies name, req # :nodoc:
219
+ def install_gem_without_dependencies(name, req) # :nodoc:
220
220
  gem = nil
221
221
 
222
- if local? then
223
- if name =~ /\.gem$/ and File.file? name then
222
+ if local?
223
+ if name =~ /\.gem$/ and File.file? name
224
224
  source = Gem::Source::SpecificFile.new name
225
225
  spec = source.spec
226
226
  else
@@ -230,7 +230,7 @@ You can use `i` command instead of `install`.
230
230
  gem = source.download spec if spec
231
231
  end
232
232
 
233
- if remote? and not gem then
233
+ if remote? and not gem
234
234
  dependency = Gem::Dependency.new name, req
235
235
  dependency.prerelease = options[:prerelease]
236
236
 
@@ -257,17 +257,22 @@ You can use `i` command instead of `install`.
257
257
 
258
258
  get_all_gem_names_and_versions.each do |gem_name, gem_version|
259
259
  gem_version ||= options[:version]
260
+ domain = options[:domain]
261
+ domain = :local unless options[:suggest_alternate]
260
262
 
261
263
  begin
262
264
  install_gem gem_name, gem_version
263
265
  rescue Gem::InstallError => e
264
266
  alert_error "Error installing #{gem_name}:\n\t#{e.message}"
265
267
  exit_code |= 1
266
- rescue Gem::GemNotFoundException, Gem::UnsatisfiableDependencyError => e
267
- domain = options[:domain]
268
- domain = :local unless options[:suggest_alternate]
268
+ rescue Gem::GemNotFoundException => e
269
269
  show_lookup_failure e.name, e.version, e.errors, domain
270
270
 
271
+ exit_code |= 2
272
+ rescue Gem::UnsatisfiableDependencyError => e
273
+ show_lookup_failure e.name, e.version, e.errors, domain,
274
+ "'#{gem_name}' (#{gem_version})"
275
+
271
276
  exit_code |= 2
272
277
  end
273
278
  end
@@ -287,7 +292,7 @@ You can use `i` command instead of `install`.
287
292
  require 'rubygems/rdoc'
288
293
  end
289
294
 
290
- def show_install_errors errors # :nodoc:
295
+ def show_install_errors(errors) # :nodoc:
291
296
  return unless errors
292
297
 
293
298
  errors.each do |x|
@@ -307,4 +312,3 @@ You can use `i` command instead of `install`.
307
312
  end
308
313
 
309
314
  end
310
-
@@ -38,4 +38,3 @@ To search for remote gems use the search command.
38
38
  end
39
39
 
40
40
  end
41
-
@@ -59,7 +59,7 @@ lock it down to the exact version.
59
59
  end
60
60
 
61
61
  def complain(message)
62
- if options[:strict] then
62
+ if options[:strict]
63
63
  raise Gem::Exception, message
64
64
  else
65
65
  say "# #{message}"
@@ -78,7 +78,7 @@ lock it down to the exact version.
78
78
 
79
79
  spec = Gem::Specification.load spec_path(full_name)
80
80
 
81
- if spec.nil? then
81
+ if spec.nil?
82
82
  complain "Could not find gem #{full_name}, try using the full name"
83
83
  next
84
84
  end
@@ -90,7 +90,7 @@ lock it down to the exact version.
90
90
  next if locked[dep.name]
91
91
  candidates = dep.matching_specs
92
92
 
93
- if candidates.empty? then
93
+ if candidates.empty?
94
94
  complain "Unable to satisfy '#{dep}' from currently installed gems"
95
95
  else
96
96
  pending << candidates.last.full_name
@@ -108,4 +108,3 @@ lock it down to the exact version.
108
108
  end
109
109
 
110
110
  end
111
-
@@ -11,9 +11,9 @@ class Gem::Commands::OpenCommand < Gem::Command
11
11
  def initialize
12
12
  super 'open', 'Open gem sources in editor'
13
13
 
14
- add_option('-e', '--editor EDITOR', String,
15
- "Opens gem sources in EDITOR") do |editor, options|
16
- options[:editor] = editor || get_env_editor
14
+ add_option('-e', '--editor COMMAND', String,
15
+ "Prepends COMMAND to gem path. Could be used to specify editor.") do |command, options|
16
+ options[:editor] = command || get_env_editor
17
17
  end
18
18
  add_option('-v', '--version VERSION', String,
19
19
  "Opens specific gem version") do |version|
@@ -32,14 +32,14 @@ class Gem::Commands::OpenCommand < Gem::Command
32
32
  def description # :nodoc:
33
33
  <<-EOF
34
34
  The open command opens gem in editor and changes current path
35
- to gem's source directory. Editor can be specified with -e option,
36
- otherwise rubygems will look for editor in $EDITOR, $VISUAL and
37
- $GEM_EDITOR variables.
35
+ to gem's source directory.
36
+ Editor command can be specified with -e option, otherwise rubygems
37
+ will look for editor in $EDITOR, $VISUAL and $GEM_EDITOR variables.
38
38
  EOF
39
39
  end
40
40
 
41
41
  def usage # :nodoc:
42
- "#{program_name} GEMNAME [-e EDITOR]"
42
+ "#{program_name} GEMNAME [-e COMMAND]"
43
43
  end
44
44
 
45
45
  def get_env_editor
@@ -58,20 +58,26 @@ class Gem::Commands::OpenCommand < Gem::Command
58
58
  terminate_interaction 1 unless found
59
59
  end
60
60
 
61
- def open_gem name
61
+ def open_gem(name)
62
62
  spec = spec_for name
63
+
63
64
  return false unless spec
64
65
 
66
+ if spec.default_gem?
67
+ say "'#{name}' is a default gem and can't be opened."
68
+ return false
69
+ end
70
+
65
71
  open_editor(spec.full_gem_path)
66
72
  end
67
73
 
68
- def open_editor path
74
+ def open_editor(path)
69
75
  Dir.chdir(path) do
70
76
  system(*@editor.split(/\s+/) + [path])
71
77
  end
72
78
  end
73
79
 
74
- def spec_for name
80
+ def spec_for(name)
75
81
  spec = Gem::Specification.find_all_by_name(name, @version).first
76
82
 
77
83
  return spec if spec