Sha256: c441aa17211539801c3a1b6640d8f53aa4d4a2c317e83d3b90962d75e5199008

Contents?: true

Size: 1.1 KB

Versions: 1

Compression:

Stored size: 1.1 KB

Contents

class ShellCommand

  def go
    i = 0; args = ARGV.dup
    while i < ARGV.size
      if md = %r{^[-]}.match( ARGV[i] )
        opt = ARGV[i].gsub('-','_')
        if self.respond_to?( opt )
          m = method( opt )
          c = m.arity
          if c > 0
            m.call(*args[i+1..i+c])
            args[i..i+c] = nil
            i += c
          else
            m.call
            args.delete_at(i)
          end
        else
          $stderr << "unknown option #{ARGV[i]}\n"
          exit -1
        end
      end
      i += 1
    end

    # non-secondary command type
    if self.respond_to?(:main)
      main(*args)
      exit 0
    end

    # secondary command type
    if args.first
      if self.respond_to?( args.first )
        __send__( *args )
      else
        #begin
          method_missing( *args )
        #rescue NoMethodError
        #  $stderr << "unknown command #{args.join(' ')}\n"
        #  exit -1
        #end
      end
    elsif self.respond_to?( :default )
      default(*args)
    else
      $stderr << "nothing to do\n"
      exit -1
    end

  end #def go

end #class ShellCommand

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
facets-0.9.0 lib/mega/shellcommand.rb