rubygems-update 3.0.4 → 3.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -0
  3. data/History.txt +85 -0
  4. data/Manifest.txt +5 -3
  5. data/Rakefile +8 -6
  6. data/bundler/lib/bundler/build_metadata.rb +2 -2
  7. data/lib/rubygems.rb +6 -12
  8. data/lib/rubygems/commands/push_command.rb +2 -0
  9. data/lib/rubygems/commands/setup_command.rb +9 -11
  10. data/lib/rubygems/commands/uninstall_command.rb +16 -6
  11. data/lib/rubygems/commands/which_command.rb +1 -3
  12. data/lib/rubygems/defaults.rb +1 -8
  13. data/lib/rubygems/dependency.rb +1 -1
  14. data/lib/rubygems/dependency_installer.rb +1 -2
  15. data/lib/rubygems/exceptions.rb +0 -4
  16. data/lib/rubygems/gemcutter_utilities.rb +9 -5
  17. data/lib/rubygems/installer.rb +8 -5
  18. data/lib/rubygems/installer_test_case.rb +2 -2
  19. data/lib/rubygems/package/tar_header.rb +11 -2
  20. data/lib/rubygems/remote_fetcher.rb +15 -54
  21. data/lib/rubygems/request.rb +1 -1
  22. data/lib/rubygems/request_set/gem_dependency_api.rb +3 -5
  23. data/lib/rubygems/resolver.rb +4 -1
  24. data/lib/rubygems/s3_uri_signer.rb +183 -0
  25. data/lib/rubygems/security_option.rb +0 -1
  26. data/lib/rubygems/specification.rb +13 -14
  27. data/lib/rubygems/ssl_certs/{index.rubygems.org → rubygems.org}/GlobalSignRootCA.pem +0 -0
  28. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
  29. data/lib/rubygems/stub_specification.rb +1 -2
  30. data/lib/rubygems/test_case.rb +8 -4
  31. data/lib/rubygems/util.rb +12 -0
  32. data/rubygems-update.gemspec +1 -1
  33. data/test/rubygems/test_bundled_ca.rb +7 -4
  34. data/test/rubygems/test_gem.rb +40 -3
  35. data/test/rubygems/test_gem_commands_push_command.rb +15 -0
  36. data/test/rubygems/test_gem_commands_setup_command.rb +11 -7
  37. data/test/rubygems/test_gem_commands_uninstall_command.rb +80 -1
  38. data/test/rubygems/test_gem_indexer.rb +8 -8
  39. data/test/rubygems/test_gem_installer.rb +78 -19
  40. data/test/rubygems/test_gem_package_tar_header.rb +41 -0
  41. data/test/rubygems/test_gem_remote_fetcher.rb +133 -14
  42. data/test/rubygems/test_gem_request.rb +4 -4
  43. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +20 -30
  44. data/test/rubygems/test_gem_specification.rb +29 -0
  45. data/test/rubygems/test_gem_util.rb +8 -0
  46. data/util/cops/deprecations.rb +52 -0
  47. data/util/create_certs.sh +27 -0
  48. data/util/update_bundled_ca_certificates.rb +1 -3
  49. metadata +12 -9
  50. data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  51. data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3dcbed60214cfd0ed97ed7fce1d0c9e9a1298a823a26fcd2b75326d711ff299d
4
- data.tar.gz: 6dd6fabe834fd5fc81dfa7bb55f874a6d182123a8d0e396fe7dd57cacee5e379
3
+ metadata.gz: 0e1fcd26ebdb712316751bc03f488cc9d81bec96aa3e2a05be9744daea7a0c9f
4
+ data.tar.gz: d54a3231c23976e9c5d1fe04ffeb2f0924706c4d5aebfa0f5d367fd8c94a805b
5
5
  SHA512:
