class GovukSeedCrawler::CLIParser
Constants
- DEFAULTS
- ENV_AMQP_PASS_KEY
Public Class Methods
new(argv_array)
click to toggle source
# File lib/govuk_seed_crawler/cli_parser.rb, line 28 def initialize(argv_array) @argv_array = argv_array end
Public Instance Methods
options()
click to toggle source
# File lib/govuk_seed_crawler/cli_parser.rb, line 32 def options opts = Slop::Options.new opts.banner = <<~HELP Usage: #{$PROGRAM_NAME} site_root [options] Seeds an AMQP topic exchange with messages, each containing a URL, for the GOV.UK Crawler Worker to consume: https://github.com/alphagov/govuk_crawler_worker The AMQP password can also be set as an environment variable and will be read from `#{ENV_AMQP_PASS_KEY}`. If both the environment variable and command-line option for password are set, the environment variable will take higher precedent. HELP opts.string "--host", "AMQP host to publish to", default: DEFAULTS[:host] opts.string "--port", "AMQP port", default: DEFAULTS[:port] opts.string "--username", "AMQP username", default: DEFAULTS[:username] opts.string "--password", "AMQP password", default: DEFAULTS[:password] opts.string "--exchange", "AMQP exchange", default: DEFAULTS[:exchange] opts.string "--topic", "AMQP topic", default: DEFAULTS[:topic] opts.string "--vhost", "AMQP vhost", default: DEFAULTS[:vhost] opts.bool "-q", "--quiet", "Quiet output", default: DEFAULTS[:quiet] opts.bool "-v", "--verbose", "Verbose output", default: DEFAULTS[:verbose] opts.on "--version", "Display version and exit" do puts "Version: #{GovukSeedCrawler::VERSION}" exit 0 end opts.on "-h", "--help" do puts opts exit end parser = Slop::Parser.new(opts) parser.parse(@argv_array) end
parse()
click to toggle source
# File lib/govuk_seed_crawler/cli_parser.rb, line 67 def parse opts = options # opts.arguments shows all arguments NOT processed by the parser, # which should just be the first arg (site root). # See https://github.com/leejarvis/slop#arguments raise CLIException.new("too many arguments provided", opts.to_s) if opts.arguments.count > 1 raise CLIException.new("site_root must be provided", opts.to_s) if opts.arguments.count.zero? options_hash = opts.to_hash options_hash[:password] = ENV[ENV_AMQP_PASS_KEY] unless ENV[ENV_AMQP_PASS_KEY].nil? [options_hash, @argv_array.first] end