command_kit 0.4.1 → 0.5.1

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.
Files changed (131) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +1 -1
  3. data/.rubocop.yml +7 -1
  4. data/ChangeLog.md +11 -0
  5. data/Gemfile +2 -0
  6. data/README.md +3 -0
  7. data/Rakefile +2 -0
  8. data/command_kit.gemspec +8 -6
  9. data/lib/command_kit/arguments/argument.rb +3 -1
  10. data/lib/command_kit/arguments/argument_value.rb +2 -0
  11. data/lib/command_kit/arguments.rb +5 -5
  12. data/lib/command_kit/bug_report.rb +4 -2
  13. data/lib/command_kit/colors.rb +2 -2
  14. data/lib/command_kit/command.rb +13 -11
  15. data/lib/command_kit/command_name.rb +3 -1
  16. data/lib/command_kit/commands/auto_load/subcommand.rb +3 -1
  17. data/lib/command_kit/commands/auto_load.rb +3 -3
  18. data/lib/command_kit/commands/auto_require.rb +5 -3
  19. data/lib/command_kit/commands/command.rb +4 -2
  20. data/lib/command_kit/commands/help.rb +2 -2
  21. data/lib/command_kit/commands/parent_command.rb +2 -0
  22. data/lib/command_kit/commands/subcommand.rb +2 -0
  23. data/lib/command_kit/commands.rb +8 -8
  24. data/lib/command_kit/completion/install.rb +277 -0
  25. data/lib/command_kit/description.rb +3 -1
  26. data/lib/command_kit/edit.rb +1 -1
  27. data/lib/command_kit/env/home.rb +1 -1
  28. data/lib/command_kit/env/path.rb +1 -1
  29. data/lib/command_kit/env/prefix.rb +41 -0
  30. data/lib/command_kit/env/shell.rb +58 -0
  31. data/lib/command_kit/env.rb +2 -0
  32. data/lib/command_kit/examples.rb +4 -2
  33. data/lib/command_kit/exception_handler.rb +4 -2
  34. data/lib/command_kit/file_utils.rb +2 -0
  35. data/lib/command_kit/help/man.rb +4 -4
  36. data/lib/command_kit/help.rb +2 -0
  37. data/lib/command_kit/interactive.rb +1 -1
  38. data/lib/command_kit/main.rb +2 -0
  39. data/lib/command_kit/open_app.rb +4 -2
  40. data/lib/command_kit/options/option.rb +3 -1
  41. data/lib/command_kit/options/option_value.rb +2 -2
  42. data/lib/command_kit/options/parser.rb +3 -3
  43. data/lib/command_kit/options/quiet.rb +3 -1
  44. data/lib/command_kit/options/verbose.rb +3 -1
  45. data/lib/command_kit/options/version.rb +3 -1
  46. data/lib/command_kit/options.rb +5 -3
  47. data/lib/command_kit/os/linux.rb +3 -1
  48. data/lib/command_kit/os.rb +2 -0
  49. data/lib/command_kit/package_manager.rb +6 -4
  50. data/lib/command_kit/pager.rb +4 -4
  51. data/lib/command_kit/printing/fields.rb +3 -1
  52. data/lib/command_kit/printing/indent.rb +2 -0
  53. data/lib/command_kit/printing/lists.rb +1 -1
  54. data/lib/command_kit/printing/tables/border_style.rb +2 -0
  55. data/lib/command_kit/printing/tables/row_builder.rb +3 -1
  56. data/lib/command_kit/printing/tables/style.rb +1 -1
  57. data/lib/command_kit/printing/tables/table_builder.rb +3 -1
  58. data/lib/command_kit/printing/tables.rb +4 -4
  59. data/lib/command_kit/printing.rb +1 -1
  60. data/lib/command_kit/program_name.rb +2 -0
  61. data/lib/command_kit/stdio.rb +2 -0
  62. data/lib/command_kit/sudo.rb +1 -1
  63. data/lib/command_kit/terminal.rb +4 -2
  64. data/lib/command_kit/usage.rb +4 -2
  65. data/lib/command_kit/version.rb +3 -1
  66. data/lib/command_kit/xdg.rb +4 -2
  67. data/lib/command_kit.rb +4 -2
  68. metadata +5 -65
  69. data/spec/arguments/argument_spec.rb +0 -133
  70. data/spec/arguments/argument_value_spec.rb +0 -66
  71. data/spec/arguments_spec.rb +0 -279
  72. data/spec/bug_report_spec.rb +0 -266
  73. data/spec/colors_spec.rb +0 -771
  74. data/spec/command_kit_spec.rb +0 -8
  75. data/spec/command_name_spec.rb +0 -130
  76. data/spec/command_spec.rb +0 -123
  77. data/spec/commands/auto_load/subcommand_spec.rb +0 -82
  78. data/spec/commands/auto_load_spec.rb +0 -159
  79. data/spec/commands/auto_require_spec.rb +0 -142
  80. data/spec/commands/fixtures/test_auto_load/cli/commands/test1.rb +0 -10
  81. data/spec/commands/fixtures/test_auto_load/cli/commands/test2.rb +0 -10
  82. data/spec/commands/fixtures/test_auto_require/lib/test_auto_require/cli/commands/test1.rb +0 -10
  83. data/spec/commands/help_spec.rb +0 -66
  84. data/spec/commands/parent_command_spec.rb +0 -40
  85. data/spec/commands/subcommand_spec.rb +0 -99
  86. data/spec/commands_spec.rb +0 -865
  87. data/spec/description_spec.rb +0 -179
  88. data/spec/edit_spec.rb +0 -72
  89. data/spec/env/home_spec.rb +0 -46
  90. data/spec/env/path_spec.rb +0 -84
  91. data/spec/env_spec.rb +0 -123
  92. data/spec/examples_spec.rb +0 -211
  93. data/spec/exception_handler_spec.rb +0 -103
  94. data/spec/file_utils_spec.rb +0 -59
  95. data/spec/fixtures/template.erb +0 -5
  96. data/spec/help/man_spec.rb +0 -345
  97. data/spec/help_spec.rb +0 -94
  98. data/spec/inflector_spec.rb +0 -166
  99. data/spec/interactive_spec.rb +0 -415
  100. data/spec/main_spec.rb +0 -179
  101. data/spec/man_spec.rb +0 -46
  102. data/spec/open_app_spec.rb +0 -85
  103. data/spec/options/option_spec.rb +0 -343
  104. data/spec/options/option_value_spec.rb +0 -171
  105. data/spec/options/parser_spec.rb +0 -274
  106. data/spec/options/quiet_spec.rb +0 -51
  107. data/spec/options/verbose_spec.rb +0 -51
  108. data/spec/options/version_spec.rb +0 -146
  109. data/spec/options_spec.rb +0 -465
  110. data/spec/os/linux_spec.rb +0 -164
  111. data/spec/os_spec.rb +0 -233
  112. data/spec/package_manager_spec.rb +0 -806
  113. data/spec/pager_spec.rb +0 -217
  114. data/spec/printing/fields_spec.rb +0 -167
  115. data/spec/printing/indent_spec.rb +0 -132
  116. data/spec/printing/lists_spec.rb +0 -99
  117. data/spec/printing/tables/border_style.rb +0 -43
  118. data/spec/printing/tables/cell_builer_spec.rb +0 -135
  119. data/spec/printing/tables/row_builder_spec.rb +0 -165
  120. data/spec/printing/tables/style_spec.rb +0 -377
  121. data/spec/printing/tables/table_builder_spec.rb +0 -252
  122. data/spec/printing/tables/table_formatter_spec.rb +0 -1190
  123. data/spec/printing/tables_spec.rb +0 -1069
  124. data/spec/printing_spec.rb +0 -106
  125. data/spec/program_name_spec.rb +0 -70
  126. data/spec/spec_helper.rb +0 -3
  127. data/spec/stdio_spec.rb +0 -264
  128. data/spec/sudo_spec.rb +0 -51
  129. data/spec/terminal_spec.rb +0 -231
  130. data/spec/usage_spec.rb +0 -237
  131. data/spec/xdg_spec.rb +0 -191