6
- metadata.gz: ef072a34d1765edd4f67b83a19efbc691e2f4c4dac6c8fda9004dbb2a771f550aa7b8a61dd301a477310f9e3987c642c8c49e8d417abd1e4bffbe7dd1a485499
7
- data.tar.gz: e30274bbce496312bcb34f45cce2d7f7c2f6916095f67de538ccb9429b197f402d75c9c3090472dea3d2481760632466c20c513890f3d924e671ff4df77b0982
6
+ metadata.gz: 9603fa015ec2c7a56aa30512366bbb3d16246d12084ae01424b94505b41c71886d3676055d81ecb3bc3b3a4c39fa2e330e00117a457cdeb957cb4e0877d67970
7
+ data.tar.gz: 796d607c5e7b69cd9f7e3886c2d1705e9d4df0ded3bf24f0648c2cd29cf52d9f4a284721abd74a62a2598e7a67b055b8d58c096db574ee6ba271d6adfba5d196
@@ -34,5 +34,7 @@ matrix:
34
34
  allow_failures:
35
35
  - rvm: ruby-head
36
36
  env: "TEST_TOOL=rubygems YAML=psych"
37
+ - rvm: 2.3.8
38
+ env: "TEST_TOOL=bundler RGV=master"
37
39
  - rvm: ruby-head
38
40
  env: "TEST_TOOL=bundler RGV=master"
@@ -1,5 +1,90 @@
1
1
  # coding: UTF-8
2
2
 
3
+ === 3.0.9 / 2020-12-09
4
+
5
+ Minor enhancements:
6
+
7
+ * Add GlobalSign Root CA - R3 cert and remove outdated certs. Pull request #4100
8
+ by Aditya Prakash.
9
+
10
+ === 3.0.8 / 2020-02-19
11
+
12
+ Bug fixes:
13
+
14
+ * Gem::Specification#to_ruby needs OpenSSL. Pull request #2937 by
15
+ Nobuyoshi Nakada.
16
+
17
+ === 3.0.7 / 2020-02-18
18
+
19
+ Bug fixes:
20
+
21
+ * Fix underscore version selection for bundler #2908 by David Rodríguez.
22
+ * Add missing wrapper. Pull request #2690 by David Rodríguez.
23
+ * Make Gem::Specification#ruby_code handle OpenSSL::PKey::RSA objects.
24
+ Pull request #2782 by Luis Sagastume.
25
+ * Installer.rb - fix #windows_stub_script. Pull request #2876 by MSP-Greg.
26
+ * Use IAM role to extract security-credentials for EC2 instance. Pull
27
+ request #2894 by Alexander Pakulov.
28
+
29
+ === 3.0.6 / 2019-08-17
30
+
31
+ Bug fixes:
32
+
33
+ * Revert #2813. It broke the compatibility with 3.0.x versions.
34
+
35
+ === 3.0.5 / 2019-08-16
36
+
37
+ Minor enhancements:
38
+
39
+ * Use env var to configure api key on push. Pull request #2559 by Luis
40
+ Sagastume.
41
+ * Unswallow uninstall error. Pull request #2707 by David Rodríguez.
42
+ * Expose windows path normalization utility. Pull request #2767 by David
43
+ Rodríguez.
44
+ * Clean which command. Pull request #2801 by Luis Sagastume.
45
+ * Upgrading S3 source signature to AWS SigV4. Pull request #2807 by
46
+ Alexander Pakulov.
47
+ * Remove missleading comment, no reason to move Gem.host to Gem::Util.
48
+ Pull request #2811 by Luis Sagastume.
49
+ * Drop support for 'gem env packageversion'. Pull request #2813 by Luis
50
+ Sagastume.
51
+ * Take into account just git tracked files in update_manifest rake task.
52
+ Pull request #2816 by Luis Sagastume.
53
+ * Remove TODO comment, there's no Gem::Dirs constant. Pull request #2819
54
+ by Luis Sagastume.
55
+ * Remove unused 'raise' from test_case. Pull request #2820 by Luis
56
+ Sagastume.
57
+ * Move TODO comment to an information comment. Pull request #2821 by Luis
58
+ Sagastume.
59
+ * Use File#open instead of Kernel#open in stub_specification.rb. Pull
60
+ request #2834 by Luis Sagastume.
61
+ * Make error code a gemcutter_utilities a constant. Pull request #2844 by
62
+ Luis Sagastume.
63
+ * Remove FIXME comment related to PathSupport. Pull request #2854 by Luis
64
+ Sagastume.
65
+ * Use gsub with Hash. Pull request #2860 by Kazuhiro NISHIYAMA.
66
+ * Use the standard RUBY_ENGINE_VERSION instead of JRUBY_VERSION. Pull
67
+ request #2864 by Benoit Daloze.
68
+ * Do not mutate uri.query during s3 signature creation. Pull request #2874
69
+ by Alexander Pakulov.
70
+ * Fixup #2844. Pull request #2878 by SHIBATA Hiroshi.
71
+
72
+ Bug fixes:
73
+
74
+ * Fix intermittent test error on Appveyor & Travis. Pull request #2568 by
75
+ MSP-Greg.
76
+ * Extend timeout on assert_self_install_permissions. Pull request #2605 by
77
+ SHIBATA Hiroshi.
78
+ * Better folder assertions. Pull request #2644 by David Rodríguez.
79
+ * Fix default gem executable installation when folder is not `bin/`. Pull
80
+ request #2649 by David Rodríguez.
81
+ * Fix gem uninstall behavior. Pull request #2663 by Luis Sagastume.
82
+ * Fix for large values in UID/GID fields in tar archives. Pull request
83
+ #2780 by Alexey Shein.
84
+ * Fixed task order for release. Pull request #2792 by SHIBATA Hiroshi.
85
+ * Ignore GEMRC variable for test suite. Pull request #2837 by SHIBATA
86
+ Hiroshi.
87
+
3
88
  === 3.0.4 / 2019-06-14
