cli-dispatcher 1.2.1 → 1.2.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|