class Cir::Cli::Main

Constants

COMMANDS

Global commands

Public Instance Methods

global_opts() click to toggle source

Global arguments

# File lib/cir/cli/main.rb, line 32
      def global_opts
        Trollop::Parser.new do
          version "CIR - Configs in repository #{Cir::VERSION}"
          banner <<-EOS
CIR - Configs in repository

Keep your configuration files safely versioned in external repository.

Usage:
  cir command [command args]

Command is one of #{COMMANDS.keys}.

EOS
          stop_on COMMANDS.keys
        end
      end
run(argv) click to toggle source

Process given arguments and execute them

# File lib/cir/cli/main.rb, line 52
def run(argv)
  begin
    # Parse global arguments
    global_opts.parse argv

    # Specific command (must exists)
    cmd_name = argv.shift
    raise Trollop::HelpNeeded, "" unless cmd_name

    # Given command that is current executed
    @cmd = COMMANDS[cmd_name].new

    # Finish parsing arguments
    @cmd.global_args = @global_opts
    @cmd.args = @cmd.opts.parse(argv)
    @cmd.files = argv

    # And finally run the command
    @cmd.process

  rescue Trollop::CommandlineError => e
    $stderr.puts "Error: #{e.message}."
    $stderr.puts "Try --help for help."
    exit(-1)
  rescue Trollop::HelpNeeded
    # Global arguments
    global_opts.educate

    # Help for each command
    COMMANDS.each do |name, cmd|
      puts "\nCommand :#{name}\n"
      cmd.opts.educate
    end

    exit
  rescue Trollop::VersionNeeded
    puts global_opts.version
    exit
   end
end