4
89
 
5
90
  Minor enhancements:
@@ -413,6 +413,7 @@ lib/rubygems/resolver/specification.rb
413
413
  lib/rubygems/resolver/stats.rb
414
414
  lib/rubygems/resolver/vendor_set.rb
415
415
  lib/rubygems/resolver/vendor_specification.rb
416
+ lib/rubygems/s3_uri_signer.rb
416
417
  lib/rubygems/safe_yaml.rb
417
418
  lib/rubygems/security.rb
418
419
  lib/rubygems/security/policies.rb
@@ -435,9 +436,8 @@ lib/rubygems/spec_fetcher.rb
435
436
  lib/rubygems/specification.rb
436
437
  lib/rubygems/specification_policy.rb
437
438
  lib/rubygems/ssl_certs/.document
438
- lib/rubygems/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem
439
- lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem
440
- lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem
439
+ lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA.pem
440
+ lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem
441
441
  lib/rubygems/stub_specification.rb
442
442
  lib/rubygems/syck_hack.rb
443
443
  lib/rubygems/test_case.rb
@@ -639,7 +639,9 @@ test/rubygems/wrong_key_cert.pem
639
639
  test/rubygems/wrong_key_cert_32.pem
640
640
  util/CL2notes
641
641
  util/ci
642
+ util/cops/deprecations.rb
642
643
  util/create_certs.rb
644
+ util/create_certs.sh
643
645
  util/create_encrypted_key.rb
644
646
  util/generate_spdx_license_list.rb
645
647
  util/patch_with_prs.rb
data/Rakefile CHANGED
@@ -79,7 +79,7 @@ end
79
79
  # --------------------------------------------------------------------
80
80
  # Creating a release
81
81
 
82
- task :prerelease => %w[clobber test bundler:build_metadata check_deprecations package]
82
+ task :prerelease => %w[clobber test bundler:build_metadata check_deprecations]
83
83
  task :postrelease => %w[bundler:build_metadata:clean upload guides:publish blog:publish]
84
84
 
85
85
  desc "Check for deprecated methods with expired deprecation horizon"
@@ -93,9 +93,10 @@ end
93
93
 
94
94
  desc "Release rubygems-#{v}"
95
95
  task :release => :prerelease do
96
+ Rake::Task["package"].invoke
96
97
  sh "gem push pkg/rubygems-update-#{v}.gem"
98
+ Rake::Task["postrelease"].invoke
97
99
  end
98
- Rake::Task["release"].enhance(["postrelease"])
99
100
 
100
101
  Gem::PackageTask.new(spec) {}
101
102
 
@@ -128,7 +129,7 @@ end
128
129
 
129
130
  file "pkg/rubygems-#{v}.tgz" => "pkg/rubygems-#{v}" do
130
131
  cd 'pkg' do
131
- sh "tar -czf rubygems-#{v}.tgz rubygems-#{v}"
132
+ sh "tar -czf rubygems-#{v}.tgz --owner=rubygems:0 --group=rubygems:0 rubygems-#{v}"
132
133
  end
133
134
  end
134
135
 
