Class: Textus::CLI::Group
- Inherits:
-
Verb
- Object
- Verb
- Textus::CLI::Group
show all
- Defined in:
- lib/textus/cli/group.rb,
lib/textus/cli/group/key.rb,
lib/textus/cli/group/hook.rb,
lib/textus/cli/group/schema.rb
Defined Under Namespace
Classes: Hook, Key, Schema
Class Attribute Summary collapse
Attributes inherited from Verb
#positional
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Verb
#emit, #initialize, option, options
Class Attribute Details
.cli_name ⇒ Object
9
10
11
|
# File 'lib/textus/cli/group.rb', line 9
def cli_name
@cli_name || raise("subclass must define cli_name")
end
|
Class Method Details
.inherited(subclass) ⇒ Object
15
16
17
18
|
# File 'lib/textus/cli/group.rb', line 15
def inherited(subclass)
super
subclass.instance_variable_set(:@subcommands, {})
end
|
.needs_store? ⇒ Boolean
20
21
22
23
|
# File 'lib/textus/cli/group.rb', line 20
def needs_store?
true
end
|
.subcommands ⇒ Object
5
6
7
|
# File 'lib/textus/cli/group.rb', line 5
def subcommands
@subcommands ||= {}
end
|
Instance Method Details
#call(store) ⇒ Object
46
47
48
|
# File 'lib/textus/cli/group.rb', line 46
def call(store)
@sub.call(@sub_klass.needs_store? ? store : nil)
end
|
#parse(argv) ⇒ Object
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/textus/cli/group.rb', line 26
def parse(argv)
subname = argv.shift
if subname.nil?
raise UsageError.new(
"#{self.class.cli_name} requires a subcommand: #{self.class.subcommands.keys.join(", ")}",
)
end
@sub_klass = self.class.subcommands[subname]
unless @sub_klass
raise UsageError.new(
"unknown #{self.class.cli_name} subcommand '#{subname}'. " \
"Valid: #{self.class.subcommands.keys.join(", ")}",
)
end
@sub = @sub_klass.new(stdin: @stdin, stdout: @stdout, stderr: @stderr, cwd: @cwd)
@sub.parse(argv)
end
|