ruby-changes:57831
From: Hiroshi <ko1@a...>
Date: Fri, 20 Sep 2019 12:58:42 +0900 (JST)
Subject: [ruby-changes:57831] 3b56a0934f (master): Removed Shell from the ruby repository.
https://git.ruby-lang.org/ruby.git/commit/?id=3b56a0934f From 3b56a0934fa503b518e8302ed32f9124740d896b Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA <hsbt@r...> Date: Fri, 20 Sep 2019 12:56:18 +0900 Subject: Removed Shell from the ruby repository. diff --git a/NEWS b/NEWS index 459d205..7099bf0 100644 --- a/NEWS +++ b/NEWS @@ -330,6 +330,7 @@ RubyGems:: https://github.com/ruby/ruby/blob/trunk/NEWS#L330 * Removed unmaintained libraries. * CMath * Scanf + * Shell === Stdlib compatibility issues (excluding feature bug fixes) diff --git a/doc/maintainers.rdoc b/doc/maintainers.rdoc index c2e3600..921f9ad 100644 --- a/doc/maintainers.rdoc +++ b/doc/maintainers.rdoc @@ -220,9 +220,6 @@ Zachary Scott (zzak) https://github.com/ruby/ruby/blob/trunk/doc/maintainers.rdoc#L220 [lib/rss.rb, lib/rss/*] Kouhei Sutou (kou) https://github.com/ruby/rss -[lib/shell.rb, lib/shell/*] - Keiju ISHITSUKA (keiju) - https://github.com/ruby/shell [lib/sync.rb] Keiju ISHITSUKA (keiju) https://github.com/ruby/sync diff --git a/doc/standard_library.rdoc b/doc/standard_library.rdoc index 3edfa8a..658ccb5 100644 --- a/doc/standard_library.rdoc +++ b/doc/standard_library.rdoc @@ -87,7 +87,6 @@ Racc:: A LALR(1) parser generator written in Ruby. https://github.com/ruby/ruby/blob/trunk/doc/standard_library.rdoc#L87 RDoc:: Produces HTML and command-line documentation for Ruby REXML:: An XML toolkit for Ruby RSS:: Family of libraries that support various formats of XML "feeds" -Shell:: An idiomatic Ruby interface for common UNIX shell commands Synchronizer:: A module that provides a two-phase lock with a counter ThreadsWait:: Watches for termination of multiple threads Tracer:: Outputs a source level execution trace of a Ruby program diff --git a/lib/shell.rb b/lib/shell.rb deleted file mode 100644 index 0958896..0000000 --- a/lib/shell.rb +++ /dev/null @@ -1,462 +0,0 @@ https://github.com/ruby/ruby/blob/trunk/doc/standard_library.rdoc#L0 -# frozen_string_literal: false -# -# shell.rb - -# $Release Version: 0.7 $ -# $Revision: 1.9 $ -# by Keiju ISHITSUKA(keiju@r...) -# -# -- -# -# -# - -require "e2mmap" - -require "forwardable" - -require "shell/error" -require "shell/command-processor" -require "shell/process-controller" -require "shell/version" - -# Shell implements an idiomatic Ruby interface for common UNIX shell commands. -# -# It provides users the ability to execute commands with filters and pipes, -# like +sh+/+csh+ by using native facilities of Ruby. -# -# == Examples -# -# === Temp file creation -# -# In this example we will create three +tmpFile+'s in three different folders -# under the +/tmp+ directory. -# -# sh = Shell.cd("/tmp") # Change to the /tmp directory -# sh.mkdir "shell-test-1" unless sh.exists?("shell-test-1") -# # make the 'shell-test-1' directory if it doesn't already exist -# sh.cd("shell-test-1") # Change to the /tmp/shell-test-1 directory -# for dir in ["dir1", "dir3", "dir5"] -# if !sh.exists?(dir) -# sh.mkdir dir # make dir if it doesn't already exist -# sh.cd(dir) do -# # change to the `dir` directory -# f = sh.open("tmpFile", "w") # open a new file in write mode -# f.print "TEST\n" # write to the file -# f.close # close the file handler -# end -# print sh.pwd # output the process working directory -# end -# end -# -# === Temp file creation with self -# -# This example is identical to the first, except we're using -# CommandProcessor#transact. -# -# CommandProcessor#transact executes the given block against self, in this case -# +sh+; our Shell object. Within the block we can substitute +sh.cd+ to +cd+, -# because the scope within the block uses +sh+ already. -# -# sh = Shell.cd("/tmp") -# sh.transact do -# mkdir "shell-test-1" unless exists?("shell-test-1") -# cd("shell-test-1") -# for dir in ["dir1", "dir3", "dir5"] -# if !exists?(dir) -# mkdir dir -# cd(dir) do -# f = open("tmpFile", "w") -# f.print "TEST\n" -# f.close -# end -# print pwd -# end -# end -# end -# -# === Pipe /etc/printcap into a file -# -# In this example we will read the operating system file +/etc/printcap+, -# generated by +cupsd+, and then output it to a new file relative to the +pwd+ -# of +sh+. -# -# sh = Shell.new -# sh.cat("/etc/printcap") | sh.tee("tee1") > "tee2" -# (sh.cat < "/etc/printcap") | sh.tee("tee11") > "tee12" -# sh.cat("/etc/printcap") | sh.tee("tee1") >> "tee2" -# (sh.cat < "/etc/printcap") | sh.tee("tee11") >> "tee12" -# -class Shell - - include Error - extend Exception2MessageMapper - - # debug: true -> normal debug - # debug: 1 -> eval definition debug - # debug: 2 -> detail inspect debug - @debug = false - @verbose = true - - @debug_display_process_id = false - @debug_display_thread_id = true - @debug_output_mutex = Thread::Mutex.new - @default_system_path = nil - @default_record_separator = nil - - class << Shell - extend Forwardable - - attr_accessor :cascade, :verbose - attr_reader :debug - - alias debug? debug - alias verbose? verbose - @verbose = true - - def debug=(val) - @debug = val - @verbose = val if val - end - - - # call-seq: - # Shell.cd(path) - # - # Creates a new Shell instance with the current working directory - # set to +path+. - def cd(path) - new(path) - end - - # Returns the directories in the current shell's PATH environment variable - # as an array of directory names. This sets the system_path for all - # instances of Shell. - # - # Example: If in your current shell, you did: - # - # $ echo $PATH - # /usr/bin:/bin:/usr/local/bin - # - # Running this method in the above shell would then return: - # - # ["/usr/bin", "/bin", "/usr/local/bin"] - # - def default_system_path - if @default_system_path - @default_system_path - else - ENV["PATH"].split(":") - end - end - - # Sets the system_path that new instances of Shell should have as their - # initial system_path. - # - # +path+ should be an array of directory name strings. - def default_system_path=(path) - @default_system_path = path - end - - def default_record_separator - if @default_record_separator - @default_record_separator - else - $/ - end - end - - def default_record_separator=(rs) - @default_record_separator = rs - end - - # os resource mutex - mutex_methods = ["unlock", "lock", "locked?", "synchronize", "try_lock"] - for m in mutex_methods - def_delegator("@debug_output_mutex", m, "debug_output_"+m.to_s) - end - - end - - # call-seq: - # Shell.new(pwd, umask) -> obj - # - # Creates a Shell object which current directory is set to the process - # current directory, unless otherwise specified by the +pwd+ argument. - def initialize(pwd = Dir.pwd, umask = nil) - @cwd = File.expand_path(pwd) - @dir_stack = [] - @umask = umask - - @system_path = Shell.default_system_path - @record_separator = Shell.default_record_separator - - @command_processor = CommandProcessor.new(self) - @process_controller = ProcessController.new(self) - - @verbose = Shell.verbose - @debug = Shell.debug - end - - # Returns the command search path in an array - attr_reader :system_path - - # Sets the system path (the Shell instance's PATH environment variable). - # - # +path+ should be an array of directory name strings. - def system_path=(path) - @system_path = path - rehash - end - - - # Returns the umask - attr_accessor :umask - attr_accessor :record_separator - attr_accessor :verbose - attr_reader :debug - - def debug=(val) - @debug = val - @verbose = val if val - end - - alias verbose? verbose - alias debug? debug - - attr_reader :command_processor - attr_reader :process_controller - - def expand_path(path) - File.expand_path(path, @cwd) - end - - # Most Shell commands are defined via CommandProcessor - - # - # Dir related methods - # - # Shell#cwd/dir/getwd/pwd - # Shell#chdir/cd - # Shell#pushdir/pushd - # Shell#popdir/popd - # Shell#mkdir - # Shell#rmdir - - # Returns the current working directory. - attr_reader :cwd - alias dir cwd - alias getwd cwd - alias pwd cwd - - attr_reader :dir_stack - alias dirs dir_stack - - # call-seq: - # Shell.chdir(path) - # - # Creates a Shell object which current directory is set to +path+. - # - # If a block is given, it restores the current directory when the block ends. - # - # If called as iterator, it restores the current directory when the - # block ends. - def chdir(path = nil, verbose = @verbose) - check_point - - if block_given? - notify("chdir(with block) #{path}") if verbose - cwd_old = @cwd - begin - chdir(path, nil) - yield - ensure - chdir(cwd_old, nil) - end - else - notify("chdir #{path}") if verbose - path = "~" unless path - @cwd = expand_path(path) - notify "current dir: #{@cwd}" - rehash - Void.new(self) - end - end - alias cd chdir - - # call-seq: - # pushdir(path) - # pushdir(path) { &block } - # - # Pushes the current directory to the directory stack, changing the current - # directory to +path+. - # - # If +path+ is omitted, it exchanges its current directory and the top of its - # directory stack. - # - # If a block is given, it restores the current directory when the block ends. - def pushdir(path = nil, verbose = @verbose) - check_point - - if block_given? - notify("pushdir(with block) #{path}") if verbose - pushdir(path, nil) - begin - yield - ensure - popdir - end - elsif path - notify("pushdir #{path}") if verbose - @dir_stack.push @cwd - chdir(path, nil) - notify "dir stack: [#{@dir_stack.join ' (... truncated) -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/