@@ -362,9 +363,10 @@ end
362
363
  desc "Update the manifest to reflect what's on disk"
363
364
  task :update_manifest do
364
365
  files = []
365
- require 'find'
366
- exclude = %r[/\/tmp\/|\/pkg\/|CVS|\.DS_Store|\/doc\/|\/coverage\/|\.svn|\.git|TAGS|extconf.h|\.bundle$|\.o$|\.log$/|\./bundler/(?!lib|man|exe|[^/]+\.md|bundler.gemspec)]ox
367
- Find.find(".") do |path|
366
+ exclude = %r[\.git|\./bundler/(?!lib|man|exe|[^/]+\.md|bundler.gemspec)]ox
367
+ tracked_files = `git ls-files --recurse-submodules`.split("\n").map {|f| "./#{f}" }
368
+
369
+ tracked_files.each do |path|
368
370
  next unless File.file?(path)
369
371
  next if path =~ exclude
370
372
  files << path[2..-1]
@@ -4,8 +4,8 @@ module Bundler
4
4
  # Represents metadata from when the Bundler gem was built.
5
5
  module BuildMetadata
6
6
  # begin ivars
7
- @built_at = "2019-06-14".freeze
8
- @git_commit_sha = "d7089abb6".freeze
7
+ @built_at = "2020-12-09".freeze
8
+ @git_commit_sha = "d7089abb6a".freeze
9
9
  @release = false
10
10
  # end ivars
11
11
 
@@ -9,7 +9,7 @@
9
9
  require 'rbconfig'
10
10
 
11
11
  module Gem
12
- VERSION = "3.0.4".freeze
12
+ VERSION = "3.0.9".freeze
13
13
  end
14
14
 
15
15
  # Must be first since it unloads the prelude from 1.9.2
@@ -568,8 +568,6 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
568
568
  #++
569
569
  #--
570
570
  #
571
- # FIXME move to pathsupport
572
- #
573
571
  #++
574
572
 
575
573
  def self.find_home
@@ -642,14 +640,12 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
642
640
  # <tt>https://rubygems.org</tt>.
643
641
 
644
642
  def self.host
645
- # TODO: move to utils
646
643
  @host ||= Gem::DEFAULT_HOST
647
644
  end
648
645
 
649
646
  ## Set the default RubyGems API host.
650
647
 
651
648
  def self.host=(host)
652
- # TODO: move to utils
653
649
  @host = host
654
650
  end
655
651
 
@@ -1377,14 +1373,12 @@ begin
1377
1373
  rescue LoadError
1378
1374
  end
1379
1375
 
1380
- if defined?(RUBY_ENGINE)
1381
- begin
1382
- ##
1383
- # Defaults the Ruby implementation wants to provide for RubyGems
1376
+ begin
1377
+ ##
1378
+ # Defaults the Ruby implementation wants to provide for RubyGems
1384
1379
 
1385
- require "rubygems/defaults/#{RUBY_ENGINE}"
1386
- rescue LoadError
1387
- end
1380
+ require "rubygems/defaults/#{RUBY_ENGINE}"
1381
+ rescue LoadError
1388
1382
  end
1389
1383
 
1390
1384
  ##
@@ -15,6 +15,8 @@ https://rubygems.org) and adds it to the index.
15
15
 
16
16
  The gem can be removed from the index and deleted from the server using the yank
17
17
  command. For further discussion see the help for the yank command.
18
+
19
+ The push command will use ~/.gem/credentials to authenticate to a server, but you can use the RubyGems environment variable GEM_HOST_API_KEY to set the api key to authenticate.
18
20
  EOF
19
21
  end
20
22
 
@@ -128,7 +128,7 @@ By default, this RubyGems will install gem as:
128
128
  end
129
129
 
130
130
  module MakeDirs
131
- def mkdir_p(path, *opts)
131
+ def mkdir_p(path, **opts)
132
132
  super
133
133
  (@mkdirs ||= []) << path
134
134
  end
@@ -164,7 +164,7 @@ By default, this RubyGems will install gem as:
164
164
 
165
165
  remove_old_lib_files lib_dir
166
166
 
167
- install_default_bundler_gem
167
+ install_default_bundler_gem bin_dir
168
168
 
169
169
  if mode = options[:dir_mode]
170
170
  @mkdirs.uniq!
