command_kit 0.1.0.pre1 → 0.2.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 +15 -0
- data/.rubocop.yml +138 -0
- data/ChangeLog.md +34 -2
- data/Gemfile +3 -0
- data/README.md +135 -214
- data/Rakefile +3 -2
- data/command_kit.gemspec +4 -4
- data/examples/colors.rb +30 -0
- data/examples/command.rb +65 -0
- data/examples/pager.rb +30 -0
- data/gemspec.yml +10 -2
- data/lib/command_kit/arguments/argument.rb +16 -44
- data/lib/command_kit/arguments/argument_value.rb +3 -30
- data/lib/command_kit/arguments.rb +66 -20
- data/lib/command_kit/colors.rb +253 -45
- data/lib/command_kit/command.rb +50 -3
- data/lib/command_kit/command_name.rb +9 -0
- data/lib/command_kit/commands/auto_load/subcommand.rb +3 -0
- data/lib/command_kit/commands/auto_load.rb +16 -0
- data/lib/command_kit/commands/auto_require.rb +16 -0
- data/lib/command_kit/commands/command.rb +3 -0
- data/lib/command_kit/commands/help.rb +2 -0
- data/lib/command_kit/commands/parent_command.rb +7 -0
- data/lib/command_kit/commands/subcommand.rb +15 -0
- data/lib/command_kit/commands.rb +40 -4
- data/lib/command_kit/description.rb +15 -2
- data/lib/command_kit/env/home.rb +9 -0
- data/lib/command_kit/env/path.rb +15 -0
- data/lib/command_kit/env.rb +4 -0
- data/lib/command_kit/examples.rb +15 -2
- data/lib/command_kit/exception_handler.rb +4 -0
- data/lib/command_kit/help/man.rb +74 -47
- data/lib/command_kit/help.rb +10 -1
- data/lib/command_kit/inflector.rb +49 -17
- data/lib/command_kit/interactive.rb +239 -0
- data/lib/command_kit/main.rb +20 -9
- data/lib/command_kit/man.rb +44 -0
- data/lib/command_kit/open_app.rb +69 -0
- data/lib/command_kit/options/option.rb +36 -9
- data/lib/command_kit/options/option_value.rb +42 -3
- data/lib/command_kit/options/parser.rb +44 -17
- data/lib/command_kit/options/quiet.rb +3 -0
- data/lib/command_kit/options/verbose.rb +5 -0
- data/lib/command_kit/options/version.rb +6 -0
- data/lib/command_kit/options.rb +59 -10
- data/lib/command_kit/os/linux.rb +157 -0
- data/lib/command_kit/os.rb +165 -11
- data/lib/command_kit/package_manager.rb +200 -0
- data/lib/command_kit/pager.rb +84 -9
- data/lib/command_kit/printing/indent.rb +25 -2
- data/lib/command_kit/printing.rb +23 -0
- data/lib/command_kit/program_name.rb +7 -0
- data/lib/command_kit/stdio.rb +24 -0
- data/lib/command_kit/sudo.rb +40 -0
- data/lib/command_kit/terminal.rb +159 -0
- data/lib/command_kit/usage.rb +14 -0
- data/lib/command_kit/version.rb +1 -1
- data/lib/command_kit/xdg.rb +21 -1
- data/lib/command_kit.rb +1 -0
- data/spec/arguments/argument_spec.rb +5 -41
- data/spec/arguments/argument_value_spec.rb +1 -61
- data/spec/arguments_spec.rb +8 -25
- data/spec/colors_spec.rb +277 -13
- data/spec/command_name_spec.rb +1 -1
- data/spec/command_spec.rb +4 -1
- data/spec/commands/auto_load/subcommand_spec.rb +1 -1
- data/spec/commands/auto_load_spec.rb +1 -1
- data/spec/commands/auto_require_spec.rb +2 -2
- data/spec/commands/help_spec.rb +1 -1
- data/spec/commands/parent_command_spec.rb +1 -1
- data/spec/commands/subcommand_spec.rb +1 -1
- data/spec/commands_spec.rb +2 -2
- data/spec/description_spec.rb +1 -25
- data/spec/env/home_spec.rb +1 -1
- data/spec/env/path_spec.rb +1 -1
- data/spec/examples_spec.rb +1 -25
- data/spec/exception_handler_spec.rb +1 -1
- data/spec/help/man_spec.rb +316 -0
- data/spec/help_spec.rb +0 -25
- data/spec/inflector_spec.rb +71 -9
- data/spec/interactive_spec.rb +415 -0
- data/spec/main_spec.rb +7 -7
- data/spec/man_spec.rb +46 -0
- data/spec/open_app_spec.rb +85 -0
- data/spec/options/option_spec.rb +48 -9
- data/spec/options/option_value_spec.rb +53 -4
- data/spec/options_spec.rb +1 -1
- data/spec/os/linux_spec.rb +154 -0
- data/spec/os_spec.rb +201 -14
- data/spec/package_manager_spec.rb +806 -0
- data/spec/pager_spec.rb +78 -15
- data/spec/printing/indent_spec.rb +1 -1
- data/spec/printing_spec.rb +10 -2
- data/spec/program_name_spec.rb +1 -1
- data/spec/spec_helper.rb +0 -3
- data/spec/sudo_spec.rb +51 -0
- data/spec/{console_spec.rb → terminal_spec.rb} +65 -35
- data/spec/usage_spec.rb +2 -2
- data/spec/xdg_spec.rb +1 -1
- metadata +32 -13
- data/lib/command_kit/arguments/usage.rb +0 -6
- data/lib/command_kit/console.rb +0 -141
- data/lib/command_kit/options/usage.rb +0 -6
data/spec/usage_spec.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'command_kit/usage'
|
3
3
|
|
4
|
-
describe Usage do
|
4
|
+
describe CommandKit::Usage do
|
5
5
|
module TestUsage
|
6
6
|
class ImplicitCmd
|
7
7
|
include CommandKit::Usage
|
@@ -182,7 +182,7 @@ describe Usage do
|
|
182
182
|
[
|
183
183
|
"#{subject.command_name} #{command_class.usage[0]}",
|
184
184
|
"#{subject.command_name} #{command_class.usage[1]}",
|
185
|
-
"#{subject.command_name} #{command_class.usage[2]}"
|
185
|
+
"#{subject.command_name} #{command_class.usage[2]}"
|
186
186
|
]
|
187
187
|
)
|
188
188
|
end
|
data/spec/xdg_spec.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: command_kit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Postmodern
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-08-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -25,7 +25,7 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.0'
|
27
27
|
description: A Ruby toolkit for building clean, correct, and robust CLI commands as
|
28
|
-
Ruby classes.
|
28
|
+
plain-old Ruby classes.
|
29
29
|
email: postmodern.mod3@gmail.com
|
30
30
|
executables: []
|
31
31
|
extensions: []
|
@@ -38,6 +38,7 @@ files:
|
|
38
38
|
- ".github/workflows/ruby.yml"
|
39
39
|
- ".gitignore"
|
40
40
|
- ".rspec"
|
41
|
+
- ".rubocop.yml"
|
41
42
|
- ".yardopts"
|
42
43
|
- ChangeLog.md
|
43
44
|
- Gemfile
|
@@ -45,12 +46,14 @@ files:
|
|
45
46
|
- README.md
|
46
47
|
- Rakefile
|
47
48
|
- command_kit.gemspec
|
49
|
+
- examples/colors.rb
|
50
|
+
- examples/command.rb
|
51
|
+
- examples/pager.rb
|
48
52
|
- gemspec.yml
|
49
53
|
- lib/command_kit.rb
|
50
54
|
- lib/command_kit/arguments.rb
|
51
55
|
- lib/command_kit/arguments/argument.rb
|
52
56
|
- lib/command_kit/arguments/argument_value.rb
|
53
|
-
- lib/command_kit/arguments/usage.rb
|
54
57
|
- lib/command_kit/colors.rb
|
55
58
|
- lib/command_kit/command.rb
|
56
59
|
- lib/command_kit/command_name.rb
|
@@ -62,7 +65,6 @@ files:
|
|
62
65
|
- lib/command_kit/commands/help.rb
|
63
66
|
- lib/command_kit/commands/parent_command.rb
|
64
67
|
- lib/command_kit/commands/subcommand.rb
|
65
|
-
- lib/command_kit/console.rb
|
66
68
|
- lib/command_kit/description.rb
|
67
69
|
- lib/command_kit/env.rb
|
68
70
|
- lib/command_kit/env/home.rb
|
@@ -72,21 +74,27 @@ files:
|
|
72
74
|
- lib/command_kit/help.rb
|
73
75
|
- lib/command_kit/help/man.rb
|
74
76
|
- lib/command_kit/inflector.rb
|
77
|
+
- lib/command_kit/interactive.rb
|
75
78
|
- lib/command_kit/main.rb
|
79
|
+
- lib/command_kit/man.rb
|
80
|
+
- lib/command_kit/open_app.rb
|
76
81
|
- lib/command_kit/options.rb
|
77
82
|
- lib/command_kit/options/option.rb
|
78
83
|
- lib/command_kit/options/option_value.rb
|
79
84
|
- lib/command_kit/options/parser.rb
|
80
85
|
- lib/command_kit/options/quiet.rb
|
81
|
-
- lib/command_kit/options/usage.rb
|
82
86
|
- lib/command_kit/options/verbose.rb
|
83
87
|
- lib/command_kit/options/version.rb
|
84
88
|
- lib/command_kit/os.rb
|
89
|
+
- lib/command_kit/os/linux.rb
|
90
|
+
- lib/command_kit/package_manager.rb
|
85
91
|
- lib/command_kit/pager.rb
|
86
92
|
- lib/command_kit/printing.rb
|
87
93
|
- lib/command_kit/printing/indent.rb
|
88
94
|
- lib/command_kit/program_name.rb
|
89
95
|
- lib/command_kit/stdio.rb
|
96
|
+
- lib/command_kit/sudo.rb
|
97
|
+
- lib/command_kit/terminal.rb
|
90
98
|
- lib/command_kit/usage.rb
|
91
99
|
- lib/command_kit/version.rb
|
92
100
|
- lib/command_kit/xdg.rb
|
@@ -107,34 +115,45 @@ files:
|
|
107
115
|
- spec/commands/parent_command_spec.rb
|
108
116
|
- spec/commands/subcommand_spec.rb
|
109
117
|
- spec/commands_spec.rb
|
110
|
-
- spec/console_spec.rb
|
111
118
|
- spec/description_spec.rb
|
112
119
|
- spec/env/home_spec.rb
|
113
120
|
- spec/env/path_spec.rb
|
114
121
|
- spec/env_spec.rb
|
115
122
|
- spec/examples_spec.rb
|
116
123
|
- spec/exception_handler_spec.rb
|
124
|
+
- spec/help/man_spec.rb
|
117
125
|
- spec/help_spec.rb
|
118
126
|
- spec/inflector_spec.rb
|
127
|
+
- spec/interactive_spec.rb
|
119
128
|
- spec/main_spec.rb
|
129
|
+
- spec/man_spec.rb
|
130
|
+
- spec/open_app_spec.rb
|
120
131
|
- spec/options/option_spec.rb
|
121
132
|
- spec/options/option_value_spec.rb
|
122
133
|
- spec/options/parser_spec.rb
|
123
134
|
- spec/options_spec.rb
|
135
|
+
- spec/os/linux_spec.rb
|
124
136
|
- spec/os_spec.rb
|
137
|
+
- spec/package_manager_spec.rb
|
125
138
|
- spec/pager_spec.rb
|
126
139
|
- spec/printing/indent_spec.rb
|
127
140
|
- spec/printing_spec.rb
|
128
141
|
- spec/program_name_spec.rb
|
129
142
|
- spec/spec_helper.rb
|
130
143
|
- spec/stdio_spec.rb
|
144
|
+
- spec/sudo_spec.rb
|
145
|
+
- spec/terminal_spec.rb
|
131
146
|
- spec/usage_spec.rb
|
132
147
|
- spec/xdg_spec.rb
|
133
|
-
homepage: https://github.com/postmodern/command_kit#readme
|
148
|
+
homepage: https://github.com/postmodern/command_kit.rb#readme
|
134
149
|
licenses:
|
135
150
|
- MIT
|
136
|
-
metadata:
|
137
|
-
|
151
|
+
metadata:
|
152
|
+
documentation_uri: https://rubydoc.info/gems/command_kit
|
153
|
+
source_code_uri: https://github.com/postmodern/command_kit.rb
|
154
|
+
bug_tracker_uri: https://github.com/postmodern/command_kit.rb/issues
|
155
|
+
changelog_uri: https://github.com/postmodern/command_kit.rb/blob/main/ChangeLog.md
|
156
|
+
post_install_message:
|
138
157
|
rdoc_options: []
|
139
158
|
require_paths:
|
140
159
|
- lib
|
@@ -149,8 +168,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
149
168
|
- !ruby/object:Gem::Version
|
150
169
|
version: '0'
|
151
170
|
requirements: []
|
152
|
-
rubygems_version: 3.
|
153
|
-
signing_key:
|
171
|
+
rubygems_version: 3.2.22
|
172
|
+
signing_key:
|
154
173
|
specification_version: 4
|
155
174
|
summary: A toolkit for building Ruby CLI commands
|
156
175
|
test_files: []
|
data/lib/command_kit/console.rb
DELETED
@@ -1,141 +0,0 @@
|
|
1
|
-
require 'command_kit/stdio'
|
2
|
-
require 'command_kit/env'
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'io/console'
|
6
|
-
rescue LoadError
|
7
|
-
end
|
8
|
-
|
9
|
-
module CommandKit
|
10
|
-
#
|
11
|
-
# Provides access to [IO.console] and [IO.console_size].
|
12
|
-
#
|
13
|
-
# ## Environment Variables
|
14
|
-
#
|
15
|
-
# * `LINES` - The explicit number of lines or rows the console should have.
|
16
|
-
# * `COLUMNS` - The explicit number of columns the console should have.
|
17
|
-
#
|
18
|
-
# [IO.console]: https://rubydoc.info/gems/io-console/IO#console-class_method
|
19
|
-
# [IO#winsize]: https://rubydoc.info/gems/io-console/IO#winsize-instance_method
|
20
|
-
#
|
21
|
-
module Console
|
22
|
-
include Stdio
|
23
|
-
include Env
|
24
|
-
|
25
|
-
# The default console height to fallback to.
|
26
|
-
DEFAULT_HEIGHT = 25
|
27
|
-
|
28
|
-
# The default console width to fallback to.
|
29
|
-
DEFAULT_WIDTH = 80
|
30
|
-
|
31
|
-
#
|
32
|
-
# Initializes any console settings.
|
33
|
-
#
|
34
|
-
# @param [Hash{Symbol => Object}] kwargs
|
35
|
-
# Additional keyword arguments.
|
36
|
-
#
|
37
|
-
# @note
|
38
|
-
# If the `$LINES` env variable is set, and is non-zero, it will be
|
39
|
-
# returned by {#console_height}.
|
40
|
-
#
|
41
|
-
# @note
|
42
|
-
# If the `$COLUMNS` env variable is set, and is non-zero, it will be
|
43
|
-
# returned by {#console_width}.
|
44
|
-
#
|
45
|
-
def initialize(**kwargs)
|
46
|
-
super(**kwargs)
|
47
|
-
|
48
|
-
@default_console_height = if (lines = env['LINES'])
|
49
|
-
lines.to_i
|
50
|
-
else
|
51
|
-
DEFAULT_HEIGHT
|
52
|
-
end
|
53
|
-
|
54
|
-
@default_console_width = if (columns = env['COLUMNS'])
|
55
|
-
columns.to_i
|
56
|
-
else
|
57
|
-
DEFAULT_WIDTH
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
#
|
62
|
-
# Determines if there is a console present.
|
63
|
-
#
|
64
|
-
# @return [Boolean]
|
65
|
-
# Specifies whether {Stdio#stdout stdout} is connected to a console.
|
66
|
-
#
|
67
|
-
def console?
|
68
|
-
IO.respond_to?(:console) && stdout.tty?
|
69
|
-
end
|
70
|
-
|
71
|
-
#
|
72
|
-
# Returns the console object, if {Stdio#stdout stdout} is connected to a
|
73
|
-
# console.
|
74
|
-
#
|
75
|
-
# @return [IO, nil]
|
76
|
-
# The IO objects or `nil` if {Stdio#stdout stdout} is not connected to a
|
77
|
-
# console.
|
78
|
-
#
|
79
|
-
# @example
|
80
|
-
# console
|
81
|
-
# # => #<File:/dev/tty>
|
82
|
-
#
|
83
|
-
def console
|
84
|
-
IO.console if console?
|
85
|
-
end
|
86
|
-
|
87
|
-
#
|
88
|
-
# Returns the console's height in number of lines.
|
89
|
-
#
|
90
|
-
# @return [Integer]
|
91
|
-
# The console's height in number of lines.
|
92
|
-
#
|
93
|
-
# @example
|
94
|
-
# console_height
|
95
|
-
# # => 22
|
96
|
-
#
|
97
|
-
def console_height
|
98
|
-
if (console = self.console)
|
99
|
-
console.winsize[0]
|
100
|
-
else
|
101
|
-
@default_console_height
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
#
|
106
|
-
# Returns the console's width in number of lines.
|
107
|
-
#
|
108
|
-
# @return [Integer]
|
109
|
-
# The console's width in number of columns.
|
110
|
-
#
|
111
|
-
# @example
|
112
|
-
# console_width
|
113
|
-
# # => 91
|
114
|
-
#
|
115
|
-
def console_width
|
116
|
-
if (console = self.console)
|
117
|
-
console.winsize[1]
|
118
|
-
else
|
119
|
-
@default_console_width
|
120
|
-
end
|
121
|
-
end
|
122
|
-
|
123
|
-
#
|
124
|
-
# The console height (lines) and width (columns).
|
125
|
-
#
|
126
|
-
# @return [(Integer, Integer)]
|
127
|
-
# Returns the height and width of the console.
|
128
|
-
#
|
129
|
-
# @example
|
130
|
-
# console_size
|
131
|
-
# # => [23, 91]
|
132
|
-
#
|
133
|
-
def console_size
|
134
|
-
if (console = self.console)
|
135
|
-
console.winsize
|
136
|
-
else
|
137
|
-
[@default_console_height, @default_console_width]
|
138
|
-
end
|
139
|
-
end
|
140
|
-
end
|
141
|
-
end
|