CLI for setup.

Methods
help run run
Constants
TASKS = %w(all config show setup test install uninstall rdoc ri clean distclean)
TASK_DESCRIPTIONS = [ [ 'all', 'do config, setup, then install' ], [ 'config', 'saves your configurations' ], [ 'show', 'shows current configuration' ], [ 'setup', 'compiles ruby extentions and others' ], [ 'rdoc', 'generate rdoc documentation' ], [ 'ri', 'generate ri documentation' ], [ 'install', 'installs files' ], [ 'test', 'run all tests in test/' ], [ 'clean', "does `make clean' for each extention" ], [ 'distclean',"does `make distclean' for each extention" ]
Public Class methods
run()
# File lib/setup/command.rb, line 27
    def self.run
      new.run
    end
Public Instance methods
help()

Generate help text.

# File lib/setup/command.rb, line 133
    def help
      fmt = " " * 10 + "%-10s       %s"
      commands = TASK_DESCRIPTIONS.collect do |k,d|
        (fmt % ["#{k}", d])
      end.join("\n").strip

      fmt = " " * 13 + "%-20s       %s"
      configs = ConfigTable::DESCRIPTIONS.collect do |k,t,d|
        (fmt % ["--#{k}", d])
      end.join("\n").strip

      text = "USAGE: \#{File.basename($0)} [command] [options]\n\nCommands:\n\#{commands}\n\nOptions for CONFIG:\n\#{configs}\n\nOptions for INSTALL:\n--prefix                   Set the install prefix\n\nOptions in common:\n-q --quiet                    Silence output\n--verbose                  Provide verbose output\n-n --no-write                 Do not write to disk\n\n"

      text.gsub(/^ \ \ \ \ \ /, '')
    end
run()
# File lib/setup/command.rb, line 32
    def run
      installer = Setup::Installer.new

      task = ARGV.find{ |a| a !~ /^[-]/ }
      task = 'all' unless task

      unless TASKS.include?(task)
        $stderr.puts "Not a valid task -- #{task}"
        exit 1
      end

      opts = OptionParser.new

      opts.banner = "Usage: #{File.basename($0)} [task] [options]"

      if task == 'config' or task == 'all'
        opts.separator ""
        opts.separator "Config options:"   
        ConfigTable::DESCRIPTIONS.each do |name, type, desc|
          opts.on("--#{name} #{type.to_s.upcase}", desc) do |val|
            ENV[name.to_s] = val.to_s
          end
        end
      end

      if task == 'install'
        opts.separator ""
        opts.separator "Install options:"

        opts.on("--prefix PATH", "Installation prefix") do |val|
          installer.install_prefix = val
        end
      end

      if task == 'test'
        opts.separator ""
        opts.separator "Install options:"

        opts.on("--runner TYPE", "Test runner (auto|console|gtk|gtk2|tk)") do |val|
          installer.config.testrunner = val
        end
      end

      # common options
      opts.separator ""
      opts.separator "General options:"

      opts.on("-q", "--quiet", "Silence output") do |val|
        installer.quiet = val
      end

      opts.on("--verbose", "Provide verbose output") do |val|
        installer.verbose = val
      end

      opts.on("-n", "--no-write", "Do not write to disk") do |val|
        installer.no_harm = !val
      end

      opts.on("--dryrun", "Same as --no-write") do |val|
        installer.no_harm = val
      end

      # common options
      opts.separator ""
      opts.separator "Inform options:"

      # Tail options (eg. commands in option form)
      opts.on_tail("-h", "--help", "display this help information") do
        puts help
        exit
      end

      opts.on_tail("--version", "Show version") do
        puts File.basename($0) + ' v' + Setup::VERSION #Version.join('.')
        exit
      end

      opts.on_tail("--copyright", "Show copyright") do
        puts Setup::COPYRIGHT #opyright
        exit
      end

      begin
        opts.parse!(ARGV)
      rescue OptionParser::InvalidOption
        $stderr.puts $!.to_s.capitalize
        exit 1
      end

      begin
        installer.__send__("exec_#{task}")
      rescue SetupError
        raise if $DEBUG
        $stderr.puts $!.message
        $stderr.puts "Try 'ruby #{$0} --help' for detailed usage."
        exit 1
      end
    end