@@ -240,14 +240,13 @@ By default, this RubyGems will install gem as:
240
240
  prog_mode = options[:prog_mode] || 0755
241
241
 
242
242
  executables = { 'gem' => 'bin' }
243
- executables['bundler'] = 'bundler/exe' if Gem::USE_BUNDLER_FOR_GEMDEPS
244
243
  executables.each do |tool, path|
245
244
  say "Installing #{tool} executable" if @verbose
246
245
 
247
246
  Dir.chdir path do
248
247
  bin_files = Dir['*']
249
248
 
250
- bin_files -= %w[update_rubygems bundler bundle_ruby]
249
+ bin_files -= %w[update_rubygems]
251
250
 
252
251
  bin_files.each do |bin_file|
253
252
  bin_file_formatted = if options[:format_executable]
@@ -382,7 +381,7 @@ By default, this RubyGems will install gem as:
382
381
  return false
383
382
  end
384
383
 
385
- def install_default_bundler_gem
384
+ def install_default_bundler_gem(bin_dir)
386
385
  return unless Gem::USE_BUNDLER_FOR_GEMDEPS
387
386
 
388
387
  specs_dir = Gem::Specification.default_specifications_dir
@@ -427,13 +426,12 @@ By default, this RubyGems will install gem as:
427
426
  cp File.join("bundler", bundler_spec.bindir, e), File.join(bundler_bin_dir, e)
428
427
  end
429
428
 
430
- if Gem.win_platform?
431
- require 'rubygems/installer'
429
+ require 'rubygems/installer'
432
430
 
433
- installer = Gem::Installer.for_spec bundler_spec
434
- bundler_spec.executables.each do |e|
435
- installer.generate_windows_script e, bundler_spec.bin_dir
436
- end
431
+ Dir.chdir("bundler") do
432
+ built_gem = Gem::Package.build(bundler_spec)
433
+ installer = Gem::Installer.at(built_gem, env_shebang: options[:env_shebang], install_as_default: true, bin_dir: bin_dir, wrappers: true)
434
+ installer.install
437
435
  end
438
436
 
439
437
  say "Bundler #{bundler_spec.version} installed"
@@ -148,10 +148,13 @@ that is a dependency of an existing gem. You can use the
148
148
 
149
149
  def uninstall_specific
150
150
  deplist = Gem::DependencyList.new
151
+ original_gem_version = {}
151
152
 
152
153
  get_all_gem_names_and_versions.each do |name, version|
153
- requirement = Array(version || options[:version])
154
- gem_specs = Gem::Specification.find_all_by_name(name, *requirement)
154
+ original_gem_version[name] = version || options[:version]
155
+
156
+ gem_specs = Gem::Specification.find_all_by_name(name, original_gem_version[name])
157
+
155
158
  say("Gem '#{name}' is not installed") if gem_specs.empty?
156
159
  gem_specs.each do |spec|
157
160
  deplist.add spec
@@ -160,16 +163,23 @@ that is a dependency of an existing gem. You can use the
160
163
 
161
164
  deps = deplist.strongly_connected_components.flatten.reverse
162
165
 
166
+ gems_to_uninstall = {}
167
+
163
168
  deps.each do |dep|
164
- options[:version] = dep.version
165
- uninstall_gem(dep.name)
169
+ unless gems_to_uninstall[dep.name]
170
+ gems_to_uninstall[dep.name] = true
171
+
172
+ unless original_gem_version[dep.name] == Gem::Requirement.default
173
+ options[:version] = dep.version
174
+ end
175
+
176
+ uninstall_gem(dep.name)
177
+ end
166
178
  end
167
179
  end
168
180
 
169
181
  def uninstall_gem(gem_name)
170
182
  uninstall(gem_name)
171
- rescue Gem::InstallError
172
- nil
173
183
  rescue Gem::GemNotInHomeException => e
174
184
  spec = e.spec
