aboutsummaryrefslogtreecommitdiffstats
path: root/tool/lib
diff options
context:
space:
mode:
authorJeremy Evans <code@jeremyevans.net>2020-03-03 12:53:09 -0800
committerJeremy Evans <code@jeremyevans.net>2020-05-28 07:57:29 -0700
commit07b2102a88a789100d0b048d527c780eae006c36 (patch)
treead92216f1ccaa8d7b729bc6ac4281c403a09e64f /tool/lib
parent9a3371be8f5274d1dca64b93c7b9a379e32ea2f5 (diff)
downloadruby-07b2102a88a789100d0b048d527c780eae006c36.tar.gz
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.
Diffstat (limited to 'tool/lib')
-rw-r--r--tool/lib/vcs.rb120
1 files changed, 27 insertions, 93 deletions
diff --git a/tool/lib/vcs.rb b/tool/lib/vcs.rb
index c4d894e107..2f9ba46e55 100644
--- a/tool/lib/vcs.rb
+++ b/tool/lib/vcs.rb
@@ -23,104 +23,38 @@ def IO.pread(*args)
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)