class TerraformLandscape::ArgumentsParser

Handles option parsing for the command line application.

Public Instance Methods

parse(args) click to toggle source

Parses command line options into an options hash.

@param args [Array<String>] arguments passed via the command line

@return [Hash] parsed options

# File lib/terraform_landscape/arguments_parser.rb, line 11
def parse(args)
  @options = {}
  @options[:command] = :pretty_print # Default command

  OptionParser.new do |parser|
    parser.banner = 'Usage: landscape [options] [plan-output-file]'

    add_info_options parser
  end.parse!(args)

  # Any remaining arguments are assumed to be the output file
  @options[:plan_output_file] = args.first

  @options
rescue OptionParser::InvalidOption => ex
  raise InvalidCliOptionError,
        "#{ex.message}\nRun `landscape --help` to " \
        'see a list of available options.'
end

Private Instance Methods

add_info_options(parser) click to toggle source

Register informational flags.

# File lib/terraform_landscape/arguments_parser.rb, line 34
def add_info_options(parser)
  parser.on('--[no-]color', 'Force output to be colorized') do |color|
    @options[:color] = color
  end

  parser.on('-d', '--debug', 'Enable debug mode for more verbose output') do
    @options[:debug] = true
  end

  parser.on_tail('-h', '--help', 'Display help documentation') do
    @options[:command] = :display_help
    @options[:help_message] = parser.help
  end

  parser.on_tail('-v', '--version', 'Display version') do
    @options[:command] = :display_version
  end

  parser.on_tail('-V', '--verbose-version', 'Display verbose version information') do
    @options[:command] = :display_version
    @options[:verbose_version] = true
  end
end