command_kit 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog.md +6 -0
  3. data/README.md +3 -0
  4. data/command_kit.gemspec +7 -2
  5. data/lib/command_kit/completion/install.rb +276 -0
  6. data/lib/command_kit/env/prefix.rb +41 -0
  7. data/lib/command_kit/env/shell.rb +58 -0
  8. data/lib/command_kit/version.rb +1 -1
  9. metadata +4 -64
  10. data/spec/arguments/argument_spec.rb +0 -133
  11. data/spec/arguments/argument_value_spec.rb +0 -66
  12. data/spec/arguments_spec.rb +0 -279
  13. data/spec/bug_report_spec.rb +0 -266
  14. data/spec/colors_spec.rb +0 -771
  15. data/spec/command_kit_spec.rb +0 -8
  16. data/spec/command_name_spec.rb +0 -130
  17. data/spec/command_spec.rb +0 -123
  18. data/spec/commands/auto_load/subcommand_spec.rb +0 -82
  19. data/spec/commands/auto_load_spec.rb +0 -159
  20. data/spec/commands/auto_require_spec.rb +0 -142
  21. data/spec/commands/fixtures/test_auto_load/cli/commands/test1.rb +0 -10
  22. data/spec/commands/fixtures/test_auto_load/cli/commands/test2.rb +0 -10
  23. data/spec/commands/fixtures/test_auto_require/lib/test_auto_require/cli/commands/test1.rb +0 -10
  24. data/spec/commands/help_spec.rb +0 -66
  25. data/spec/commands/parent_command_spec.rb +0 -40
  26. data/spec/commands/subcommand_spec.rb +0 -99
  27. data/spec/commands_spec.rb +0 -865
  28. data/spec/description_spec.rb +0 -179
  29. data/spec/edit_spec.rb +0 -72
  30. data/spec/env/home_spec.rb +0 -46
  31. data/spec/env/path_spec.rb +0 -84
  32. data/spec/env_spec.rb +0 -123
  33. data/spec/examples_spec.rb +0 -211
  34. data/spec/exception_handler_spec.rb +0 -103
  35. data/spec/file_utils_spec.rb +0 -59
  36. data/spec/fixtures/template.erb +0 -5
  37. data/spec/help/man_spec.rb +0 -345
  38. data/spec/help_spec.rb +0 -94
  39. data/spec/inflector_spec.rb +0 -166
  40. data/spec/interactive_spec.rb +0 -415
  41. data/spec/main_spec.rb +0 -179
  42. data/spec/man_spec.rb +0 -46
  43. data/spec/open_app_spec.rb +0 -85
  44. data/spec/options/option_spec.rb +0 -343
  45. data/spec/options/option_value_spec.rb +0 -171
  46. data/spec/options/parser_spec.rb +0 -274
  47. data/spec/options/quiet_spec.rb +0 -51
  48. data/spec/options/verbose_spec.rb +0 -51
  49. data/spec/options/version_spec.rb +0 -146
  50. data/spec/options_spec.rb +0 -465
  51. data/spec/os/linux_spec.rb +0 -164
  52. data/spec/os_spec.rb +0 -233
  53. data/spec/package_manager_spec.rb +0 -806
  54. data/spec/pager_spec.rb +0 -217
  55. data/spec/printing/fields_spec.rb +0 -167
  56. data/spec/printing/indent_spec.rb +0 -132
  57. data/spec/printing/lists_spec.rb +0 -99
  58. data/spec/printing/tables/border_style.rb +0 -43
  59. data/spec/printing/tables/cell_builer_spec.rb +0 -135
  60. data/spec/printing/tables/row_builder_spec.rb +0 -165
  61. data/spec/printing/tables/style_spec.rb +0 -377
  62. data/spec/printing/tables/table_builder_spec.rb +0 -252
  63. data/spec/printing/tables/table_formatter_spec.rb +0 -1190
  64. data/spec/printing/tables_spec.rb +0 -1069
  65. data/spec/printing_spec.rb +0 -106
  66. data/spec/program_name_spec.rb +0 -70
  67. data/spec/spec_helper.rb +0 -3
  68. data/spec/stdio_spec.rb +0 -264
  69. data/spec/sudo_spec.rb +0 -51
  70. data/spec/terminal_spec.rb +0 -231
  71. data/spec/usage_spec.rb +0 -237
  72. 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