Class: Evilution::CLI::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/evilution/cli/parser.rb

Constant Summary collapse

SIMPLE_COMMANDS =
{
  "version" => :version,
  "init" => :init,
  "mcp" => :mcp,
  "subjects" => :subjects
}.freeze
SESSION_SUBCOMMANDS =
{
  "list" => :session_list,
  "show" => :session_show,
  "diff" => :session_diff,
  "gc" => :session_gc
}.freeze
TESTS_SUBCOMMANDS =
{ "list" => :tests_list }.freeze
ENVIRONMENT_SUBCOMMANDS =
{ "show" => :environment_show }.freeze
UTIL_SUBCOMMANDS =
{ "mutation" => :util_mutation }.freeze

Instance Method Summary collapse

Constructor Details

#initialize(argv, stdin: $stdin) ⇒ Parser

Returns a new instance of Parser.



26
27
28
29
30
31
32
33
34
35
# File 'lib/evilution/cli/parser.rb', line 26

def initialize(argv, stdin: $stdin)
  @argv = argv.dup
  @stdin = stdin
  @options = {}
  @files = []
  @line_ranges = {}
  @command = :run
  @parse_error = nil
  @stdin_error = nil
end

Instance Method Details

#parseObject



37
38
39
40
41
42
43
44
45
46
# File 'lib/evilution/cli/parser.rb', line 37

def parse
  extract_command
  return build_parsed_args if @command == :parse_error

  preprocess_flags
  remaining = build_option_parser.parse!(@argv)
  @files, @line_ranges = parse_file_args(remaining)
  read_stdin_files if @options.delete(:stdin) && %i[run subjects].include?(@command)
  build_parsed_args
end