Я хотел бы получить доступ к тексту literal параметров командной строки, переданных в сценарий Ruby, перед анализом.
Вот пример ( просто упрощенный пример, чтобы прояснить вопрос - это не «мой код» ), который прояснит это:
require 'optparse'
options = {}
OptionParser.new do |opts|
opts.banner = "Usage: example.rb [options]"
opts.on("-s", "--start", "Enter start date for the data you want from the API") do |start_date|
options[:start_date] = start_date
end
opts.on("-e", "--end", "Enter the end date for the data you want from the API") do |end_date|
options[:end_date] = end_date
end
opts.on("-w", "--window", "Enter a number of days back in time to look prior to today") do |window|
options[:start_date] = window.days.ago
options[:end_date] = Time.zone.today
end
opts.on("-a", "--all", "Get all historical data since the beginning of time (as recorded in the API's database)") do |all_time|
options[:start_date] = Date.parse("1900-01-01")
options[:end_date] = Time.zone.today
end
raise "You can't define an end date and not a start date" if command_line_options & %w[-e --end] && !(command_line_options & %w[-s --start])
raise "Please use only one type of temporal option." if (command_line_options & %w[-a --all -w --window -e --end]).count > 1
end.parse!
Строки raise
показывают, что я Пытаюсь совершить sh. Посмотрите на command_line_options
на этих строках. В примере сценария они не имеют значения. Как я могу установить их?
Обратите внимание, что независимо от того, использует ли пользователь --start
и --end
или --window
или --all
, устанавливаются option[:start_date]
и option[:end_date]
. Я предложил пользователю 3 различных способа установки даты начала и окончания, но я хочу убедиться, что они не совпадают и не совпадают. Но для того, чтобы выполнить эту проверку ввода и убедиться, что пользователь вводит разумные значения, я хочу иметь доступ к необработанным необработанным ключам командной строки. Как я могу это сделать?
Я понимаю, что есть и другие способы, которыми я могу достичь sh моей цели, но то, что я описываю, выглядит так, как будто должно быть легко возможным, и это кажется, самый чистый способ сделать вещи.