Class: RuboCop::Options

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

Overview

This class handles command line options.

Constant Summary collapse

E_STDIN_NO_PATH =
'-s/--stdin requires exactly one path, relative to the ' \
'root of the project. RuboCop will use this path to determine which ' \
'cops are enabled (via eg. Include/Exclude), and so that certain cops ' \
'like Naming/FileName can be checked.'.freeze
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.



19
20
21
22
# File 'lib/rubocop/options.rb', line 19

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

Instance Method Details

#parse(command_line_args) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/rubocop/options.rb', line 24

def parse(command_line_args)
  args = args_from_file.concat(args_from_env).concat(command_line_args)
  define_options.parse!(args)

  @validator.validate_compatibility

  if @options[:stdin]
    # The parser will put the file name given after --stdin into
    # @options[:stdin]. If it did, then the args array should be empty.
    raise OptionArgumentError, E_STDIN_NO_PATH if args.any?

    # 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