module R10K::CLI

Public Class Methods

command() click to toggle source
# File lib/r10k/cli.rb, line 8
def self.command
  @cmd ||= Cri::Command.define do
    name    'r10k'
    usage   'r10k <subcommand> [options]'
    summary 'Killer robot powered Puppet environment deployment'
    description <<-EOD
      r10k is a suite of commands to help deploy and manage puppet code for
      complex environments.
    EOD


    flag :h, :help, 'Show help for this command' do |value, cmd|
      # This is evil because we may not necessarily be called from the
      # command line and have a meaningful ARGV to scan. However the best
      # way of having a globally useful --help command is to define the
      # behavior in the block of the option to immediately handle it and exit
      # and we don't have access to the verbose option, so the simple method
      # is to simply scan ARGV.
      verbose = (ARGV.include?('-v') || ARGV.include?('--verbose'))
      puts cmd.help(:verbose => verbose)
      exit 0
    end

    flag :t, :trace, 'Display stack traces on application crash'

    loglevels = R10K::Logging::LOG_LEVELS.reverse.map(&:downcase).join(", ")
    optional :v, :verbose, "Set log verbosity. Valid values: #{loglevels}"

    flag nil, :color, 'Enable colored log messages'

    required :c, :config, 'Specify a global configuration file'

    run do |opts, args, cmd|
      puts cmd.help(:verbose => opts[:verbose])
      exit 0
    end
  end
end