class Puppetserver::Ca::Cli

Constants

ACTION_LIST
ACTION_OPTIONS
INIT_ACTIONS
MAINT_ACTIONS
VALID_ACTIONS

Public Class Methods

parse_general_inputs(inputs) click to toggle source
# File lib/puppetserver/ca/cli.rb, line 109
def self.parse_general_inputs(inputs)
  parsed = {}
  general_parser = OptionParser.new do |opts|
    opts.banner = BANNER
    opts.separator ACTION_LIST
    opts.separator "\nGeneral Options:"

    opts.on('--help', 'Display this general help output') do |help|
      parsed['help'] = true
    end
    opts.on('--version', 'Display the version') do |v|
      parsed['version'] = true
    end

    opts.separator ACTION_OPTIONS
    opts.separator "\nSee `puppetserver ca <action> --help` for detailed info"

  end

  all,_,_,_ = Utils::CliParsing.parse_without_raising(general_parser, inputs)

  return general_parser, parsed, all
end
run(cli_args = ARGV, out = STDOUT, err = STDERR) click to toggle source
# File lib/puppetserver/ca/cli.rb, line 64
def self.run(cli_args = ARGV, out = STDOUT, err = STDERR)
  logger = Puppetserver::Ca::Logger.new(:info, out, err)
  parser, general_options, unparsed = parse_general_inputs(cli_args)

  if general_options['version']
    logger.inform Puppetserver::Ca::VERSION
    return 0
  end

  action_argument = unparsed.shift
  action_class = VALID_ACTIONS[action_argument]

  if general_options['help']
    if action_class
      logger.inform action_class.parser.help
    else
      logger.inform parser.help
    end

    return 0
  end

  if action_class
    action = action_class.new(logger)
    input, exit_code = action.parse(unparsed)

    if exit_code
      return exit_code
    else
      begin
        return action.run(input)
      rescue Puppetserver::Ca::Error => e
        logger.err "Fatal error when running action '#{action_argument}'"
        logger.err "  Error: " + e.message

        return 1
      end
    end
  else
    logger.warn "Unknown action: #{action_argument}"
    logger.warn parser.help
    return 1
  end
end