cli-dispatcher 1.2.1 → 1.2.2
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/lib/cli-dispatcher.rb +33 -10
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1601becbe908448760f6f02f45ce374db04a7b6926304cb381d5193748121a76
|
4
|
+
data.tar.gz: b51470fabe4535e155f8d1d7b82de56b5a5c50471aca95db3aec278fc0abd588
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0a7b5ad86d5decfd5486f26b0c618e5f6301399493da66731eeb745340f423194e01923261c1ae8766d0bae4ae0494195f82af301e8d769c98dffe937fc49c75
|
7
|
+
data.tar.gz: 7f565106772b1d79b7839bdedf48181eb654a2d440c83b0bbdd474feade662529dbee2615824316fc950e914ccf929a30f7c43506f9082005d080995bb536fc1
|
data/lib/cli-dispatcher.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'optparse'
|
2
|
+
require 'texttools'
|
2
3
|
|
3
4
|
#
|
4
5
|
# Constructs a program that can operate a number of user-provided commands. To
|
@@ -6,18 +7,23 @@ require 'optparse'
|
|
6
7
|
#
|
7
8
|
# def cmd_name(args...)
|
8
9
|
#
|
9
|
-
# Then create an instance of the class and call one of the dispatch methods
|
10
|
+
# Then create an instance of the class and call one of the dispatch methods,
|
11
|
+
# typically:
|
10
12
|
#
|
11
|
-
#
|
13
|
+
# [DispatcherSubclass].new.dispatch_argv
|
12
14
|
#
|
13
|
-
#
|
15
|
+
# To provide help and/or a category for a command, define the methods
|
14
16
|
#
|
15
|
-
#
|
16
|
-
#
|
17
|
+
# def help_name; [string] end
|
18
|
+
# def cat_name; [string] end
|
19
|
+
#
|
20
|
+
# For the help command, the first line should be a short description of the
|
21
|
+
# command, which will be used in a summary table describing the command. For the
|
22
|
+
# category, all commands with the same category will be grouped together in the
|
23
|
+
# help summary display.
|
17
24
|
#
|
18
25
|
# This class incorporates optparse, providing the commands setup_options and
|
19
|
-
# add_options to pass
|
20
|
-
# through options specifications.
|
26
|
+
# add_options to pass through options specifications.
|
21
27
|
#
|
22
28
|
class Dispatcher
|
23
29
|
|
@@ -118,11 +124,28 @@ class Dispatcher
|
|
118
124
|
warn("Run 'help [command]' for further help on that command.")
|
119
125
|
warn("")
|
120
126
|
|
121
|
-
methods.map { |m|
|
127
|
+
grouped_methods = methods.map { |m|
|
122
128
|
s = m.to_s
|
123
129
|
s.start_with?("cmd_") ? s.delete_prefix("cmd_") : nil
|
124
|
-
}.compact.
|
125
|
-
|
130
|
+
}.compact.group_by { |m|
|
131
|
+
cat_m = "cat_#{m}".to_sym
|
132
|
+
respond_to?(cat_m) ? send(cat_m) : nil
|
133
|
+
}
|
134
|
+
help_cmds(grouped_methods.delete(nil)) if grouped_methods.include?(nil)
|
135
|
+
|
136
|
+
grouped_methods.sort.each do |cat, cmds|
|
137
|
+
warn("\n#{cat}\n\n")
|
138
|
+
help_cmds(cmds)
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
def help_cmds(cmds)
|
143
|
+
cmds.sort.each do |cmd|
|
144
|
+
warn(TextTools.line_break(
|
145
|
+
help_string(cmd, all: false),
|
146
|
+
prefix: " " * 11,
|
147
|
+
first_prefix: cmd.ljust(10) + ' ',
|
148
|
+
))
|
126
149
|
end
|
127
150
|
end
|
128
151
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cli-dispatcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Charles Duan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-12-
|
11
|
+
date: 2024-12-22 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: |
|
14
14
|
Library for creating command-line programs that accept commands. Also
|
@@ -44,7 +44,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: '0'
|
46
46
|
requirements: []
|
47
|
-
rubygems_version: 3.5.
|
47
|
+
rubygems_version: 3.5.23
|
48
48
|
signing_key:
|
49
49
|
specification_version: 4
|
50
50
|
summary: Command-line command dispatcher
|