lib/skunk/cli/options.rb in skunk-0.3.1 vs lib/skunk/cli/options.rb in skunk-0.3.2

- old
+ new

@@ -1,10 +1,34 @@ # frozen_string_literal: true -require "rubycritic/cli/options" +require "skunk/cli/options/argv" +require "rubycritic/cli/options/file" module Skunk module Cli - class Options < RubyCritic::Cli::Options + # Knows how to parse options passed to the CLI application + class Options + attr_reader :argv_options, :file_options + + def initialize(argv) + @argv_options = Argv.new(argv) + @file_options = RubyCritic::Cli::Options::File.new + end + + def parse + argv_options.parse + file_options.parse + self + end + + # :reek:NilCheck + def to_h + file_hash = file_options.to_h + argv_hash = argv_options.to_h + + file_hash.merge(argv_hash) do |_, file_option, argv_option| + Array(argv_option).empty? ? file_option : argv_option + end + end end end end