Class: Assistant::RbsGenerator::Cli

Inherits:
Object
  • Object
show all
Defined in:
lib/assistant/rbs_generator/cli.rb

Overview

Command-line entry point. Parses argv, loads the input files, discovers Service subclasses, renders, writes.

Constant Summary collapse

USAGE =

Usage banner printed by --help.

Returns:

  • (String)
<<~USAGE
  Usage: assistant-rbs [PATH...] [--output DIR] [--quiet]

  Loads every Ruby file under the given PATHs (default: lib/) and
  writes one .rbs file per Assistant::Service subclass found, under
  DIR (default: sig/).

  Existing .rbs files without the generator marker comment on their
  first line are left untouched.
USAGE

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(argv, stdout: $stdout, stderr: $stderr) ⇒ Cli

Returns a new instance of Cli.



34
35
36
37
38
39
40
41
# File 'lib/assistant/rbs_generator/cli.rb', line 34

def initialize(argv, stdout: $stdout, stderr: $stderr)
  @argv = argv
  @stdout = stdout
  @stderr = stderr
  @output_dir = Assistant::RbsGenerator::DEFAULT_OUTPUT_DIR
  @quiet = false
  @paths = nil
end

Class Method Details

.run(argv, stdout: $stdout, stderr: $stderr) ⇒ Integer

Convenience wrapper that builds a Cli and runs it.

Parameters:

  • argv (Array<String>)

    command-line arguments

  • stdout (IO) (defaults to: $stdout)

    output stream for non-error messages

  • stderr (IO) (defaults to: $stderr)

    output stream for warnings and errors

Returns:

  • (Integer)

    process exit status (0 on success)



29
30
31
# File 'lib/assistant/rbs_generator/cli.rb', line 29

def run(argv, stdout: $stdout, stderr: $stderr)
  new(argv, stdout:, stderr:).run
end

Instance Method Details

#runObject

Returns an exit status (0 on success, non-zero on failure).



44
45
46
47
48
49
50
51
52
# File 'lib/assistant/rbs_generator/cli.rb', line 44

def run
  parse_options!
  before = service_subclasses
  load_paths(@paths || Assistant::RbsGenerator::DEFAULT_INPUT_PATHS)
  emit(service_subclasses - before)
  0
rescue SystemExit => e
  e.status
end