require 'rubocop/git' require 'optparse' module RuboCop module Git class CLI def run(args = ARGV) @options = Options.new parse_arguments(args) Runner.new.run(@options) end private def parse_arguments(args) @options.commits = option_parser.parse(args) rescue OptionParser::InvalidOption, Options::Invalid => ex warn "ERROR: #{ex.message}" $stderr.puts warn option_parser exit 1 end def option_parser @option_parser ||= OptionParser.new do |opt| opt.banner << ' [[commit] commit]' opt.on('-c', '--config FILE', 'Specify configuration file') do |config| @options.config = config end opt.on('-r', '--require FILE', 'Require Ruby file') do |file| require file end opt.on('-d', '--debug', 'Display debug info') do @options.rubocop[:debug] = true end opt.on('-D', '--display-cop-names', 'Display cop names in offense messages') do @options.rubocop[:display_cop_names] = true end opt.on('--cached', 'git diff --cached') do @options.cached = true end opt.on('--staged', 'synonym of --cached') do @options.cached = true end opt.on('--hound', 'Hound compatibility mode') do @options.hound = true end opt.on('--version', 'Display version') do puts RuboCop::Git::VERSION exit 0 end end end end end end