Class: Inch::CLI::Command::Base Abstract

Inherits:
Object
  • Object
show all
Includes:
TraceHelper
Defined in:
lib/inch/cli/command/base.rb

Overview

This class is abstract.

Subclass and override #run to implement a new command

Abstract base class for CLI controller objects

Direct Known Subclasses

BaseList, BaseObject

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from TraceHelper

#debug, #trace, #trace_header

Constructor Details

#initializeBase

Returns a new instance of Base.



53
54
55
56
57
# File 'lib/inch/cli/command/base.rb', line 53

def initialize
  options_class = "Command::Options::#{self.class.to_s.split('::').last}"
  @options = eval(options_class).new
  @options.usage = usage
end

Instance Attribute Details

#source_parserSourceParser (readonly)

Returns:



41
42
43
# File 'lib/inch/cli/command/base.rb', line 41

def source_parser
  @source_parser
end

Class Method Details

.run(*args) ⇒ Command::Base

Helper method to run an instance with the given args

Returns:

See Also:



47
48
49
50
51
# File 'lib/inch/cli/command/base.rb', line 47

def self.run(*args)
  command = new
  command.run(*args)
  command
end

Instance Method Details

#descriptionString

Returns a description of the command

Returns:

  • (String)


62
63
64
# File 'lib/inch/cli/command/base.rb', line 62

def description
  ""
end

#nameString

Returns the name of the command by which it is referenced in the command list

Returns:

  • (String)


70
71
72
73
74
# File 'lib/inch/cli/command/base.rb', line 70

def name
  CommandParser.commands.each do |name, klass|
    return name if klass == self.class
  end
end

#run(*args) ⇒ Object

This method is abstract.
Note:

Override with implementation

Runs the command with the given args

Parameters:

  • *args (Array<String>)

Raises:

  • (NotImplementedError)


81
82
83
# File 'lib/inch/cli/command/base.rb', line 81

def run(*args)
  raise NotImplementedError
end

#usageString

Returns a description of the command’s usage pattern

Returns:

  • (String)


88
89
90
# File 'lib/inch/cli/command/base.rb', line 88

def usage
  "Usage: inch #{name} [options]"
end