command_kit 0.2.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +4 -5
- data/.rubocop.yml +14 -1
- data/ChangeLog.md +82 -0
- data/Gemfile +2 -0
- data/LICENSE.txt +1 -1
- data/README.md +18 -9
- data/command_kit.gemspec +0 -1
- data/examples/printing/tables.rb +141 -0
- data/gemspec.yml +3 -3
- data/lib/command_kit/arguments/argument.rb +2 -2
- data/lib/command_kit/arguments.rb +27 -2
- data/lib/command_kit/bug_report.rb +105 -0
- data/lib/command_kit/colors.rb +488 -15
- data/lib/command_kit/command.rb +1 -2
- data/lib/command_kit/edit.rb +54 -0
- data/lib/command_kit/env.rb +1 -1
- data/lib/command_kit/file_utils.rb +46 -0
- data/lib/command_kit/options/option.rb +45 -22
- data/lib/command_kit/options/option_value.rb +2 -2
- data/lib/command_kit/options/parser.rb +1 -4
- data/lib/command_kit/options/quiet.rb +1 -1
- data/lib/command_kit/options/verbose.rb +2 -2
- data/lib/command_kit/options/version.rb +10 -0
- data/lib/command_kit/options.rb +89 -14
- data/lib/command_kit/os.rb +1 -1
- data/lib/command_kit/printing/fields.rb +56 -0
- data/lib/command_kit/printing/indent.rb +1 -1
- data/lib/command_kit/printing/lists.rb +91 -0
- data/lib/command_kit/printing/tables/border_style.rb +169 -0
- data/lib/command_kit/printing/tables/cell_builder.rb +93 -0
- data/lib/command_kit/printing/tables/row_builder.rb +111 -0
- data/lib/command_kit/printing/tables/style.rb +198 -0
- data/lib/command_kit/printing/tables/table_builder.rb +145 -0
- data/lib/command_kit/printing/tables/table_formatter.rb +254 -0
- data/lib/command_kit/printing/tables.rb +208 -0
- data/lib/command_kit/program_name.rb +9 -0
- data/lib/command_kit/stdio.rb +5 -1
- data/lib/command_kit/version.rb +1 -1
- data/spec/arguments_spec.rb +33 -0
- data/spec/bug_report_spec.rb +266 -0
- data/spec/colors_spec.rb +232 -195
- data/spec/command_name_spec.rb +1 -1
- data/spec/command_spec.rb +2 -2
- data/spec/edit_spec.rb +72 -0
- data/spec/file_utils_spec.rb +59 -0
- data/spec/fixtures/template.erb +5 -0
- data/spec/options/option_spec.rb +48 -2
- data/spec/options/parser_spec.rb +0 -10
- data/spec/options/quiet_spec.rb +51 -0
- data/spec/options/verbose_spec.rb +51 -0
- data/spec/options/version_spec.rb +146 -0
- data/spec/options_spec.rb +46 -0
- data/spec/pager_spec.rb +1 -1
- data/spec/printing/fields_spec.rb +167 -0
- data/spec/printing/lists_spec.rb +99 -0
- data/spec/printing/tables/border_style.rb +43 -0
- data/spec/printing/tables/cell_builer_spec.rb +135 -0
- data/spec/printing/tables/row_builder_spec.rb +165 -0
- data/spec/printing/tables/style_spec.rb +377 -0
- data/spec/printing/tables/table_builder_spec.rb +252 -0
- data/spec/printing/tables/table_formatter_spec.rb +1180 -0
- data/spec/printing/tables_spec.rb +1069 -0
- data/spec/program_name_spec.rb +8 -0
- metadata +36 -7
data/spec/edit_spec.rb
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'command_kit/edit'
|
3
|
+
|
4
|
+
describe CommandKit::Edit do
|
5
|
+
module TestEdit
|
6
|
+
class TestCommand
|
7
|
+
include CommandKit::Edit
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
let(:command_class) { TestEdit::TestCommand }
|
12
|
+
|
13
|
+
it "must also include CommandKit::Env" do
|
14
|
+
expect(command_class).to include(CommandKit::Env)
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "#editor" do
|
18
|
+
subject { command_class.new(env: env) }
|
19
|
+
|
20
|
+
context "when env['EDITOR'] is set" do
|
21
|
+
let(:editor) { 'vim' }
|
22
|
+
let(:env) do
|
23
|
+
{'EDITOR' => editor}
|
24
|
+
end
|
25
|
+
|
26
|
+
it "must return env['EDITOR']" do
|
27
|
+
expect(subject.editor).to eq(env['EDITOR'])
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context "when env['EDITOR'] is not set" do
|
32
|
+
let(:env) do
|
33
|
+
{}
|
34
|
+
end
|
35
|
+
|
36
|
+
it "must return 'nano'" do
|
37
|
+
expect(subject.editor).to eq('nano')
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "#edit" do
|
43
|
+
subject { command_class.new(env: env) }
|
44
|
+
|
45
|
+
let(:arguments) { ['file.txt'] }
|
46
|
+
|
47
|
+
context "when env['EDITOR'] is set" do
|
48
|
+
let(:editor) { 'vim' }
|
49
|
+
let(:env) do
|
50
|
+
{'EDITOR' => editor}
|
51
|
+
end
|
52
|
+
|
53
|
+
it "must invoke system with #editor and the additional arguments" do
|
54
|
+
expect(subject).to receive(:system).with(subject.editor,*arguments)
|
55
|
+
|
56
|
+
subject.edit(*arguments)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
context "when env['EDITOR'] is not set" do
|
61
|
+
let(:env) do
|
62
|
+
{}
|
63
|
+
end
|
64
|
+
|
65
|
+
it "must invoke system with 'nano' and the additional arguments" do
|
66
|
+
expect(subject).to receive(:system).with('nano',*arguments)
|
67
|
+
|
68
|
+
subject.edit(*arguments)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'command_kit/file_utils'
|
3
|
+
require 'tempfile'
|
4
|
+
|
5
|
+
describe CommandKit::FileUtils do
|
6
|
+
module TestFileUtils
|
7
|
+
class Command
|
8
|
+
include CommandKit::FileUtils
|
9
|
+
|
10
|
+
attr_reader :var
|
11
|
+
|
12
|
+
def initialize(var: nil)
|
13
|
+
super()
|
14
|
+
|
15
|
+
@var = var
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_method
|
19
|
+
'some method'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
let(:var) { 42 }
|
25
|
+
|
26
|
+
let(:command_class) { TestFileUtils::Command }
|
27
|
+
subject { command_class.new(var: var) }
|
28
|
+
|
29
|
+
let(:fixtures_dir) { File.expand_path(File.join(__dir__,'fixtures')) }
|
30
|
+
let(:template_path) { File.join(fixtures_dir,'template.erb') }
|
31
|
+
|
32
|
+
describe "#erb" do
|
33
|
+
let(:expected_result) do
|
34
|
+
[
|
35
|
+
"Raw text",
|
36
|
+
'',
|
37
|
+
"variable = #{var}",
|
38
|
+
'',
|
39
|
+
"method = #{subject.test_method}"
|
40
|
+
].join($/)
|
41
|
+
end
|
42
|
+
|
43
|
+
context "when only given a source file argument" do
|
44
|
+
it "must render the erb template and return the result" do
|
45
|
+
expect(subject.erb(template_path)).to eq(expected_result)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context "when given an additional destination file argument" do
|
50
|
+
let(:dest_path) { Tempfile.new.path }
|
51
|
+
|
52
|
+
before { subject.erb(template_path,dest_path) }
|
53
|
+
|
54
|
+
it "must render the erb template and write the result to the destination" do
|
55
|
+
expect(File.read(dest_path)).to eq(expected_result)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
data/spec/options/option_spec.rb
CHANGED
@@ -6,10 +6,12 @@ describe CommandKit::Options::Option do
|
|
6
6
|
let(:short) { nil }
|
7
7
|
let(:long) { '--foo' }
|
8
8
|
let(:equals) { false }
|
9
|
+
let(:value_usage) { 'FOO' }
|
10
|
+
let(:value_required) { true }
|
9
11
|
let(:value) do
|
10
12
|
{
|
11
|
-
usage:
|
12
|
-
required:
|
13
|
+
usage: value_usage,
|
14
|
+
required: value_required
|
13
15
|
}
|
14
16
|
end
|
15
17
|
let(:desc) { 'Foo option' }
|
@@ -145,6 +147,20 @@ describe CommandKit::Options::Option do
|
|
145
147
|
end
|
146
148
|
end
|
147
149
|
|
150
|
+
it "must default #category to nil" do
|
151
|
+
expect(subject.category).to be(nil)
|
152
|
+
end
|
153
|
+
|
154
|
+
context "when the category: keyword is given" do
|
155
|
+
let(:category) { 'Other Options' }
|
156
|
+
|
157
|
+
subject { described_class.new(name, desc: desc, category: category) }
|
158
|
+
|
159
|
+
it "must set #category" do
|
160
|
+
expect(subject.category).to eq(category)
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
148
164
|
context "when a block is given" do
|
149
165
|
subject { described_class.new(name, desc: desc, &block) }
|
150
166
|
|
@@ -214,6 +230,14 @@ describe CommandKit::Options::Option do
|
|
214
230
|
it "must return '--option=USAGE'" do
|
215
231
|
expect(subject.usage.last).to eq("#{long}=#{subject.value.usage}")
|
216
232
|
end
|
233
|
+
|
234
|
+
context "but the #value is also optional?" do
|
235
|
+
let(:value_required) { false }
|
236
|
+
|
237
|
+
it "must return '--option[=USAGE]'" do
|
238
|
+
expect(subject.usage.last).to eq("#{long}[=#{subject.value.usage}]")
|
239
|
+
end
|
240
|
+
end
|
217
241
|
end
|
218
242
|
end
|
219
243
|
|
@@ -293,5 +317,27 @@ describe CommandKit::Options::Option do
|
|
293
317
|
expect(subject.desc).to eq("#{desc} (Default: #{default})")
|
294
318
|
end
|
295
319
|
end
|
320
|
+
|
321
|
+
context "when #desc was initialized with an Array" do
|
322
|
+
let(:desc) do
|
323
|
+
[
|
324
|
+
'Line 1',
|
325
|
+
'Line 2'
|
326
|
+
]
|
327
|
+
end
|
328
|
+
|
329
|
+
it "must return the desc: value" do
|
330
|
+
expect(subject.desc).to eq(desc)
|
331
|
+
end
|
332
|
+
|
333
|
+
context "when #value has been initialized with a default value" do
|
334
|
+
let(:default) { "foo" }
|
335
|
+
let(:value) { {default: default} }
|
336
|
+
|
337
|
+
it "should append '(Default: ...)' to the desc Array" do
|
338
|
+
expect(subject.desc).to eq([*desc, "(Default: #{default})"])
|
339
|
+
end
|
340
|
+
end
|
341
|
+
end
|
296
342
|
end
|
297
343
|
end
|
data/spec/options/parser_spec.rb
CHANGED
@@ -34,16 +34,6 @@ describe CommandKit::Options::Parser do
|
|
34
34
|
expect(subject.option_parser.banner).to eq("Usage: #{subject.usage}")
|
35
35
|
end
|
36
36
|
|
37
|
-
it "must include a 'Options:' separator" do
|
38
|
-
expect(subject.option_parser.to_s).to include(
|
39
|
-
[
|
40
|
-
'',
|
41
|
-
'Options:',
|
42
|
-
''
|
43
|
-
].join($/)
|
44
|
-
)
|
45
|
-
end
|
46
|
-
|
47
37
|
it "must define a default --help option" do
|
48
38
|
expect(subject.option_parser.to_s).to include(
|
49
39
|
[
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'command_kit/options/quiet'
|
3
|
+
|
4
|
+
describe CommandKit::Options::Quiet do
|
5
|
+
module TestOptionsQuiet
|
6
|
+
class TestCommand
|
7
|
+
include CommandKit::Options::Quiet
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
let(:command_class) { TestOptionsQuiet::TestCommand }
|
12
|
+
|
13
|
+
describe ".included" do
|
14
|
+
subject { command_class }
|
15
|
+
|
16
|
+
it "must include CommandKit::Options" do
|
17
|
+
expect(subject).to include(CommandKit::Options)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "must define a quiet option" do
|
21
|
+
expect(subject.options[:quiet]).to_not be(nil)
|
22
|
+
expect(subject.options[:quiet].short).to eq('-q')
|
23
|
+
expect(subject.options[:quiet].long).to eq('--quiet')
|
24
|
+
expect(subject.options[:quiet].desc).to eq('Enables quiet output')
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
subject { command_class.new }
|
29
|
+
|
30
|
+
describe "#quiet?" do
|
31
|
+
context "when @quiet is true" do
|
32
|
+
before do
|
33
|
+
subject.instance_variable_set('@quiet',true)
|
34
|
+
end
|
35
|
+
|
36
|
+
it "must return true" do
|
37
|
+
expect(subject.quiet?).to be(true)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context "when @quiet is false" do
|
42
|
+
before do
|
43
|
+
subject.instance_variable_set('@quiet',false)
|
44
|
+
end
|
45
|
+
|
46
|
+
it "must return false" do
|
47
|
+
expect(subject.quiet?).to be(false)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'command_kit/options/verbose'
|
3
|
+
|
4
|
+
describe CommandKit::Options::Verbose do
|
5
|
+
module TestOptionsVerbose
|
6
|
+
class TestCommand
|
7
|
+
include CommandKit::Options::Verbose
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
let(:command_class) { TestOptionsVerbose::TestCommand }
|
12
|
+
|
13
|
+
describe ".included" do
|
14
|
+
subject { command_class }
|
15
|
+
|
16
|
+
it "must include CommandKit::Options" do
|
17
|
+
expect(subject).to include(CommandKit::Options)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "must define a verbose option" do
|
21
|
+
expect(subject.options[:verbose]).to_not be(nil)
|
22
|
+
expect(subject.options[:verbose].short).to eq('-v')
|
23
|
+
expect(subject.options[:verbose].long).to eq('--verbose')
|
24
|
+
expect(subject.options[:verbose].desc).to eq('Enables verbose output')
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
subject { command_class.new }
|
29
|
+
|
30
|
+
describe "#verbose?" do
|
31
|
+
context "when @verbose is true" do
|
32
|
+
before do
|
33
|
+
subject.instance_variable_set('@verbose',true)
|
34
|
+
end
|
35
|
+
|
36
|
+
it "must return true" do
|
37
|
+
expect(subject.verbose?).to be(true)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context "when @verbose is false" do
|
42
|
+
before do
|
43
|
+
subject.instance_variable_set('@verbose',false)
|
44
|
+
end
|
45
|
+
|
46
|
+
it "must return false" do
|
47
|
+
expect(subject.verbose?).to be(false)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,146 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'command_kit/options/version'
|
3
|
+
|
4
|
+
require 'stringio'
|
5
|
+
|
6
|
+
describe CommandKit::Options::Version do
|
7
|
+
module TestOptionsVersion
|
8
|
+
class TestCommandWithoutVersion
|
9
|
+
|
10
|
+
include CommandKit::Options::Version
|
11
|
+
|
12
|
+
command_name 'test'
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
class TestCommandWithVersion
|
17
|
+
|
18
|
+
include CommandKit::Options::Version
|
19
|
+
|
20
|
+
command_name 'test'
|
21
|
+
version '0.1.0'
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe ".included" do
|
27
|
+
subject { TestOptionsVersion::TestCommandWithVersion }
|
28
|
+
|
29
|
+
it "must include CommandKit::Options" do
|
30
|
+
expect(subject).to include(CommandKit::Options)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe ".version" do
|
35
|
+
context "when no .version has been previously set" do
|
36
|
+
subject { TestOptionsVersion::TestCommandWithoutVersion }
|
37
|
+
|
38
|
+
it "must return nil" do
|
39
|
+
expect(subject.version).to be(nil)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
context "when a .version has been set" do
|
44
|
+
subject { TestOptionsVersion::TestCommandWithVersion }
|
45
|
+
|
46
|
+
it "must return the set version" do
|
47
|
+
expect(subject.version).to eq('0.1.0')
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
context "when the command class inherites from another class" do
|
52
|
+
context "but no version are defined" do
|
53
|
+
module TestOptionsVersion
|
54
|
+
class InheritedCommandWithoutVersion < TestCommandWithoutVersion
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
subject { TestOptionsVersion::InheritedCommandWithoutVersion }
|
59
|
+
|
60
|
+
it "must return nil" do
|
61
|
+
expect(subject.version).to be(nil)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
context "when the superclass defines the version" do
|
66
|
+
module TestOptionsVersion
|
67
|
+
class InheritedCommandWithInheritedVersion < TestCommandWithVersion
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
let(:super_class) { TestOptionsVersion::TestCommandWithVersion }
|
72
|
+
subject { TestOptionsVersion::InheritedCommandWithInheritedVersion }
|
73
|
+
|
74
|
+
it "must return the version defined in the superclass" do
|
75
|
+
expect(subject.version).to eq(super_class.version)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
context "when the subclass defines the version" do
|
80
|
+
module TestOptionsVersion
|
81
|
+
class InheritedCommandWithOwnVersion < TestCommandWithoutVersion
|
82
|
+
|
83
|
+
version '0.1.0'
|
84
|
+
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
let(:super_subject) { TestOptionsVersion::TestCommandWithoutVersion }
|
89
|
+
subject { TestOptionsVersion::InheritedCommandWithOwnVersion }
|
90
|
+
|
91
|
+
it "must return the version set in the subclass" do
|
92
|
+
expect(subject.version).to eq('0.1.0')
|
93
|
+
end
|
94
|
+
|
95
|
+
it "must not change the superclass'es version" do
|
96
|
+
expect(super_subject.version).to be(nil)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
context "when subclass overrides the superclass's version" do
|
101
|
+
module TestOptionsVersion
|
102
|
+
class InheritedCommandThatOverridesVersion < TestCommandWithVersion
|
103
|
+
|
104
|
+
version '0.2.0'
|
105
|
+
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
let(:super_subject) { TestOptionsVersion::TestCommandWithVersion }
|
110
|
+
subject { TestOptionsVersion::InheritedCommandThatOverridesVersion }
|
111
|
+
|
112
|
+
it "must return the version set in the subclass" do
|
113
|
+
expect(subject.version).to eq('0.2.0')
|
114
|
+
end
|
115
|
+
|
116
|
+
it "must not change the superclass'es version" do
|
117
|
+
expect(super_subject.version).to eq('0.1.0')
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
let(:command_class) { TestOptionsVersion::TestCommandWithVersion }
|
124
|
+
|
125
|
+
subject { command_class.new }
|
126
|
+
|
127
|
+
describe "#version" do
|
128
|
+
it "must return the class'es .version value" do
|
129
|
+
expect(subject.version).to eq(command_class.version)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
describe "#print_version" do
|
134
|
+
let(:stdout) { StringIO.new }
|
135
|
+
|
136
|
+
subject { command_class.new(stdout: stdout) }
|
137
|
+
|
138
|
+
it "must print the #command_name and #version" do
|
139
|
+
subject.print_version
|
140
|
+
|
141
|
+
expect(stdout.string).to eq(
|
142
|
+
"#{subject.command_name} #{subject.version}#{$/}"
|
143
|
+
)
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
data/spec/options_spec.rb
CHANGED
@@ -415,5 +415,51 @@ describe CommandKit::Options do
|
|
415
415
|
].join($/)
|
416
416
|
).to_stdout
|
417
417
|
end
|
418
|
+
|
419
|
+
context "but when the options are have categories" do
|
420
|
+
module TestOptions
|
421
|
+
class TestCommandWithOptionsAndCategories
|
422
|
+
|
423
|
+
include CommandKit::Options
|
424
|
+
|
425
|
+
option :opt1, short: '-a',
|
426
|
+
desc: "Option 1"
|
427
|
+
option :opt2, short: '-b',
|
428
|
+
desc: "Option 2"
|
429
|
+
|
430
|
+
option :opt3, short: '-c',
|
431
|
+
desc: "Option 3",
|
432
|
+
category: 'Other Options'
|
433
|
+
option :opt4, short: '-d',
|
434
|
+
desc: "Option 4",
|
435
|
+
category: 'Other Options'
|
436
|
+
end
|
437
|
+
end
|
438
|
+
|
439
|
+
let(:command_class) { TestOptions::TestCommandWithOptionsAndCategories }
|
440
|
+
|
441
|
+
let(:option1) { command_class.options[:opt1] }
|
442
|
+
let(:option2) { command_class.options[:opt2] }
|
443
|
+
let(:option3) { command_class.options[:opt3] }
|
444
|
+
let(:option4) { command_class.options[:opt4] }
|
445
|
+
|
446
|
+
it "must group the options by category" do
|
447
|
+
expect { subject.help }.to output(
|
448
|
+
[
|
449
|
+
"Usage: #{subject.usage}",
|
450
|
+
'',
|
451
|
+
'Other Options:',
|
452
|
+
" #{option3.usage.join(', ').ljust(33 - 1)} #{option3.desc}",
|
453
|
+
" #{option4.usage.join(', ').ljust(33 - 1)} #{option4.desc}",
|
454
|
+
'',
|
455
|
+
'Options:',
|
456
|
+
" #{option1.usage.join(', ').ljust(33 - 1)} #{option1.desc}",
|
457
|
+
" #{option2.usage.join(', ').ljust(33 - 1)} #{option2.desc}",
|
458
|
+
' -h, --help Print help information',
|
459
|
+
''
|
460
|
+
].join($/)
|
461
|
+
).to_stdout
|
462
|
+
end
|
463
|
+
end
|
418
464
|
end
|
419
465
|
end
|
data/spec/pager_spec.rb
CHANGED
@@ -26,7 +26,7 @@ describe CommandKit::Pager do
|
|
26
26
|
|
27
27
|
context "when the PAGER env variable is not set" do
|
28
28
|
context "but the PATH env variable is" do
|
29
|
-
subject { command_class.new(env: {'PATH' => ENV
|
29
|
+
subject { command_class.new(env: {'PATH' => ENV.fetch('PATH')}) }
|
30
30
|
|
31
31
|
it "must search PATH for one of the pagers" do
|
32
32
|
expect(subject.instance_variable_get('@pager_command')).to eq("less -r")
|