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.6.0 $
    $Revision: 11708 $
    $Date: 2007-02-12 17:01:19 -0600 (Mon, 12 Feb 2007) $
    by Keiju ISHITSUKA(Nihon Rational Software Co.,Ltd)

version.rb - shell version definition file
    $Release Version: 0.6.0$
    $Revision: 11708 $
    $Date: 2007-02-12 17:01:19 -0600 (Mon, 12 Feb 2007) $
    by Keiju ISHITSUKA(Nihon Rational Software Co.,Ltd)

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 223
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 48
def cd(path)
  sh = new
  sh.cd path
  sh
end
            
debug=(val) click to toggle source
 
               # File shell.rb, line 43
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 215
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 66
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 74
def default_record_separator=(rs)
  @default_record_separator = rs
end
            
default_system_path() click to toggle source
 
               # File shell.rb, line 54
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 62
def default_system_path=(path)
  @default_system_path = path
end
            
install_system_commands(pre = "sys_") click to toggle source
 
               # File shell.rb, line 231
def Shell.install_system_commands(pre = "sys_")
  CommandProcessor.install_system_commands(pre)
end
            
new() click to toggle source
 
               # File shell.rb, line 79
def initialize
  @cwd = Dir.pwd
  @dir_stack = []
  @umask = nil

  @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 244
def self.notify(*opts, &block)
  Thread.exclusive do
  if opts[-1].kind_of?(String)
    yorn = verbose?
  else
    yorn = opts.pop
  end
  return unless yorn

  _head = true
  print opts.collect{|mes|
    mes = mes.dup
    yield mes if iterator?
    if _head
      _head = false
      "shell: " + mes
    else
      "       " + mes
    end
  }.join("\n")+"\n"
  end
end
            
unalias_command(ali) click to toggle source
 
               # File shell.rb, line 227
def Shell.unalias_command(ali)
  CommandProcessor.unalias_command(ali)
end
            
undef_system_command(command) click to toggle source
 
               # File shell.rb, line 219
def Shell.undef_system_command(command)
  CommandProcessor.undef_system_command(command)
end
            

Public Instance Methods

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

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

 
               # File shell.rb, line 144
def chdir(path = nil)
  if iterator?
    cwd_old = @cwd
    begin
      chdir(path)
      yield
    ensure
      chdir(cwd_old)
    end
  else
    path = "~" unless path
    @cwd = expand_path(path)
    notify "current dir: #{@cwd}"
    rehash
    self
  end
end
            
Also aliased as: cd
debug=(val) click to toggle source
 
               # File shell.rb, line 107
def debug=(val)
  @debug = val
  @verbose = val if val
end
            
expand_path(path) click to toggle source
 
               # File shell.rb, line 118
def expand_path(path)
  File.expand_path(path, @cwd)
end
            
inspect() click to toggle source
 
               # File shell.rb, line 236
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 204
def jobs
  @process_controller.jobs
end
            
kill(sig, command) click to toggle source
 
               # File shell.rb, line 208
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 189
def popdir
  if pop = @dir_stack.pop
    chdir pop
    notify "dir stack: [#{@dir_stack.join ', '}]"
    self
  else
    Shell.Fail DirStackEmpty
  end
end
            
Also aliased as: popd
pushd(path = nil) click to toggle source
Alias for: pushdir
pushdir(path = nil) click to toggle source
 
               # File shell.rb, line 163
def pushdir(path = nil)
  if iterator?
    pushdir(path)
    begin
      yield
    ensure
      popdir
    end
  elsif path
    @dir_stack.push @cwd
    chdir path
    notify "dir stack: [#{@dir_stack.join ', '}]"
    self
  else
    if pop = @dir_stack.pop
      @dir_stack.push @cwd
      chdir pop
      notify "dir stack: [#{@dir_stack.join ', '}]"
      self
    else
      Shell.Fail DirStackEmpty
    end
  end
end
            
Also aliased as: pushd
system_path=(path) click to toggle source
 
               # File shell.rb, line 96
def system_path=(path)
  @system_path = path
  rehash
end