cliqr 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +128 -1
- data/README.md +97 -71
- data/examples/README.md +12 -0
- data/examples/hbase +58 -0
- data/examples/my-command +63 -0
- data/examples/numbers +55 -0
- data/examples/vagrant +90 -0
- data/lib/cliqr.rb +17 -2
- data/lib/cliqr/argument_validation/argument_type_validator.rb +2 -2
- data/lib/cliqr/argument_validation/validator.rb +1 -1
- data/lib/cliqr/cli/argument_operator.rb +44 -0
- data/lib/cliqr/cli/argument_operator_context.rb +20 -0
- data/lib/cliqr/cli/command.rb +1 -1
- data/lib/cliqr/cli/command_context.rb +93 -12
- data/lib/cliqr/cli/command_runner_factory.rb +2 -2
- data/lib/cliqr/cli/config.rb +301 -33
- data/lib/cliqr/cli/executor.rb +14 -9
- data/lib/cliqr/cli/interface.rb +22 -7
- data/lib/cliqr/cli/router.rb +6 -2
- data/lib/cliqr/cli/shell_command.rb +69 -0
- data/lib/cliqr/cli/usage_builder.rb +185 -0
- data/lib/cliqr/config_validation/validator_factory.rb +59 -5
- data/lib/cliqr/error.rb +10 -4
- data/lib/cliqr/parser/action_token.rb +23 -0
- data/lib/cliqr/parser/argument_parser.rb +1 -1
- data/lib/cliqr/parser/argument_token.rb +1 -4
- data/lib/cliqr/parser/argument_tree_walker.rb +40 -8
- data/lib/cliqr/parser/option_token.rb +2 -1
- data/lib/cliqr/parser/parsed_input.rb +21 -2
- data/lib/cliqr/parser/parsed_input_builder.rb +11 -7
- data/lib/cliqr/parser/token.rb +3 -9
- data/lib/cliqr/parser/token_factory.rb +1 -1
- data/lib/cliqr/util.rb +135 -0
- data/lib/cliqr/version.rb +1 -1
- data/spec/argument_parser_spec_helper.rb +15 -0
- data/spec/config/action_config_validator_spec.rb +146 -0
- data/spec/config/config_finalize_spec.rb +1 -1
- data/spec/config/config_validator_spec.rb +29 -19
- data/spec/config/option_config_validator_spec.rb +13 -13
- data/spec/dsl/interface_spec.rb +1 -168
- data/spec/dsl/usage_spec.rb +705 -0
- data/spec/executor/action_executor_spec.rb +205 -0
- data/spec/executor/executor_spec.rb +405 -17
- data/spec/executor/help_executor_spec.rb +424 -0
- data/spec/executor/shell_executor_spec.rb +233 -0
- data/spec/fixtures/action_reader_command.rb +12 -0
- data/spec/fixtures/csv_argument_operator.rb +8 -0
- data/spec/fixtures/test_option_type_checker_command.rb +8 -0
- data/spec/parser/action_argument_parser_spec.rb +113 -0
- data/spec/parser/argument_parser_spec.rb +37 -44
- data/spec/spec_helper.rb +1 -0
- data/spec/validation/action_argument_validator_spec.rb +50 -0
- data/spec/validation/{argument_validation_spec.rb → command_argument_validation_spec.rb} +36 -18
- data/spec/validation/error_spec.rb +1 -1
- data/tasks/rdoc.rake +16 -0
- data/tasks/rubucop.rake +14 -0
- data/tasks/yard.rake +21 -0
- data/templates/usage.erb +39 -0
- metadata +48 -11
@@ -0,0 +1,12 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
# A command that echoes the actions and options back
|
4
|
+
class ActionReaderCommand < Cliqr.command
|
5
|
+
def execute(context)
|
6
|
+
puts "command = #{context.command}\n\n"
|
7
|
+
puts "executing action = #{context.action_name}" if context.action?
|
8
|
+
context.options.each do |option|
|
9
|
+
puts "[option] #{option.name} => #{option.value}"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,113 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'argument_parser_spec_helper'
|
4
|
+
|
5
|
+
describe Cliqr::Parser do
|
6
|
+
it 'can parse a command with an action' do
|
7
|
+
cli = Cliqr.interface do
|
8
|
+
name 'my-command'
|
9
|
+
handler TestCommand
|
10
|
+
|
11
|
+
action 'my-action' do
|
12
|
+
handler TestCommand
|
13
|
+
end
|
14
|
+
end
|
15
|
+
config = cli.config
|
16
|
+
parsed_input = Cliqr::Parser::ParsedInput.new(:command => 'my-command',
|
17
|
+
:options => [])
|
18
|
+
assert_results(config, ['my-action'], parsed_input, config.action('my-action'))
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'can parse a command with a nested action' do
|
22
|
+
cli = Cliqr.interface do
|
23
|
+
name 'my-command'
|
24
|
+
handler TestCommand
|
25
|
+
|
26
|
+
action 'my-action-1' do
|
27
|
+
handler TestCommand
|
28
|
+
|
29
|
+
action 'my-action-2' do
|
30
|
+
handler TestCommand
|
31
|
+
|
32
|
+
action 'my-action-3' do
|
33
|
+
handler TestCommand
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
config = cli.config
|
39
|
+
parsed_input = Cliqr::Parser::ParsedInput.new(:command => 'my-command',
|
40
|
+
:options => [])
|
41
|
+
assert_results(config, %w(my-action-1 my-action-2 my-action-3), parsed_input,
|
42
|
+
config.action('my-action-1').action('my-action-2').action('my-action-3'))
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'can parse a command with an action and options' do
|
46
|
+
cli = Cliqr.interface do
|
47
|
+
name 'my-command'
|
48
|
+
handler TestCommand
|
49
|
+
|
50
|
+
action 'my-action' do
|
51
|
+
handler TestCommand
|
52
|
+
|
53
|
+
option 'test-option-1' do
|
54
|
+
short 't'
|
55
|
+
end
|
56
|
+
|
57
|
+
option 'test-option-2' do
|
58
|
+
short 'p'
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
config = cli.config
|
63
|
+
parsed_input = Cliqr::Parser::ParsedInput.new(:command => 'my-command',
|
64
|
+
:options => [
|
65
|
+
{
|
66
|
+
:name => 'test-option-1',
|
67
|
+
:value => 'abcd'
|
68
|
+
},
|
69
|
+
{
|
70
|
+
:name => 'test-option-2',
|
71
|
+
:value => 'qwe'
|
72
|
+
}
|
73
|
+
])
|
74
|
+
assert_results(config, %w(my-action -t abcd --test-option-2 qwe), parsed_input, config.action('my-action'))
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'can parse a command with nested action and options' do
|
78
|
+
cli = Cliqr.interface do
|
79
|
+
name 'my-command'
|
80
|
+
handler TestCommand
|
81
|
+
|
82
|
+
action 'my-action-1' do
|
83
|
+
handler TestCommand
|
84
|
+
|
85
|
+
action 'my-action-2' do
|
86
|
+
handler TestCommand
|
87
|
+
|
88
|
+
option 'test-option-1' do
|
89
|
+
short 't'
|
90
|
+
end
|
91
|
+
|
92
|
+
option 'test-option-2' do
|
93
|
+
short 'p'
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
config = cli.config
|
99
|
+
parsed_input = Cliqr::Parser::ParsedInput.new(:command => 'my-command',
|
100
|
+
:options => [
|
101
|
+
{
|
102
|
+
:name => 'test-option-1',
|
103
|
+
:value => 'abcd'
|
104
|
+
},
|
105
|
+
{
|
106
|
+
:name => 'test-option-2',
|
107
|
+
:value => 'qwe'
|
108
|
+
}
|
109
|
+
])
|
110
|
+
assert_results(config, %w(my-action-1 -t abcd --test-option-2 qwe my-action-2), parsed_input,
|
111
|
+
config.action('my-action-1').action('my-action-2'))
|
112
|
+
end
|
113
|
+
end
|
@@ -1,16 +1,10 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
require '
|
4
|
-
|
5
|
-
require 'cliqr/parser/argument_parser'
|
6
|
-
require 'cliqr/parser/parsed_input'
|
7
|
-
|
8
|
-
require 'fixtures/test_command'
|
9
|
-
require 'fixtures/option_reader_command'
|
3
|
+
require 'argument_parser_spec_helper'
|
10
4
|
|
11
5
|
describe Cliqr::Parser do
|
12
6
|
TEST_CLI = Cliqr.interface do
|
13
|
-
|
7
|
+
name 'my-command'
|
14
8
|
handler TestCommand
|
15
9
|
arguments :disable
|
16
10
|
|
@@ -19,10 +13,9 @@ describe Cliqr::Parser do
|
|
19
13
|
end
|
20
14
|
end
|
21
15
|
CONFIG = TEST_CLI.config
|
22
|
-
PARSER = Cliqr::Parser
|
23
16
|
|
24
17
|
it 'can parse no argument command' do
|
25
|
-
|
18
|
+
assert_results(CONFIG, [], Cliqr::Parser::ParsedInput.new(:command => 'my-command', :options => []))
|
26
19
|
end
|
27
20
|
|
28
21
|
it 'can parse command with option using long name' do
|
@@ -33,7 +26,7 @@ describe Cliqr::Parser do
|
|
33
26
|
:value => 'abcd'
|
34
27
|
}
|
35
28
|
])
|
36
|
-
|
29
|
+
assert_results(CONFIG, %w(--test-option abcd), parsed_input)
|
37
30
|
end
|
38
31
|
|
39
32
|
it 'can parse multiple options' do
|
@@ -49,13 +42,13 @@ describe Cliqr::Parser do
|
|
49
42
|
}
|
50
43
|
])
|
51
44
|
cli = Cliqr.interface do
|
52
|
-
|
45
|
+
name 'my-command'
|
53
46
|
handler TestCommand
|
54
47
|
|
55
48
|
option 'test-option-1'
|
56
49
|
option 'test-option-2'
|
57
50
|
end
|
58
|
-
|
51
|
+
assert_results(cli.config, %w(--test-option-1 abcd --test-option-2 xyz), parsed_input)
|
59
52
|
end
|
60
53
|
|
61
54
|
it 'can parse command with option using short name' do
|
@@ -66,36 +59,36 @@ describe Cliqr::Parser do
|
|
66
59
|
:value => 'abcd'
|
67
60
|
}
|
68
61
|
])
|
69
|
-
|
62
|
+
assert_results(CONFIG, %w(-t abcd), parsed_input)
|
70
63
|
end
|
71
64
|
|
72
65
|
it 'cannot parse unknown options' do
|
73
|
-
expect {
|
66
|
+
expect { Cliqr::Parser.parse(CONFIG, %w(--unknown-option abcd)) }.to(
|
74
67
|
raise_error(Cliqr::Error::UnknownCommandOption, 'unknown option "--unknown-option"'))
|
75
|
-
expect {
|
68
|
+
expect { Cliqr::Parser.parse(CONFIG, %w(-u abcd)) }.to(
|
76
69
|
raise_error(Cliqr::Error::UnknownCommandOption, 'unknown option "-u"'))
|
77
70
|
end
|
78
71
|
|
79
72
|
it 'cannot parse invalid options' do
|
80
|
-
expect {
|
81
|
-
raise_error(Cliqr::Error::
|
82
|
-
expect {
|
83
|
-
raise_error(Cliqr::Error::
|
73
|
+
expect { Cliqr::Parser.parse(CONFIG, %w(--1)) }.to(
|
74
|
+
raise_error(Cliqr::Error::IllegalArgumentError, 'invalid command argument "--1"'))
|
75
|
+
expect { Cliqr::Parser.parse(CONFIG, %w(-$)) }.to(
|
76
|
+
raise_error(Cliqr::Error::IllegalArgumentError, 'invalid command argument "-$"'))
|
84
77
|
end
|
85
78
|
|
86
79
|
it 'cannot parse option without value if required' do
|
87
|
-
expect {
|
80
|
+
expect { Cliqr::Parser.parse(CONFIG, %w(--test-option)) }.to(
|
88
81
|
raise_error(Cliqr::Error::OptionValueMissing, 'a value must be defined for argument "--test-option"'))
|
89
82
|
end
|
90
83
|
|
91
84
|
it 'cannot parse option if it has multiple values' do
|
92
|
-
expect {
|
85
|
+
expect { Cliqr::Parser.parse(CONFIG, %w(--test-option val1 --test-option val2)) }.to(
|
93
86
|
raise_error(Cliqr::Error::MultipleOptionValues, 'multiple values for option "--test-option"'))
|
94
87
|
end
|
95
88
|
|
96
89
|
it 'can parse command with arguments' do
|
97
90
|
cli = Cliqr.interface do
|
98
|
-
|
91
|
+
name 'my-command'
|
99
92
|
handler TestCommand
|
100
93
|
arguments :enable
|
101
94
|
|
@@ -106,19 +99,19 @@ describe Cliqr::Parser do
|
|
106
99
|
parsed_input = Cliqr::Parser::ParsedInput.new(:command => 'my-command',
|
107
100
|
:options => {},
|
108
101
|
:arguments => ['value1'])
|
109
|
-
|
102
|
+
assert_results(cli.config, ['value1'], parsed_input)
|
110
103
|
end
|
111
104
|
|
112
105
|
it 'can parse command with one option and one argument' do
|
113
106
|
parsed_input = Cliqr::Parser::ParsedInput.new(:command => 'my-command',
|
114
107
|
:options => [
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
108
|
+
{
|
109
|
+
:name => 'test-option',
|
110
|
+
:value => 'abcd'
|
111
|
+
}],
|
119
112
|
:arguments => ['value1'])
|
120
113
|
cli = Cliqr.interface do
|
121
|
-
|
114
|
+
name 'my-command'
|
122
115
|
handler TestCommand
|
123
116
|
arguments :enable
|
124
117
|
|
@@ -127,13 +120,13 @@ describe Cliqr::Parser do
|
|
127
120
|
end
|
128
121
|
end
|
129
122
|
|
130
|
-
|
131
|
-
|
123
|
+
assert_results(cli.config, %w(-t abcd value1), parsed_input)
|
124
|
+
assert_results(cli.config, %w(value1 -t abcd), parsed_input)
|
132
125
|
end
|
133
126
|
|
134
127
|
it 'can parse command with a mix of options and arguments' do
|
135
128
|
cli = Cliqr.interface do
|
136
|
-
|
129
|
+
name 'my-command'
|
137
130
|
handler TestCommand
|
138
131
|
arguments :enable
|
139
132
|
|
@@ -149,17 +142,17 @@ describe Cliqr::Parser do
|
|
149
142
|
parsed_input = Cliqr::Parser::ParsedInput.new(:command => 'my-command',
|
150
143
|
:arguments => %w(value1 value2),
|
151
144
|
:options => [
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
145
|
+
{
|
146
|
+
:name => 'test-option-1',
|
147
|
+
:value => 'abcd'
|
148
|
+
},
|
149
|
+
{
|
150
|
+
:name => 'test-option-2',
|
151
|
+
:value => 'qwe'
|
152
|
+
}
|
153
|
+
])
|
154
|
+
assert_results(config, %w(-t abcd -p qwe value1 value2), parsed_input)
|
155
|
+
assert_results(config, %w(value1 -t abcd value2 -p qwe), parsed_input)
|
156
|
+
assert_results(config, %w(-t abcd value1 -p qwe value2), parsed_input)
|
164
157
|
end
|
165
158
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -0,0 +1,50 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
require 'fixtures/test_command'
|
6
|
+
|
7
|
+
describe Cliqr::ArgumentValidation::Validator do
|
8
|
+
it 'does not allow multiple actions at the same level in the same command' do
|
9
|
+
cli = Cliqr.interface do
|
10
|
+
name 'my-command'
|
11
|
+
handler TestCommand
|
12
|
+
|
13
|
+
action 'my-action' do
|
14
|
+
handler TestCommand
|
15
|
+
arguments :disable
|
16
|
+
end
|
17
|
+
|
18
|
+
action 'another-action' do
|
19
|
+
handler TestCommand
|
20
|
+
end
|
21
|
+
end
|
22
|
+
expect { cli.execute_internal %w(my-action another-action) }.to(
|
23
|
+
raise_error(Cliqr::Error::IllegalArgumentError, "invalid command argument \"another-action\""))
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'does not allow illegal nesting of actions in a command' do
|
27
|
+
cli = Cliqr.interface do
|
28
|
+
name 'my-command'
|
29
|
+
handler TestCommand
|
30
|
+
|
31
|
+
action 'my-action' do
|
32
|
+
handler TestCommand
|
33
|
+
option 'test-option'
|
34
|
+
|
35
|
+
action 'third-action' do
|
36
|
+
handler TestCommand
|
37
|
+
option 'third-option'
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
action 'another-action' do
|
42
|
+
handler TestCommand
|
43
|
+
option 'test-option'
|
44
|
+
arguments :disable
|
45
|
+
end
|
46
|
+
end
|
47
|
+
expect { cli.execute_internal %w(another-action third-action) }.to(
|
48
|
+
raise_error(Cliqr::Error::IllegalArgumentError, "invalid command argument \"third-action\""))
|
49
|
+
end
|
50
|
+
end
|
@@ -10,7 +10,7 @@ require 'fixtures/test_option_reader_command'
|
|
10
10
|
describe Cliqr::ArgumentValidation::Validator do
|
11
11
|
it 'can validate numerical arguments' do
|
12
12
|
cli = Cliqr.interface do
|
13
|
-
|
13
|
+
name 'my-command'
|
14
14
|
handler TestOptionReaderCommand
|
15
15
|
|
16
16
|
option 'test-option' do
|
@@ -18,31 +18,49 @@ describe Cliqr::ArgumentValidation::Validator do
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
result = cli.
|
21
|
+
result = cli.execute_internal %w(--test-option 123), output: :buffer
|
22
22
|
expect(result[:stdout]).to eq <<-EOS
|
23
23
|
123
|
24
24
|
EOS
|
25
25
|
end
|
26
26
|
|
27
|
+
it 'does not allow string for numeric option types in action' do
|
28
|
+
cli = Cliqr.interface do
|
29
|
+
name 'my-command'
|
30
|
+
handler TestCommand
|
31
|
+
|
32
|
+
action :bla do
|
33
|
+
option 'age' do
|
34
|
+
type :numeric
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
expect do
|
40
|
+
cli.execute_internal %w(bla --age abcd)
|
41
|
+
end.to raise_error(Cliqr::Error::IllegalArgumentError,
|
42
|
+
"illegal argument error - only values of type 'numeric' allowed for option 'age'")
|
43
|
+
end
|
44
|
+
|
27
45
|
it 'does not allow string for numeric option types' do
|
28
46
|
cli = Cliqr.interface do
|
29
|
-
|
47
|
+
name 'my-command'
|
30
48
|
handler TestCommand
|
31
49
|
|
32
|
-
option
|
50
|
+
option :age do
|
33
51
|
type :numeric
|
34
52
|
end
|
35
53
|
end
|
36
54
|
|
37
55
|
expect do
|
38
|
-
cli.
|
56
|
+
cli.execute_internal %w(--age abcd)
|
39
57
|
end.to raise_error(Cliqr::Error::IllegalArgumentError,
|
40
58
|
"illegal argument error - only values of type 'numeric' allowed for option 'age'")
|
41
59
|
end
|
42
60
|
|
43
61
|
it 'can validate boolean option arguments' do
|
44
62
|
cli = Cliqr.interface do
|
45
|
-
|
63
|
+
name 'my-command'
|
46
64
|
handler TestOptionReaderCommand
|
47
65
|
|
48
66
|
option 'test-option' do
|
@@ -50,7 +68,7 @@ describe Cliqr::ArgumentValidation::Validator do
|
|
50
68
|
end
|
51
69
|
end
|
52
70
|
|
53
|
-
result = cli.
|
71
|
+
result = cli.execute_internal %w(--test-option), output: :buffer
|
54
72
|
expect(result[:stdout]).to eq <<-EOS
|
55
73
|
true
|
56
74
|
EOS
|
@@ -58,7 +76,7 @@ true
|
|
58
76
|
|
59
77
|
it 'can validate boolean option argumentswith short name' do
|
60
78
|
cli = Cliqr.interface do
|
61
|
-
|
79
|
+
name 'my-command'
|
62
80
|
handler TestOptionReaderCommand
|
63
81
|
|
64
82
|
option 'test-option' do
|
@@ -67,7 +85,7 @@ true
|
|
67
85
|
end
|
68
86
|
end
|
69
87
|
|
70
|
-
result = cli.
|
88
|
+
result = cli.execute_internal %w(-t), output: :buffer
|
71
89
|
expect(result[:stdout]).to eq <<-EOS
|
72
90
|
true
|
73
91
|
EOS
|
@@ -75,7 +93,7 @@ true
|
|
75
93
|
|
76
94
|
it 'can validate boolean option arguments for false' do
|
77
95
|
cli = Cliqr.interface do
|
78
|
-
|
96
|
+
name 'my-command'
|
79
97
|
handler TestOptionReaderCommand
|
80
98
|
|
81
99
|
option 'test-option' do
|
@@ -83,7 +101,7 @@ true
|
|
83
101
|
end
|
84
102
|
end
|
85
103
|
|
86
|
-
result = cli.
|
104
|
+
result = cli.execute_internal %w(--no-test-option), output: :buffer
|
87
105
|
expect(result[:stdout]).to eq <<-EOS
|
88
106
|
false
|
89
107
|
EOS
|
@@ -91,7 +109,7 @@ false
|
|
91
109
|
|
92
110
|
it 'does not allow string for boolean option types' do
|
93
111
|
cli = Cliqr.interface do
|
94
|
-
|
112
|
+
name 'my-command'
|
95
113
|
handler TestCommand
|
96
114
|
arguments :disable
|
97
115
|
|
@@ -101,14 +119,14 @@ false
|
|
101
119
|
end
|
102
120
|
|
103
121
|
expect do
|
104
|
-
cli.
|
105
|
-
end.to raise_error(Cliqr::Error::
|
122
|
+
cli.execute_internal %w(--opt qwe)
|
123
|
+
end.to raise_error(Cliqr::Error::IllegalArgumentError,
|
106
124
|
"invalid command argument \"qwe\"")
|
107
125
|
end
|
108
126
|
|
109
127
|
it 'allows numeric options to be optional' do
|
110
128
|
cli = Cliqr.interface do
|
111
|
-
|
129
|
+
name 'my-command'
|
112
130
|
description 'this is an awesome command...try it out'
|
113
131
|
handler TestCommand
|
114
132
|
|
@@ -117,7 +135,7 @@ false
|
|
117
135
|
end
|
118
136
|
end
|
119
137
|
|
120
|
-
result = cli.
|
138
|
+
result = cli.execute_internal [], output: :buffer
|
121
139
|
expect(result[:stdout]).to eq <<-EOS
|
122
140
|
test command executed
|
123
141
|
EOS
|
@@ -125,7 +143,7 @@ test command executed
|
|
125
143
|
|
126
144
|
it 'allows boolean options to be optional' do
|
127
145
|
cli = Cliqr.interface do
|
128
|
-
|
146
|
+
name 'my-command'
|
129
147
|
description 'this is an awesome command...try it out'
|
130
148
|
handler TestCommand
|
131
149
|
|
@@ -134,7 +152,7 @@ test command executed
|
|
134
152
|
end
|
135
153
|
end
|
136
154
|
|
137
|
-
result = cli.
|
155
|
+
result = cli.execute_internal [], output: :buffer
|
138
156
|
expect(result[:stdout]).to eq <<-EOS
|
139
157
|
test command executed
|
140
158
|
EOS
|