module ChefApply::CLI::Options

Constants

T
TS

Public Class Methods

included(klass) click to toggle source
# File lib/chef_apply/cli/options.rb, line 36
def self.included(klass)
  klass.banner T.description + "\n" + T.usage_full

  klass.option :version,
    short: "-v",
    long: "--version",
    description:  T.version.description,
    boolean: true

  klass.option :help,
    short: "-h",
    long: "--help",
    description:   T.help.description,
    boolean: true

  # Special note:
  # config_path is pre-processed in startup.rb, and is shown here only
  # for purpoess of rendering help text.
  klass.option :config_path,
    short: "-c PATH",
    long: "--config PATH",
    description: T.default_config_location(ChefApply::Config.default_location),
    default: ChefApply::Config.default_location,
    proc: Proc.new { |path| ChefApply::Config.custom_location(path) }

  klass.option :identity_file,
    long: "--identity-file PATH",
    short: "-i PATH",
    description: T.identity_file,
    proc: (Proc.new do |paths|
      path = paths
      unless File.readable?(path)
        raise OptionValidationError.new("CHEFVAL001", nil, path)
      end

      path
    end)

  klass.option :ssl,
    long: "--[no-]ssl",
    description:  T.ssl.desc(ChefApply::Config.connection.winrm.ssl),
    boolean: true,
    default: ChefApply::Config.connection.winrm.ssl,
    proc: Proc.new { |val| ChefApply::Config.connection.winrm.ssl(val) }

  klass.option :ssl_verify,
    long: "--[no-]ssl-verify",
    description:  T.ssl.verify_desc(ChefApply::Config.connection.winrm.ssl_verify),
    boolean: true,
    default: ChefApply::Config.connection.winrm.ssl_verify,
    proc: Proc.new { |val| ChefApply::Config.connection.winrm.ssl_verify(val) }

  klass.option :protocol,
    long: "--protocol <PROTOCOL>",
    short: "-p",
    description: T.protocol_description(ChefApply::Config::SUPPORTED_PROTOCOLS.join(" "),
      ChefApply::Config.connection.default_protocol),
    default: ChefApply::Config.connection.default_protocol,
    proc: Proc.new { |val| ChefApply::Config.connection.default_protocol(val) }

  klass.option :user,
    long: "--user <USER>",
    description: T.user_description

  klass.option :password,
    long: "--password <PASSWORD>",
    description: T.password_description

  klass.option :cookbook_repo_paths,
    long: "--cookbook-repo-paths PATH",
    description: T.cookbook_repo_paths,
    default: ChefApply::Config.chef.cookbook_repo_paths,
    proc: (Proc.new do |paths|
      paths = paths.split(",")
      ChefApply::Config.chef.cookbook_repo_paths(paths)
      paths
    end)

  klass.option :install,
    long: "--[no-]install",
    default: true,
    boolean: true,
    description:  T.install_description

  klass.option :sudo,
    long: "--[no-]sudo",
    description: T.sudo.flag_description.sudo,
    boolean: true,
    default: true

  klass.option :sudo_command,
    long: "--sudo-command <COMMAND>",
    default: "sudo",
    description: T.sudo.flag_description.command

  klass.option :sudo_password,
    long: "--sudo-password <PASSWORD>",
    description: T.sudo.flag_description.password

  klass.option :sudo_options,
    long: "--sudo-options 'OPTIONS...'",
    description: T.sudo.flag_description.options
end

Public Instance Methods

parsed_options() click to toggle source

I really don't like that mixlib-cli refers to the parsed command line flags in a hash accesed via the `config` method. Thats just such an overloaded word.

# File lib/chef_apply/cli/options.rb, line 142
def parsed_options
  config
end