In Files

  • shell.rb
  • shell/builtin-command.rb
  • shell/command-processor.rb
  • shell/error.rb
  • shell/filter.rb
  • shell/process-controller.rb
  • shell/system-command.rb
  • shell/version.rb

Shell

shell/filter.rb -
    $Release Version: 0.7 $
    $Revision: 25189 $
    by Keiju ISHITSUKA(keiju@ruby-lang.org)

version.rb - shell version definition file
    $Release Version: 0.7$
    $Revision: 25189 $
    by Keiju ISHITSUKA(keiju@ruby-lang.org)

Attributes

cascade[RW]
debug[RW]
debug?[RW]
verbose[RW]
verbose?[RW]
command_processor[R]
cwd[R]

Dir related methods

#cwd/dir/getwd/pwd #chdir/cd #pushdir/pushd #popdir/popd Shell#mkdir Shell#rmdir

debug[RW]
debug?[RW]
dir[R]

Dir related methods

#cwd/dir/getwd/pwd #chdir/cd #pushdir/pushd #popdir/popd Shell#mkdir Shell#rmdir

dir_stack[R]
dirs[R]
getwd[R]

Dir related methods

#cwd/dir/getwd/pwd #chdir/cd #pushdir/pushd #popdir/popd Shell#mkdir Shell#rmdir

process_controller[R]
pwd[R]

Dir related methods

#cwd/dir/getwd/pwd #chdir/cd #pushdir/pushd #popdir/popd Shell#mkdir Shell#rmdir

record_separator[RW]
system_path[R]
umask[RW]
verbose[RW]
verbose?[RW]

Public Class Methods

alias_command(ali, command, *opts, &block) click to toggle source
 
               # File shell.rb, line 244
def Shell.alias_command(ali, command, *opts, &block)
  CommandProcessor.alias_command(ali, command, *opts, &block)
end
            
cd(path) click to toggle source
 
               # File shell.rb, line 54
def cd(path)
  new(path)
end
            
debug=(val) click to toggle source
 
               # File shell.rb, line 49
def debug=(val)
  @debug = val
  @verbose = val if val
end
            
def_system_command(command, path = command) click to toggle source

command definitions

 
               # File shell.rb, line 236
def Shell.def_system_command(command, path = command)
  CommandProcessor.def_system_command(command, path)
end
            
default_record_separator() click to toggle source
 
               # File shell.rb, line 70
def default_record_separator
  if @default_record_separator
    @default_record_separator
  else
    $/
  end
end
            
default_record_separator=(rs) click to toggle source
 
               # File shell.rb, line 78
def default_record_separator=(rs)
  @default_record_separator = rs
end
            
default_system_path() click to toggle source
 
               # File shell.rb, line 58
def default_system_path
  if @default_system_path
    @default_system_path
  else
    ENV["PATH"].split(":")
  end
end
            
default_system_path=(path) click to toggle source
 
               # File shell.rb, line 66
def default_system_path=(path)
  @default_system_path = path
end
            
install_system_commands(pre = "sys_") click to toggle source
 
               # File shell.rb, line 252
def Shell.install_system_commands(pre = "sys_")
  CommandProcessor.install_system_commands(pre)
end
            
new(pwd = Dir.pwd, umask = nil) click to toggle source
 
               # File shell.rb, line 90
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
            
notify(*opts, &block) click to toggle source
 
               # File shell.rb, line 265
  def self.notify(*opts, &block)
    Shell::debug_output_synchronize do
      if opts[-1].kind_of?(String)
        yorn = verbose?
      else
        yorn = opts.pop
      end
      return unless yorn

      if @debug_display_thread_id
        if @debug_display_process_id
          prefix = "shell(##{Process.pid}:#{Thread.current.to_s.sub("Thread", "Th")}): "
        else
          prefix = "shell(#{Thread.current.to_s.sub("Thread", "Th")}): "
        end
      else
        prefix = "shell: "
      end
      _head = true
      STDERR.print opts.collect{|mes|
        mes = mes.dup
        yield mes if iterator?
        if _head
          _head = false
#         "shell" " + mes
          prefix + mes
        else
          " "* prefix.size + mes
        end
      }.join("\n")+"\n"
    end
  end
            
unalias_command(ali) click to toggle source
 
               # File shell.rb, line 248
def Shell.unalias_command(ali)
  CommandProcessor.unalias_command(ali)
end
            
undef_system_command(command) click to toggle source
 
               # File shell.rb, line 240
def Shell.undef_system_command(command)
  CommandProcessor.undef_system_command(command)
end
            

Public Instance Methods

cd(path = nil, verbose = @verbose) click to toggle source
Alias for: chdir
chdir(path = nil, verbose = @verbose) click to toggle source

If called as iterator, it restores the current directory when the block ends.

 
               # File shell.rb, line 152
def chdir(path = nil, verbose = @verbose)
  check_point

  if iterator?
    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
            
Also aliased as: cd
debug=(val) click to toggle source
 
               # File shell.rb, line 115
def debug=(val)
  @debug = val
  @verbose = val if val
end
            
expand_path(path) click to toggle source
 
               # File shell.rb, line 126
def expand_path(path)
  File.expand_path(path, @cwd)
end
            
inspect() click to toggle source
 
               # File shell.rb, line 257
def inspect
  if debug.kind_of?(Integer) && debug > 2
    super
  else
    to_s
  end
end
            
jobs() click to toggle source

process management

 
               # File shell.rb, line 225
def jobs
  @process_controller.jobs
end
            
kill(sig, command) click to toggle source
 
               # File shell.rb, line 229
def kill(sig, command)
  @process_controller.kill_job(sig, command)
end
            
popd() click to toggle source
Alias for: popdir
popdir() click to toggle source
 
               # File shell.rb, line 207
def popdir
  check_point

  notify("popdir")
  if pop = @dir_stack.pop
    chdir pop
    notify "dir stack: [#{@dir_stack.join ', '}]"
    self
  else
    Shell.Fail DirStackEmpty
  end
  Void.new(self)
end
            
Also aliased as: popd
pushd(path = nil, verbose = @verbose) click to toggle source
Alias for: pushdir
pushdir(path = nil, verbose = @verbose) click to toggle source
 
               # File shell.rb, line 175
def pushdir(path = nil, verbose = @verbose)
  check_point

  if iterator?
    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 ', '}]"
    self
  else
    notify("pushdir") if verbose
    if pop = @dir_stack.pop
      @dir_stack.push @cwd
      chdir pop
      notify "dir stack: [#{@dir_stack.join ', '}]"
      self
    else
      Shell.Fail DirStackEmpty
    end
  end
  Void.new(self)
end
            
Also aliased as: pushd
system_path=(path) click to toggle source
 
               # File shell.rb, line 107
def system_path=(path)
  @system_path = path
  rehash
end