175
185
  alert("In order to remove #{spec.name}, please execute:\n" +
@@ -52,13 +52,11 @@ requiring to see why it does not behave as you expect.
52
52
  end
53
53
  end
54
54
 
55
- # TODO: this is totally redundant and stupid
56
55
  paths = find_paths arg, dirs
57
56
 
58
57
  if paths.empty?
59
58
  alert_error "Can't find Ruby library file or shared library #{arg}"
60
-
61
- found &&= false
59
+ found = false
62
60
  else
63
61
  say paths
64
62
  end
@@ -122,15 +122,8 @@ module Gem
122
122
  end
123
123
  end
124
124
 
125
- ##
126
- # A wrapper around RUBY_ENGINE const that may not be defined
127
-
128
125
  def self.ruby_engine
129
- if defined? RUBY_ENGINE
130
- RUBY_ENGINE
131
- else
132
- 'ruby'
133
- end
126
+ RUBY_ENGINE
134
127
  end
135
128
 
136
129
  ##
@@ -281,7 +281,7 @@ class Gem::Dependency
281
281
  requirement.satisfied_by?(spec.version) && env_req.satisfied_by?(spec.version)
282
282
  }.map(&:to_spec)
283
283
 
284
- Gem::BundlerVersionFinder.filter!(matches) if name == "bundler".freeze
284
+ Gem::BundlerVersionFinder.filter!(matches) if name == "bundler".freeze && !requirement.specific?
285
285
 
286
286
  if platform_only
287
287
  matches.reject! { |spec|
@@ -213,9 +213,8 @@ class Gem::DependencyInstaller
213
213
 
214
214
  if consider_remote?
215
215
  begin
216
- # TODO this is pulled from #spec_for_dependency to allow
216
+ # This is pulled from #spec_for_dependency to allow
217
217
  # us to filter tuples before fetching specs.
218
- #
219
218
  tuples, errors = Gem::SpecFetcher.fetcher.search_for_dependency dep
220
219
 
221
220
  if best_only && !tuples.empty?
@@ -1,8 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # TODO: the documentation in here is terrible.
3
- #
4
- # Each exception needs a brief description and the scenarios where it is
5
- # likely to be raised
6
2
 
7
3
  require 'rubygems/deprecate'
8
4
 
@@ -7,6 +7,8 @@ require 'rubygems/text'
7
7
 
8
8
  module Gem::GemcutterUtilities
9
9
 
10
+ ERROR_CODE = 1
11
+
10
12
  include Gem::Text
11
13
 
12
14
  # TODO: move to Gem::Command
@@ -41,7 +43,9 @@ module Gem::GemcutterUtilities
41
43
  # The API key from the command options or from the user's configuration.
42
44
 
43
45
  def api_key
44
- if options[:key]
46
+ if ENV["GEM_HOST_API_KEY"]
47
+ ENV["GEM_HOST_API_KEY"]
48
+ elsif options[:key]
45
49
  verify_api_key options[:key]
46
50
  elsif Gem.configuration.api_keys.key?(host)
47
51
  Gem.configuration.api_keys[host]
@@ -79,7 +83,7 @@ module Gem::GemcutterUtilities
79
83
  self.host = host if host
80
84
  unless self.host
81
85
  alert_error "You must specify a gem server"
82
- terminate_interaction 1 # TODO: question this
86
+ terminate_interaction(ERROR_CODE)
83
87
  end
84
88
 
85
89
  if allowed_push_host
@@ -88,7 +92,7 @@ module Gem::GemcutterUtilities
88
92
 
89
93
  unless (host_uri.scheme == allowed_host_uri.scheme) && (host_uri.host == allowed_host_uri.host)
90
94
  alert_error "#{self.host.inspect} is not allowed by the gemspec, which only allows #{allowed_push_host.inspect}"
91
- terminate_interaction 1
95
+ terminate_interaction(ERROR_CODE)
92
96
  end
93
97
  end
94
98
 
@@ -148,7 +152,7 @@ module Gem::GemcutterUtilities
148
152
  Gem.configuration.api_keys[key]
149
153
  else
150
154
  alert_error "No such API key. Please add it to your configuration (done automatically on initial `gem push`)."
151
- terminate_interaction 1 # TODO: question this
155
+ terminate_interaction(ERROR_CODE)
152
156
  end
153
157
  end
154
158
 
@@ -172,7 +176,7 @@ module Gem::GemcutterUtilities
172
176
  message = "#{error_prefix}: #{message}" if error_prefix
173
177
 
174
178
  say clean_text(message)
175
- terminate_interaction 1 # TODO: question this
179
+ terminate_interaction(ERROR_CODE)
176
180
  end
177
181
  end
178
182