class RockBooks::Main
Public Instance Methods
call()
click to toggle source
# File lib/rock_books/cmd_line/main.rb, line 84 def call begin ARGV << '-h' if ARGV.empty? run_options = parse_command_line CommandLineInterface.new(run_options).call rescue => error $stderr.puts \ <<~HEREDOC #{error.backtrace.join("\n")} #{'-' * 79} #{error} #{'-' * 79} HEREDOC exit(-1) binding.pry raise error end end
options_with_defaults()
click to toggle source
# File lib/rock_books/cmd_line/main.rb, line 15 def options_with_defaults options = OpenStruct.new options.input_dir = DEFAULT_INPUT_DIR options.output_dir = DEFAULT_OUTPUT_DIR options.receipt_dir = DEFAULT_RECEIPT_DIR options.do_receipts = true options end
parse_command_line()
click to toggle source
Parses the command line with Ruby's internal 'optparse'. OptionParser#parse! removes what it processes from ARGV, which simplifies our command parsing.
# File lib/rock_books/cmd_line/main.rb, line 36 def parse_command_line prepend_environment_options options = options_with_defaults OptionParser.new do |parser| parser.on("-h", "--help", "Show help") do |_help_requested| ARGV << 'h' # pass on the request to the command processor options.suppress_command_line_validation = true end parser.on('-i', '--input_dir DIR', "Input directory containing source data files, default: '#{DEFAULT_INPUT_DIR}'") do |v| options.input_dir = File.expand_path(v) end parser.on('-o', '--output_dir DIR', "Output directory to which report files will be written, default: '#{DEFAULT_OUTPUT_DIR}'") do |v| options.output_dir = File.expand_path(v) end parser.on('-r', '--receipt_dir DIR', "Directory root from which to find receipt filespecs, default: '#{DEFAULT_RECEIPT_DIR}'") do |v| options.receipt_dir = File.expand_path(v) end parser.on('-s', '--shell', 'Start interactive shell') do |v| options.interactive_mode = true end parser.on('-v', '--[no-]verbose', 'Verbose mode') do |v| options.verbose_mode = v end parser.on('', '--[no-]receipts', 'Include report on existing and missing receipts.') do |v| options.do_receipts = v end end.parse! if options.verbose_mode puts "Run Options:" ap options.to_h end options end
prepend_environment_options()
click to toggle source
# File lib/rock_books/cmd_line/main.rb, line 25 def prepend_environment_options env_opt_string = ENV['ROCKBOOKS_OPTIONS'] if env_opt_string args_to_prepend = Shellwords.shellsplit(env_opt_string) ARGV.unshift(args_to_prepend).flatten! end end