Class: RuboCop::Options

Inherits:
Object
  • Object
show all
Defined in:
lib/rubocop/options.rb

Overview

This class handles command line options.

Constant Summary collapse

EXITING_OPTIONS =
%i[version verbose_version show_cops].freeze
DEFAULT_MAXIMUM_EXCLUSION_ITEMS =
15

Instance Method Summary collapse

Constructor Details

#initializeOptions

Returns a new instance of Options.



12
13
14
15
# File 'lib/rubocop/options.rb', line 12

def initialize
  @options = {}
  @validator = OptionsValidator.new(@options)
end

Instance Method Details

#parse(command_line_args) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/rubocop/options.rb', line 17

def parse(command_line_args)
  args = args_from_file.concat(args_from_env).concat(command_line_args)
  define_options(args).parse!(args)
  # The --no-color CLI option sets `color: false` so we don't want the
  # `no_color` key, which is created automatically.
  @options.delete(:no_color)

  @validator.validate_compatibility

  if @options[:stdin]
    # The parser has put the file name given after --stdin into
    # @options[:stdin]. The args array should be empty.
    if args.any?
      raise ArgumentError, '-s/--stdin requires exactly one path.'
    end
    # We want the STDIN contents in @options[:stdin] and the file name in
    # args to simplify the rest of the processing.
    args = [@options[:stdin]]
    @options[:stdin] = $stdin.binmode.read
  end

  [@options, args]
end