data/spec/os_spec.rb DELETED
@@ -1,233 +0,0 @@
1
- require 'spec_helper'
2
- require 'command_kit/os'
3
-
4
- describe CommandKit::OS do
5
- module TestOS
6
- class TestCommand
7
- include CommandKit::OS
8
- end
9
- end
10
-
11
- let(:command_class) { TestOS::TestCommand }
12
- subject { command_class.new }
13
-
14
- describe ".os" do
15
- subject { command_class }
16
-
17
- context "when RUBY_PLATFORM contains 'linux'" do
18
- before { stub_const('RUBY_PLATFORM','x86_64-linux') }
19
-
20
- it { expect(subject.os).to be(:linux) }
21
- end
22
-
23
- context "when RUBY_PLATFORM contains 'darwin'" do
24
- before { stub_const('RUBY_PLATFORM','aarch64-darwin') }
25
-
26
- it { expect(subject.os).to be(:macos) }
27
- end
28
-
29
- context "when RUBY_PLATFORM contains 'freebsd'" do
30
- before { stub_const('RUBY_PLATFORM','x86_64-freebsd') }
31
-
32
- it { expect(subject.os).to be(:freebsd) }
33
- end
34
-
35
- context "when RUBY_PLATFORM contains 'openbsd'" do
36
- before { stub_const('RUBY_PLATFORM','x86_64-openbsd') }
37
-
38
- it { expect(subject.os).to be(:openbsd) }
39
- end
40
-
41
- context "when RUBY_PLATFORM contains 'netbsd'" do
42
- before { stub_const('RUBY_PLATFORM','x86_64-netbsd') }
43
-
44
- it { expect(subject.os).to be(:netbsd) }
45
- end
46
-
47
- context "when Gem.win_platform? returns true" do
48
- before do
49
- stub_const('RUBY_PLATFORM','x86_64-mswin')
50
-
51
- expect(Gem).to receive(:win_platform?).and_return(true)
52
- end
53
-
54
- it { expect(subject.os).to be(:windows) }
55
- end
56
- end
57
-
58
- describe "#initialize" do
59
- it "must default #os to self.class.os" do
60
- expect(subject.os).to eq(command_class.os)
61
- end
62
-
63
- context "when initialized with the os: keyword" do
64
- let(:os) { :netbsd }
65
-
66
- subject { command_class.new(os: os) }
67
-
68
- it "must set #os" do
69
- expect(subject.os).to eq(os)
70
- end
71
- end
72
- end
73
-
74
- describe "#linux?" do
75
- context "when #os is :linux" do
76
- subject { command_class.new(os: :linux) }
77
-
78
- it { expect(subject.linux?).to be(true) }
79
- end
80
-
81
- context "when #os is not :linux" do
82
- subject { command_class.new(os: :windows) }
83
-
84
- it { expect(subject.linux?).to be(false) }
85
- end
86
- end
87
-
88
- describe "#macos?" do
89
- context "when #os is :macos" do
90
- subject { command_class.new(os: :macos) }
91
-
92
- it { expect(subject.macos?).to be(true) }
93
- end
94
-
95
- context "when #os is not :macos" do
96
- subject { command_class.new(os: :windows) }
97
-
98
- it { expect(subject.macos?).to be(false) }
99
- end
100
- end
101
-
102
- describe "#freebsd?" do
103
- context "when #os is :freebsd" do
104
- subject { command_class.new(os: :freebsd) }
105
-
106
- it { expect(subject.freebsd?).to be(true) }
107
- end
108
-
109
- context "when #os is not :freebsd" do
110
- subject { command_class.new(os: :windows) }
111
-
112
- it { expect(subject.freebsd?).to be(false) }
113
- end
114
- end
115
-
116
- describe "#openbsd?" do
117
- context "when #os is :openbsd" do
118
- subject { command_class.new(os: :openbsd) }
119
-
120
- it { expect(subject.openbsd?).to be(true) }
121
- end
122
-
123
- context "when #os is not :openbsd" do
124
- subject { command_class.new(os: :windows) }
125
-
126
- it { expect(subject.openbsd?).to be(false) }
127
- end
128
- end
129
-
130
- describe "#netbsd?" do
131
- context "when #os is :netbsd" do
132
- subject { command_class.new(os: :netbsd) }
133
-
134
- it { expect(subject.netbsd?).to be(true) }
135
- end
136
-
137
- context "when #os is not :netbsd" do
138
- subject { command_class.new(os: :windows) }
139
-
140
- it { expect(subject.netbsd?).to be(false) }
141
- end
142
- end
143
-
144
- describe "#bsd?" do
145
- context "when #os is :freebsd" do
146
- subject { command_class.new(os: :freebsd) }
147
-
148
- it { expect(subject.bsd?).to be(true) }
149
- end
150
-
151
- context "when #os is :openbsd" do
152
- subject { command_class.new(os: :openbsd) }
153
-
154
- it { expect(subject.bsd?).to be(true) }
155
- end
156
-
157
- context "when #os is :netbsd" do
158
- subject { command_class.new(os: :netbsd) }
159
-
160
- it { expect(subject.bsd?).to be(true) }
161
- end
162
-
163
- context "when #os is :macos" do
164
- subject { command_class.new(os: :macos) }
165
-
166
- it { expect(subject.bsd?).to be(false) }
167
- end
168
-
169
- context "when #os is :linux" do
170
- subject { command_class.new(os: :linux) }
171
-
172
- it { expect(subject.bsd?).to be(false) }
173
- end
174
-
175
- context "when #os is :windows" do
176
- subject { command_class.new(os: :windows) }
177
-
178
- it { expect(subject.bsd?).to be(false) }
179
- end
180
- end
181
-
182
- describe "#unix?" do
183
- context "when #os is :freebsd" do
184
- subject { command_class.new(os: :freebsd) }
185
-
186
- it { expect(subject.unix?).to be(true) }
187
- end
188
-
189
- context "when #os is :openbsd" do
190
- subject { command_class.new(os: :openbsd) }
191
-
192
- it { expect(subject.unix?).to be(true) }
193
- end
194
-
195
- context "when #os is :netbsd" do
196
- subject { command_class.new(os: :netbsd) }
197
-
198
- it { expect(subject.unix?).to be(true) }
199
- end
200
-
201
- context "when #os is :macos" do
202
- subject { command_class.new(os: :macos) }
203
-
204
- it { expect(subject.unix?).to be(true) }
205
- end
206
-
207
- context "when #os is :linux" do
208
- subject { command_class.new(os: :linux) }
209
-
210
- it { expect(subject.unix?).to be(true) }
211
- end
212
-
213
- context "when #os is :windows" do
214
- subject { command_class.new(os: :windows) }
215
-
216
- it { expect(subject.unix?).to be(false) }
217
- end
218
- end
219
-
220
- describe "#windows?" do
221
- context "when #os is :windows" do
222
- subject { command_class.new(os: :windows) }
223
-
224
- it { expect(subject.windows?).to be(true) }
225
- end
226
-
227
- context "when #os is not :windows" do
228
- subject { command_class.new(os: :linux) }
229
-
230
- it { expect(subject.windows?).to be(false) }
231
- end
232
- end
233
- end