6bdc62
From 75821c744f0bfda185eac35b91810254bf9e2367 Mon Sep 17 00:00:00 2001
6bdc62
From: Aaron Patterson <aaron.patterson@gmail.com>
6bdc62
Date: Wed, 5 Feb 2014 16:42:04 -0800
6bdc62
Subject: [PATCH] refactor checking `really_verbose`
6bdc62
6bdc62
This commit tries to reduce the number of places in RubyGems where we
6bdc62
test `really_verbose`.
6bdc62
---
6bdc62
 lib/rubygems/commands/cleanup_command.rb |  4 ++--
6bdc62
 lib/rubygems/dependency_installer.rb     |  6 +++---
6bdc62
 lib/rubygems/installer.rb                |  6 +++---
6bdc62
 lib/rubygems/package.rb                  |  2 +-
6bdc62
 lib/rubygems/package/old.rb              |  2 +-
6bdc62
 lib/rubygems/rdoc.rb                     |  2 +-
6bdc62
 lib/rubygems/remote_fetcher.rb           | 23 ++++++++---------------
6bdc62
 lib/rubygems/user_interaction.rb         |  8 ++++++++
6bdc62
 8 files changed, 27 insertions(+), 26 deletions(-)
6bdc62
6bdc62
diff --git a/lib/rubygems/commands/cleanup_command.rb b/lib/rubygems/commands/cleanup_command.rb
6bdc62
index c8f0082bfb..69975640fe 100644
6bdc62
--- a/lib/rubygems/commands/cleanup_command.rb
6bdc62
+++ b/lib/rubygems/commands/cleanup_command.rb
6bdc62
@@ -66,10 +66,10 @@ def execute
6bdc62
 
6bdc62
     say "Clean Up Complete"
6bdc62
 
6bdc62
-    if Gem.configuration.really_verbose then
6bdc62
+    verbose do
6bdc62
       skipped = @default_gems.map { |spec| spec.full_name }
6bdc62
 
6bdc62
-      say "Skipped default gems: #{skipped.join ', '}"
6bdc62
+      "Skipped default gems: #{skipped.join ', '}"
6bdc62
     end
6bdc62
   end
6bdc62
 
6bdc62
diff --git a/lib/rubygems/dependency_installer.rb b/lib/rubygems/dependency_installer.rb
6bdc62
index 5644b5ce73..4ea3847b70 100644
6bdc62
--- a/lib/rubygems/dependency_installer.rb
6bdc62
+++ b/lib/rubygems/dependency_installer.rb
6bdc62
@@ -165,9 +165,9 @@ def find_gems_with_sources dep, best_only=false # :nodoc:
6bdc62
         # FIX if there is a problem talking to the network, we either need to always tell
6bdc62
         # the user (no really_verbose) or fail hard, not silently tell them that we just
6bdc62
         # couldn't find their requested gem.
6bdc62
-        if Gem.configuration.really_verbose then
6bdc62
-          say "Error fetching remote data:\t\t#{e.message}"
6bdc62
-          say "Falling back to local-only install"
6bdc62
+        verbose do
6bdc62
+          "Error fetching remote data:\t\t#{e.message}\n" \
6bdc62
+            "Falling back to local-only install"
6bdc62
         end
6bdc62
         @domain = :local
6bdc62
       end
6bdc62
diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb
6bdc62
index cbae8234a1..548f1262a8 100644
6bdc62
--- a/lib/rubygems/installer.rb
6bdc62
+++ b/lib/rubygems/installer.rb
6bdc62
@@ -357,7 +357,7 @@ def generate_windows_script(filename, bindir)
6bdc62
         file.puts windows_stub_script(bindir, filename)
6bdc62
       end
6bdc62
 
6bdc62
-      say script_path if Gem.configuration.really_verbose
6bdc62
+      verbose script_path
6bdc62
     end
6bdc62
   end
6bdc62
 
6bdc62
@@ -408,7 +408,7 @@ def generate_bin_script(filename, bindir)
6bdc62
       file.print app_script_text(filename)
