[前][次][番号順一覧][スレッド一覧]

ruby-changes:61410

From: Jeremy <ko1@a...>
Date: Thu, 28 May 2020 23:57:55 +0900 (JST)
Subject: [ruby-changes:61410] 07b2102a88 (master): Remove Ruby <2.2 support from tool/lib/vcs.rb

https://git.ruby-lang.org/ruby.git/commit/?id=07b2102a88

From 07b2102a88a789100d0b048d527c780eae006c36 Mon Sep 17 00:00:00 2001
From: Jeremy Evans <code@j...>
Date: Tue, 3 Mar 2020 12:53:09 -0800
Subject: Remove Ruby <2.2 support from tool/lib/vcs.rb

BASERUBY now requires at least Ruby 2.2, so there is no point
trying to support older ruby versions here.

diff --git a/tool/lib/vcs.rb b/tool/lib/vcs.rb
index c4d894e..2f9ba46 100644
--- a/tool/lib/vcs.rb
+++ b/tool/lib/vcs.rb
@@ -23,104 +23,38 @@ def IO.pread(*args) https://github.com/ruby/ruby/blob/trunk/tool/lib/vcs.rb#L23
   popen(*args) {|f|f.read}
 end
 
-if RUBY_VERSION < "2.0"
-  class IO
-    @orig_popen = method(:popen)
-
-    if defined?(fork)
-      def self.popen(command, *rest, &block)
-        if command.kind_of?(Hash)
-          env = command
-          command = rest.shift
-        end
-        opts = rest.last
-        if opts.kind_of?(Hash)
-          dir = opts.delete(:chdir)
-          rest.pop if opts.empty?
-          opts.delete(:external_encoding)
-        end
-
-        if block
-          @orig_popen.call("-", *rest) do |f|
-            if f
-              yield(f)
-            else
-              Dir.chdir(dir) if dir
-              ENV.replace(env) if env
-              exec(*command)
-            end
-          end
-        else
-          f = @orig_popen.call("-", *rest)
-          unless f
-            Dir.chdir(dir) if dir
-            ENV.replace(env) if env
-            exec(*command)
-          end
-          f
-        end
-      end
-    else
-      require 'shellwords'
-      def self.popen(command, *rest, &block)
-        if command.kind_of?(Hash)
-          env = command
-          oldenv = ENV.to_hash
-          command = rest.shift
-        end
-        opts = rest.last
-        if opts.kind_of?(Hash)
-          dir = opts.delete(:chdir)
-          rest.pop if opts.empty?
-          opts.delete(:external_encoding)
-        end
-
-        command = command.shelljoin if Array === command
-        Dir.chdir(dir || ".") do
-          ENV.replace(env) if env
-          @orig_popen.call(command, *rest, &block)
-          ENV.replace(oldenv) if oldenv
-        end
-      end
-    end
-  end
-else
-  module DebugPOpen
-    verbose, $VERBOSE = $VERBOSE, nil if RUBY_VERSION < "2.1"
-    refine IO.singleton_class do
-      def popen(*args)
-        VCS::DEBUG_OUT.puts args.inspect if $DEBUG
-        super
-      end
-    end
-  ensure
-    $VERBOSE = verbose unless verbose.nil?
-  end
-  using DebugPOpen
-  module DebugSystem
-    def system(*args)
+module DebugPOpen
+  refine IO.singleton_class do
+    def popen(*args)
       VCS::DEBUG_OUT.puts args.inspect if $DEBUG
-      exception = false
-      opts = Hash.try_convert(args[-1])
-      if RUBY_VERSION >= "2.6"
-        unless opts
-          opts = {}
-          args << opts
-        end
-        exception = opts.fetch(:exception) {opts[:exception] = true}
-      elsif opts
-        exception = opts.delete(:exception) {true}
-        args.pop if opts.empty?
-      end
-      ret = super(*args)
-      raise "Command failed with status (#$?): #{args[0]}" if exception and !ret
-      ret
+      super
     end
   end
-  module Kernel
-    prepend(DebugSystem)
+end
+using DebugPOpen
+module DebugSystem
+  def system(*args)
+    VCS::DEBUG_OUT.puts args.inspect if $DEBUG
+    exception = false
+    opts = Hash.try_convert(args[-1])
+    if RUBY_VERSION >= "2.6"
+      unless opts
+        opts = {}
+        args << opts
+      end
+      exception = opts.fetch(:exception) {opts[:exception] = true}
+    elsif opts
+      exception = opts.delete(:exception) {true}
+      args.pop if opts.empty?
+    end
+    ret = super(*args)
+    raise "Command failed with status (#$?): #{args[0]}" if exception and !ret
+    ret
   end
 end
+module Kernel
+  prepend(DebugSystem)
+end
 
 class VCS
   prepend(DebugSystem) if defined?(DebugSystem)
-- 
cgit v0.10.2


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]