Class: CleoQualityReview::Options

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

Overview

Parses command-line options for the quality review CLI

Defined Under Namespace

Classes: ParseResult

Constant Summary collapse

FORMATS =
%w[human agent github pr_review].freeze
DEFAULT_FORMAT =
"human"
DEFAULT_CHECKS =
["all"].freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(argv) ⇒ Options

Returns a new instance of Options.

Parameters:

  • argv (Array<String>)

    command-line arguments



54
55
56
57
58
59
60
61
62
63
64
# File 'lib/cleo_quality_review/options.rb', line 54

def initialize(argv)
  @argv = argv.dup
  @format = DEFAULT_FORMAT
  @checks = []
  @files = []
  @exclude = []
  @changed = false
  @log = false
  @review_id = nil
  @review_file = nil
end

Class Method Details

.parse(argv) ⇒ ParseResult

Parse command-line arguments

Parameters:

  • argv (Array<String>)

    command-line arguments

Returns:

Raises:

  • (OptionParser::ParseError)

    if arguments are invalid



48
49
50
# File 'lib/cleo_quality_review/options.rb', line 48

def self.parse(argv)
  new(argv).parse
end

Instance Method Details

#parseParseResult

Parse the arguments and return the result

Returns:

Raises:

  • (OptionParser::InvalidArgument)

    if format is invalid



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/cleo_quality_review/options.rb', line 70

def parse
  parser.parse!(argv)
  validate_format!
  files.concat(argv)

  ParseResult.new(
    format: format,
    checks: checks.empty? ? DEFAULT_CHECKS.dup : checks,
    files: files,
    exclude: exclude,
    changed: changed,
    log: log,
    review_id: review_id,
    review_file: review_file,
  )
end