Class: GovukSeedCrawler::CLIParser
- Inherits:
-
Object
- Object
- GovukSeedCrawler::CLIParser
- Defined in:
- lib/govuk_seed_crawler/cli_parser.rb
Constant Summary collapse
- DEFAULTS =
{ exchange: "govuk_crawler_exchange", host: "localhost", password: "guest", port: "5672", quiet: false, topic: "#", username: "guest", verbose: false, vhost: "/", }.freeze
- ENV_AMQP_PASS_KEY =
"GOVUK_CRAWLER_AMQP_PASS".freeze
Instance Method Summary collapse
-
#initialize(argv_array) ⇒ CLIParser
constructor
A new instance of CLIParser.
- #options ⇒ Object
- #parse ⇒ Object
Constructor Details
#initialize(argv_array) ⇒ CLIParser
Returns a new instance of CLIParser.
28 29 30 |
# File 'lib/govuk_seed_crawler/cli_parser.rb', line 28 def initialize(argv_array) @argv_array = argv_array end |
Instance Method Details
#options ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/govuk_seed_crawler/cli_parser.rb', line 32 def opts = Slop::Options.new opts. = <<~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 ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/govuk_seed_crawler/cli_parser.rb', line 67 def parse opts = # 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? = opts.to_hash [:password] = ENV[ENV_AMQP_PASS_KEY] unless ENV[ENV_AMQP_PASS_KEY].nil? [, @argv_array.first] end |