6bdc62
     end
6bdc62
 
6bdc62
-    say bin_script_path if Gem.configuration.really_verbose
6bdc62
+    verbose bin_script_path
6bdc62
 
6bdc62
     generate_windows_script filename, bindir
6bdc62
   end
6bdc62
@@ -694,7 +694,7 @@ def build_extension extension, dest_path # :nodoc:
6bdc62
             results = builder.build(extension, gem_dir, dest_path,
6bdc62
                                     results, @build_args)
6bdc62
 
6bdc62
-            say results.join("\n") if Gem.configuration.really_verbose
6bdc62
+            verbose { results.join("\n") }
6bdc62
           end
6bdc62
         end
6bdc62
       rescue
6bdc62
diff --git a/lib/rubygems/package.rb b/lib/rubygems/package.rb
6bdc62
index ae20f22b94..417b34b79f 100644
6bdc62
--- a/lib/rubygems/package.rb
6bdc62
+++ b/lib/rubygems/package.rb
6bdc62
@@ -338,7 +338,7 @@ def extract_tar_gz io, destination_dir, pattern = "*" # :nodoc:
6bdc62
           out.write entry.read
6bdc62
         end
6bdc62
 
6bdc62
-        say destination if Gem.configuration.really_verbose
6bdc62
+        verbose destination
6bdc62
       end
6bdc62
     end
6bdc62
   end
6bdc62
diff --git a/lib/rubygems/package/old.rb b/lib/rubygems/package/old.rb
6bdc62
index 30c30c0201..c47210d2a0 100644
6bdc62
--- a/lib/rubygems/package/old.rb
6bdc62
+++ b/lib/rubygems/package/old.rb
6bdc62
@@ -83,7 +83,7 @@ def extract_files destination_dir
6bdc62
           out.write file_data
6bdc62
         end
6bdc62
 
6bdc62
-        say destination if Gem.configuration.really_verbose
6bdc62
+        verbose destination
6bdc62
       end
6bdc62
     end
6bdc62
   rescue Zlib::DataError
6bdc62
diff --git a/lib/rubygems/rdoc.rb b/lib/rubygems/rdoc.rb
6bdc62
index 633bd893a5..394e502051 100644
6bdc62
--- a/lib/rubygems/rdoc.rb
6bdc62
+++ b/lib/rubygems/rdoc.rb
6bdc62
@@ -263,7 +263,7 @@ def legacy_rdoc *args
6bdc62
       Gem::Requirement.new('>= 2.4.0') =~ self.class.rdoc_version
6bdc62
 
6bdc62
     r = new_rdoc
6bdc62
-    say "rdoc #{args.join ' '}" if Gem.configuration.really_verbose
6bdc62
+    verbose { "rdoc #{args.join ' '}" }
6bdc62
 
6bdc62
     Dir.chdir @spec.full_gem_path do
6bdc62
       begin
6bdc62
diff --git a/lib/rubygems/remote_fetcher.rb b/lib/rubygems/remote_fetcher.rb
6bdc62
index 2490c69556..9df48bf6f3 100644
6bdc62
--- a/lib/rubygems/remote_fetcher.rb
6bdc62
+++ b/lib/rubygems/remote_fetcher.rb
6bdc62
@@ -168,8 +168,7 @@ def download(spec, source_uri, install_dir = Gem.dir)
6bdc62
     when 'http', 'https' then
6bdc62
       unless File.exist? local_gem_path then
6bdc62
         begin
6bdc62
-          say "Downloading gem #{gem_file_name}" if
6bdc62
-            Gem.configuration.really_verbose
6bdc62
+          verbose "Downloading gem #{gem_file_name}"
6bdc62
 
6bdc62
           remote_gem_path = source_uri + "gems/#{gem_file_name}"
6bdc62
 
6bdc62
@@ -179,8 +178,7 @@ def download(spec, source_uri, install_dir = Gem.dir)
6bdc62
 
6bdc62
           alternate_name = "#{spec.original_name}.gem"
6bdc62
 
