Module: Ace::Assign::CLI

Extended by:
Support::Cli::RegistryDsl
Defined in:
lib/ace/assign/cli.rb,
lib/ace/assign/cli/commands/add.rb,
lib/ace/assign/cli/commands/fail.rb,
lib/ace/assign/cli/commands/list.rb,
lib/ace/assign/cli/commands/step.rb,
lib/ace/assign/cli/commands/start.rb,
lib/ace/assign/cli/commands/create.rb,
lib/ace/assign/cli/commands/finish.rb,
lib/ace/assign/cli/commands/select.rb,
lib/ace/assign/cli/commands/status.rb,
lib/ace/assign/cli/commands/fork_run.rb,
lib/ace/assign/cli/commands/retry_cmd.rb,
lib/ace/assign/cli/commands/fork_session.rb,
lib/ace/assign/cli/commands/assignment_target.rb

Overview

ace-support-cli based CLI registry for ace-assign

Defined Under Namespace

Modules: Commands

Constant Summary collapse

PROGRAM_NAME =
"ace-assign"
REGISTERED_COMMANDS =

Application commands with descriptions (for help output)

[
  ["create", "Create assignment from preset or YAML"],
  ["status", "Show assignment status"],
  ["step", "Show step instructions"],
  ["start", "Start next workable step"],
  ["finish", "Complete current step with report"],
  ["fail", "Mark step as failed"],
  ["add", "Add step to assignment"],
  ["retry", "Retry failed step"],
  ["list", "List all assignments"],
  ["select", "Select active assignment"],
  ["fork-run", "Run subtree in forked process"]
].freeze
HELP_EXAMPLES =
[
  "ace-assign create --preset review     # Start review assignment",
  "ace-assign status                     # Compact queue progress",
  "ace-assign step                       # Current or next step instructions",
  "ace-assign start                      # Start next workable step",
  "ace-assign finish --message done.md    # Complete active step",
  "cat report.md | ace-assign finish     # Complete step via stdin",
  "ace-assign fork-run 010.01            # Run subtree in subprocess"
].freeze

Class Method Summary collapse

Class Method Details

.start(args) ⇒ Integer

Start the CLI

Parameters:

  • args (Array<String>)

    Command-line arguments

Returns:

  • (Integer)

    Exit code (0 for success, non-zero for failure)



95
96
97
98
99
# File 'lib/ace/assign/cli.rb', line 95

def self.start(args)
  @captured_exit_code = nil
  Ace::Support::Cli::Runner.new(self).call(args: args)
  @captured_exit_code || 0
end

.wrap_command(command_class) ⇒ Class

Wrap a command to capture its exit code

Parameters:

  • command_class (Class)

    The command class to wrap

Returns:

  • (Class)

    Wrapped command class



105
106
107
108
109
110
111
112
113
114
115
116
117
118
# File 'lib/ace/assign/cli.rb', line 105

def self.wrap_command(command_class)
  wrapped = Class.new(Ace::Support::Cli::Command) do
    define_method(:call) do |**kwargs|
      result = command_class.new.call(**kwargs)
      Ace::Assign::CLI.instance_variable_set(:@captured_exit_code, result) if result.is_a?(Integer)
      result
    end
  end
  # Copy metadata from original class
  command_class.instance_variables.each do |ivar|
    wrapped.instance_variable_set(ivar, command_class.instance_variable_get(ivar))
  end
  wrapped
end