0ab684
From 60eb961c25f801ee43ca1be9393ab2f0a0546677 Mon Sep 17 00:00:00 2001
0ab684
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
0ab684
Date: Tue, 19 Dec 2017 14:00:20 +0100
0ab684
Subject: [PATCH] Add Gem.operating_system_defaults to allow packagers to
0ab684
 override defaults.
0ab684
0ab684
This change allows Ruby packagers to override defaults and lazily query
0ab684
them.
0ab684
0ab684
This is very much the same change as #1644 to treat the
0ab684
operating_system defaults the same way as platform defaults.
0ab684
---
0ab684
 lib/rubygems/config_file.rb |  2 +-
0ab684
 lib/rubygems/defaults.rb    | 21 ++++++++++++++++++++-
0ab684
 test/rubygems/test_gem.rb   |  7 +++++++
0ab684
 3 files changed, 28 insertions(+), 2 deletions(-)
0ab684
0ab684
diff --git a/lib/rubygems/config_file.rb b/lib/rubygems/config_file.rb
0ab684
index a4efed0f5a..deee38e6d9 100644
0ab684
--- a/lib/rubygems/config_file.rb
0ab684
+++ b/lib/rubygems/config_file.rb
0ab684
@@ -48,7 +48,7 @@ class Gem::ConfigFile
0ab684
   # For Ruby packagers to set configuration defaults.  Set in
0ab684
   # rubygems/defaults/operating_system.rb
0ab684
 
0ab684
-  OPERATING_SYSTEM_DEFAULTS = {}
0ab684
+  OPERATING_SYSTEM_DEFAULTS = Gem.operating_system_defaults
0ab684
 
0ab684
   ##
0ab684
   # For Ruby implementers to set configuration defaults.  Set in
0ab684
diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb
0ab684
index 43d57fc808..b8222877ae 100644
0ab684
--- a/lib/rubygems/defaults.rb
0ab684
+++ b/lib/rubygems/defaults.rb
0ab684
@@ -177,7 +177,26 @@ def self.vendor_dir # :nodoc:
0ab684
   end
0ab684
 
0ab684
   ##
0ab684
-  # Default options for gem commands.
0ab684
+  # Default options for gem commands for Ruby packagers.
0ab684
+  #
0ab684
+  # The options here should be structured as an array of string "gem"
0ab684
+  # command names as keys and a string of the default options as values.
0ab684
+  #
0ab684
+  # Example:
0ab684
+  #
0ab684
+  # def self.operating_system_defaults
0ab684
+  #   {
0ab684
+  #       'install' => '--no-rdoc --no-ri --env-shebang',
0ab684
+  #       'update' => '--no-rdoc --no-ri --env-shebang'
0ab684
+  #   }
0ab684
+  # end
0ab684
+
0ab684
+  def self.operating_system_defaults
0ab684
+    {}
0ab684
+  end
0ab684
+
0ab684
+  ##
0ab684
+  # Default options for gem commands for Ruby implementers.
0ab684
   #
0ab684
   # The options here should be structured as an array of string "gem"
0ab684
   # command names as keys and a string of the default options as values.
0ab684
diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb
0ab684
index 3225a05c6b..62b80c4945 100644
0ab684
--- a/test/rubygems/test_gem.rb
0ab684
+++ b/test/rubygems/test_gem.rb
0ab684
@@ -1802,6 +1802,13 @@ def test_use_gemdeps_specific
0ab684
     ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
0ab684
   end
0ab684
 
0ab684
+  def test_operating_system_defaults
0ab684
+    operating_system_defaults = Gem.operating_system_defaults
0ab684
+
0ab684
+    assert operating_system_defaults != nil
0ab684
+    assert operating_system_defaults.is_a? Hash
0ab684
+  end
0ab684
+
0ab684
   def test_platform_defaults
0ab684
     platform_defaults = Gem.platform_defaults
0ab684