6bdc62
-          say "Failed, downloading gem #{alternate_name}" if
6bdc62
-            Gem.configuration.really_verbose
6bdc62
+          verbose "Failed, downloading gem #{alternate_name}"
6bdc62
 
6bdc62
           remote_gem_path = source_uri + "gems/#{alternate_name}"
6bdc62
 
6bdc62
@@ -199,8 +197,7 @@ def download(spec, source_uri, install_dir = Gem.dir)
6bdc62
         local_gem_path = source_uri.to_s
6bdc62
       end
6bdc62
 
6bdc62
-      say "Using local gem #{local_gem_path}" if
6bdc62
-        Gem.configuration.really_verbose
6bdc62
+      verbose "Using local gem #{local_gem_path}"
6bdc62
     when nil then # TODO test for local overriding cache
6bdc62
       source_path = if Gem.win_platform? && source_uri.scheme &&
6bdc62
                        !source_uri.path.include?(':') then
6bdc62
@@ -218,8 +215,7 @@ def download(spec, source_uri, install_dir = Gem.dir)
6bdc62
         local_gem_path = source_uri.to_s
6bdc62
       end
6bdc62
 
6bdc62
-      say "Using local gem #{local_gem_path}" if
6bdc62
-        Gem.configuration.really_verbose
6bdc62
+      verbose "Using local gem #{local_gem_path}"
6bdc62
     else
6bdc62
       raise ArgumentError, "unsupported URI scheme #{source_uri.scheme}"
6bdc62
     end
6bdc62
@@ -506,8 +502,7 @@ def fetch
6bdc62
     begin
6bdc62
       @requests[connection.object_id] += 1
6bdc62
 
6bdc62
-      say "#{request.method} #{uri}" if
6bdc62
-        Gem.configuration.really_verbose
6bdc62
+      verbose "#{request.method} #{uri}"
6bdc62
 
6bdc62
       file_name = File.basename(uri.path)
6bdc62
       # perform download progress reporter only for gems
6bdc62
@@ -536,11 +531,10 @@ def fetch
6bdc62
         response = connection.request request
6bdc62
       end
6bdc62
 
6bdc62
-      say "#{response.code} #{response.message}" if
6bdc62
-        Gem.configuration.really_verbose
6bdc62
+      verbose "#{response.code} #{response.message}"
6bdc62
 
6bdc62
     rescue Net::HTTPBadResponse
6bdc62
-      say "bad response" if Gem.configuration.really_verbose
6bdc62
+      verbose "bad response"
6bdc62
 
6bdc62
       reset connection
6bdc62
 
6bdc62
@@ -555,8 +549,7 @@ def fetch
6bdc62
            Errno::ECONNABORTED, Errno::ECONNRESET, Errno::EPIPE
6bdc62
 
6bdc62
       requests = @requests[connection.object_id]
6bdc62
-      say "connection reset after #{requests} requests, retrying" if
6bdc62
-        Gem.configuration.really_verbose
6bdc62
+      verbose "connection reset after #{requests} requests, retrying"
6bdc62
 
6bdc62
       raise FetchError.new('too many connection resets', uri) if retried
6bdc62
 
6bdc62
diff --git a/lib/rubygems/user_interaction.rb b/lib/rubygems/user_interaction.rb
6bdc62
index f5e460f994..42ab6e2c24 100644
6bdc62
--- a/lib/rubygems/user_interaction.rb
6bdc62
+++ b/lib/rubygems/user_interaction.rb
6bdc62
@@ -119,6 +119,14 @@ def say statement = ''
6bdc62
   def terminate_interaction(*args)
6bdc62
     ui.terminate_interaction(*args)
6bdc62
   end
6bdc62
+
6bdc62
+  ##
6bdc62
+  # Calls +say+ with +msg+ or the results of the block if really_verbose
6bdc62
+  # is true.
6bdc62
+
6bdc62
+  def verbose msg = nil
6bdc62
+    say(msg || yield) if Gem.configuration.really_verbose
6bdc62
+  end
6bdc62
 end
6bdc62
 
6bdc62
 ##