command_kit 0.4.0 → 0.5.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 +2 -0
- data/.rubocop.yml +3 -0
- data/ChangeLog.md +18 -0
- data/LICENSE.txt +1 -1
- data/README.md +4 -1
- data/command_kit.gemspec +7 -2
- data/examples/subcommands/cli/config/get.rb +47 -0
- data/examples/subcommands/cli/config/set.rb +44 -0
- data/examples/subcommands/cli/config.rb +23 -0
- data/examples/subcommands/cli/list.rb +35 -0
- data/examples/subcommands/cli/update.rb +47 -0
- data/examples/subcommands/cli.rb +55 -0
- data/lib/command_kit/completion/install.rb +276 -0
- data/lib/command_kit/env/home.rb +1 -1
- data/lib/command_kit/env/prefix.rb +41 -0
- data/lib/command_kit/env/shell.rb +58 -0
- data/lib/command_kit/inflector.rb +1 -1
- data/lib/command_kit/options/parser.rb +1 -1
- data/lib/command_kit/os/linux.rb +1 -1
- data/lib/command_kit/os.rb +1 -1
- data/lib/command_kit/printing/tables/table_formatter.rb +2 -2
- data/lib/command_kit/version.rb +1 -1
- data/lib/command_kit/xdg.rb +1 -1
- metadata +12 -66
- data/spec/arguments/argument_spec.rb +0 -133
- data/spec/arguments/argument_value_spec.rb +0 -66
- data/spec/arguments_spec.rb +0 -279
- data/spec/bug_report_spec.rb +0 -266
- data/spec/colors_spec.rb +0 -771
- data/spec/command_kit_spec.rb +0 -8
- data/spec/command_name_spec.rb +0 -130
- data/spec/command_spec.rb +0 -123
- data/spec/commands/auto_load/subcommand_spec.rb +0 -82
- data/spec/commands/auto_load_spec.rb +0 -159
- data/spec/commands/auto_require_spec.rb +0 -142
- data/spec/commands/fixtures/test_auto_load/cli/commands/test1.rb +0 -10
- data/spec/commands/fixtures/test_auto_load/cli/commands/test2.rb +0 -10
- data/spec/commands/fixtures/test_auto_require/lib/test_auto_require/cli/commands/test1.rb +0 -10
- data/spec/commands/help_spec.rb +0 -66
- data/spec/commands/parent_command_spec.rb +0 -40
- data/spec/commands/subcommand_spec.rb +0 -99
- data/spec/commands_spec.rb +0 -839
- data/spec/description_spec.rb +0 -179
- data/spec/edit_spec.rb +0 -72
- data/spec/env/home_spec.rb +0 -46
- data/spec/env/path_spec.rb +0 -84
- data/spec/env_spec.rb +0 -123
- data/spec/examples_spec.rb +0 -211
- data/spec/exception_handler_spec.rb +0 -103
- data/spec/file_utils_spec.rb +0 -59
- data/spec/fixtures/template.erb +0 -5
- data/spec/help/man_spec.rb +0 -345
- data/spec/help_spec.rb +0 -94
- data/spec/inflector_spec.rb +0 -166
- data/spec/interactive_spec.rb +0 -415
- data/spec/main_spec.rb +0 -179
- data/spec/man_spec.rb +0 -46
- data/spec/open_app_spec.rb +0 -85
- data/spec/options/option_spec.rb +0 -343
- data/spec/options/option_value_spec.rb +0 -171
- data/spec/options/parser_spec.rb +0 -255
- data/spec/options/quiet_spec.rb +0 -51
- data/spec/options/verbose_spec.rb +0 -51
- data/spec/options/version_spec.rb +0 -146
- data/spec/options_spec.rb +0 -465
- data/spec/os/linux_spec.rb +0 -164
- data/spec/os_spec.rb +0 -233
- data/spec/package_manager_spec.rb +0 -806
- data/spec/pager_spec.rb +0 -217
- data/spec/printing/fields_spec.rb +0 -167
- data/spec/printing/indent_spec.rb +0 -132
- data/spec/printing/lists_spec.rb +0 -99
- data/spec/printing/tables/border_style.rb +0 -43
- data/spec/printing/tables/cell_builer_spec.rb +0 -135
- data/spec/printing/tables/row_builder_spec.rb +0 -165
- data/spec/printing/tables/style_spec.rb +0 -377
- data/spec/printing/tables/table_builder_spec.rb +0 -252
- data/spec/printing/tables/table_formatter_spec.rb +0 -1180
- data/spec/printing/tables_spec.rb +0 -1069
- data/spec/printing_spec.rb +0 -106
- data/spec/program_name_spec.rb +0 -70
- data/spec/spec_helper.rb +0 -3
- data/spec/stdio_spec.rb +0 -264
- data/spec/sudo_spec.rb +0 -51
- data/spec/terminal_spec.rb +0 -231
- data/spec/usage_spec.rb +0 -237
- data/spec/xdg_spec.rb +0 -191
@@ -1,252 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'command_kit/printing/tables/table_builder'
|
3
|
-
|
4
|
-
describe CommandKit::Printing::Tables::TableBuilder do
|
5
|
-
it { expect(described_class).to include(Enumerable) }
|
6
|
-
|
7
|
-
describe "#initialize" do
|
8
|
-
it "must initialize #rows to an empty Array" do
|
9
|
-
expect(subject.rows).to eq([])
|
10
|
-
end
|
11
|
-
|
12
|
-
it "must default #height to 0" do
|
13
|
-
expect(subject.height).to eq(0)
|
14
|
-
end
|
15
|
-
|
16
|
-
it "must default #width to 0" do
|
17
|
-
expect(subject.width).to eq(0)
|
18
|
-
end
|
19
|
-
|
20
|
-
it "must iniitialize #column_widths to an empty Array" do
|
21
|
-
expect(subject.column_widths).to eq([])
|
22
|
-
end
|
23
|
-
|
24
|
-
it "must default #max_columns to 0" do
|
25
|
-
expect(subject.max_columns).to eq(0)
|
26
|
-
end
|
27
|
-
|
28
|
-
it "must default #max_rows to 0" do
|
29
|
-
expect(subject.max_rows).to eq(0)
|
30
|
-
end
|
31
|
-
|
32
|
-
context "when given initial rows" do
|
33
|
-
let(:row1) { %w[foo bar] }
|
34
|
-
let(:row2) { %w[baz qux] }
|
35
|
-
let(:rows) { [row1, row2] }
|
36
|
-
|
37
|
-
subject { described_class.new(rows) }
|
38
|
-
|
39
|
-
it "must append the rows to the table" do
|
40
|
-
expect(subject.rows[0]).to be_kind_of(CommandKit::Printing::Tables::RowBuilder)
|
41
|
-
expect(subject.rows[0].cells[0].lines[0]).to eq(row1[0])
|
42
|
-
expect(subject.rows[0].cells[1].lines[0]).to eq(row1[1])
|
43
|
-
|
44
|
-
expect(subject.rows[1]).to be_kind_of(CommandKit::Printing::Tables::RowBuilder)
|
45
|
-
expect(subject.rows[1].cells[0].lines[0]).to eq(row2[0])
|
46
|
-
expect(subject.rows[1].cells[1].lines[0]).to eq(row2[1])
|
47
|
-
end
|
48
|
-
|
49
|
-
context "and when given the header: keyword argument" do
|
50
|
-
let(:header) { %w[A B] }
|
51
|
-
|
52
|
-
subject { described_class.new(rows, header: header) }
|
53
|
-
|
54
|
-
it "must append the header: value before the rows" do
|
55
|
-
expect(subject.rows[0]).to be_kind_of(CommandKit::Printing::Tables::RowBuilder)
|
56
|
-
expect(subject.rows[0].cells[0].lines[0]).to eq(header[0])
|
57
|
-
expect(subject.rows[0].cells[1].lines[0]).to eq(header[1])
|
58
|
-
|
59
|
-
expect(subject.rows[1]).to be_kind_of(CommandKit::Printing::Tables::RowBuilder)
|
60
|
-
expect(subject.rows[1].cells[0].lines[0]).to eq(row1[0])
|
61
|
-
expect(subject.rows[1].cells[1].lines[0]).to eq(row1[1])
|
62
|
-
|
63
|
-
expect(subject.rows[2]).to be_kind_of(CommandKit::Printing::Tables::RowBuilder)
|
64
|
-
expect(subject.rows[2].cells[0].lines[0]).to eq(row2[0])
|
65
|
-
expect(subject.rows[2].cells[1].lines[0]).to eq(row2[1])
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
describe "#header?" do
|
72
|
-
let(:header) { %w[A B] }
|
73
|
-
let(:rows) do
|
74
|
-
[
|
75
|
-
%w[foo bar],
|
76
|
-
%w[baz qux]
|
77
|
-
]
|
78
|
-
end
|
79
|
-
|
80
|
-
context "when initialized with the header: keyword argument" do
|
81
|
-
subject { described_class.new(rows, header: header) }
|
82
|
-
|
83
|
-
it "must return true" do
|
84
|
-
expect(subject.header?).to be(true)
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
context "when not initialized with the header: keyword argument" do
|
89
|
-
it "must return false" do
|
90
|
-
expect(subject.header?).to be(false)
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
describe "#<<" do
|
96
|
-
let(:row) { %w[foo bar] }
|
97
|
-
|
98
|
-
it "must append a new CommandKit::Printing::Tables::RowBuilder object to #rows" do
|
99
|
-
subject << row
|
100
|
-
|
101
|
-
expect(subject.rows.last).to be_kind_of(CommandKit::Printing::Tables::RowBuilder)
|
102
|
-
expect(subject.rows.last.cells[0].lines[0]).to eq(row[0])
|
103
|
-
expect(subject.rows.last.cells[1].lines[0]).to eq(row[1])
|
104
|
-
end
|
105
|
-
|
106
|
-
it "must increment #max_rows by 1" do
|
107
|
-
expect(subject.max_rows).to eq(0)
|
108
|
-
|
109
|
-
subject << row
|
110
|
-
expect(subject.max_rows).to eq(1)
|
111
|
-
|
112
|
-
subject << row
|
113
|
-
expect(subject.max_rows).to eq(2)
|
114
|
-
end
|
115
|
-
|
116
|
-
it "must return self" do
|
117
|
-
expect(subject << row).to be(subject)
|
118
|
-
end
|
119
|
-
|
120
|
-
context "when the row does contain any multi-line Strings" do
|
121
|
-
let(:row1) { %w[foo bar] }
|
122
|
-
let(:row2) { ["foo", "bar\nbaz"] }
|
123
|
-
|
124
|
-
it "must increase #height by the line height of the new row" do
|
125
|
-
expect(subject.height).to eq(0)
|
126
|
-
|
127
|
-
subject << row1
|
128
|
-
expect(subject.height).to eq(subject.rows.first.height)
|
129
|
-
|
130
|
-
subject << row2
|
131
|
-
expect(subject.height).to eq(
|
132
|
-
subject.rows[0].height + subject.rows[1].height
|
133
|
-
)
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
context "when the row does not contain any multi-line Strings" do
|
138
|
-
let(:row1) { %w[foo bar] }
|
139
|
-
let(:row2) { %w[baz qux] }
|
140
|
-
|
141
|
-
it "must increase #height by 1" do
|
142
|
-
expect(subject.height).to eq(0)
|
143
|
-
|
144
|
-
subject << row1
|
145
|
-
expect(subject.height).to eq(1)
|
146
|
-
|
147
|
-
subject << row2
|
148
|
-
expect(subject.height).to eq(2)
|
149
|
-
end
|
150
|
-
end
|
151
|
-
|
152
|
-
context "when the row contains more characters than the current #width" do
|
153
|
-
let(:row1) { %w[foo bar] }
|
154
|
-
let(:row2) { %w[foo barAAAAAAAA] }
|
155
|
-
|
156
|
-
it "must update #width to the new row's width" do
|
157
|
-
expect(subject.width).to eq(0)
|
158
|
-
|
159
|
-
subject << row1
|
160
|
-
expect(subject.width).to eq(subject.rows[0].width)
|
161
|
-
|
162
|
-
subject << row2
|
163
|
-
expect(subject.width).to eq(subject.rows[1].width)
|
164
|
-
end
|
165
|
-
end
|
166
|
-
|
167
|
-
context "when the row does not contains more characters than #width" do
|
168
|
-
let(:row1) { %w[foo bar] }
|
169
|
-
let(:row2) { %w[foo bar] }
|
170
|
-
|
171
|
-
it "must not update #width" do
|
172
|
-
expect(subject.width).to eq(0)
|
173
|
-
|
174
|
-
subject << row1
|
175
|
-
expect(subject.width).to eq(subject.rows[0].width)
|
176
|
-
|
177
|
-
subject << row2
|
178
|
-
expect(subject.width).to eq(subject.rows[0].width)
|
179
|
-
end
|
180
|
-
end
|
181
|
-
|
182
|
-
context "when the row contains more columns than the current #max_columns" do
|
183
|
-
let(:row1) { %w[foo bar] }
|
184
|
-
let(:row2) { %w[foo bar qux] }
|
185
|
-
|
186
|
-
it "must update #max_columns to the new row's #columns" do
|
187
|
-
expect(subject.max_columns).to eq(0)
|
188
|
-
|
189
|
-
subject << row1
|
190
|
-
expect(subject.max_columns).to eq(subject.rows[0].columns)
|
191
|
-
|
192
|
-
subject << row2
|
193
|
-
expect(subject.max_columns).to eq(subject.rows[1].columns)
|
194
|
-
end
|
195
|
-
end
|
196
|
-
|
197
|
-
context "when the row does not contain more columns than the current #max_columns" do
|
198
|
-
let(:row1) { %w[foo bar] }
|
199
|
-
let(:row2) { %w[foo bar] }
|
200
|
-
|
201
|
-
it "must not update #max_columns" do
|
202
|
-
expect(subject.max_columns).to eq(0)
|
203
|
-
|
204
|
-
subject << row1
|
205
|
-
expect(subject.max_columns).to eq(subject.rows[0].columns)
|
206
|
-
|
207
|
-
subject << row2
|
208
|
-
expect(subject.max_columns).to eq(subject.rows[0].columns)
|
209
|
-
end
|
210
|
-
end
|
211
|
-
end
|
212
|
-
|
213
|
-
describe "#[]" do
|
214
|
-
context "when the row index is within the bounds of #rows" do
|
215
|
-
before do
|
216
|
-
subject << %w[foo bar]
|
217
|
-
subject << %w[baz qux]
|
218
|
-
end
|
219
|
-
|
220
|
-
it "must return the row at the given index" do
|
221
|
-
expect(subject[1]).to be(subject.rows[1])
|
222
|
-
end
|
223
|
-
end
|
224
|
-
|
225
|
-
context "when the row index is not within the bounds of #rows" do
|
226
|
-
it "must return nil" do
|
227
|
-
expect(subject[2]).to be(nil)
|
228
|
-
end
|
229
|
-
end
|
230
|
-
end
|
231
|
-
|
232
|
-
describe "#each" do
|
233
|
-
before do
|
234
|
-
subject << %w[foo bar]
|
235
|
-
subject << %w[baz qux]
|
236
|
-
end
|
237
|
-
|
238
|
-
context "when given a block" do
|
239
|
-
it "must yield each row in #rows" do
|
240
|
-
expect { |b|
|
241
|
-
subject.each(&b)
|
242
|
-
}.to yield_successive_args(*subject.rows)
|
243
|
-
end
|
244
|
-
end
|
245
|
-
|
246
|
-
context "when no block is given" do
|
247
|
-
it "must return an Enumerator for #rows" do
|
248
|
-
expect(subject.each.to_a).to eq(subject.rows)
|
249
|
-
end
|
250
|
-
end
|
251
|
-
end
|
252
|
-
end
|