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/