benry-cmdapp 0.1.0 → 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/CHANGES.md +8 -0
- data/README.md +9 -9
- data/benry-cmdapp.gemspec +3 -5
- data/doc/benry-cmdapp.html +9 -9
- data/lib/benry/cmdapp.rb +10 -9
- data/test/action_test.rb +6 -6
- data/test/app_test.rb +2 -2
- data/test/help_test.rb +7 -7
- data/test/util_test.rb +1 -1
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8b0a5dd7e1572d8202763acc806cd7299f40b5b4696f9a59c255afca03608f24
|
4
|
+
data.tar.gz: 56739d3a911e3027c8e7d632355db38531c64cca519b51ac4f8c2857d4c41b64
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3581a4d1ac62a2ce6143e648eee9fd30a364977aec7b25b9896ee8f659e9b544d7d7fd8f8cafaacd49bae001df8384fcc6f58914fc511f8d281c4456e5cbf284
|
7
|
+
data.tar.gz: 274ac6bbfc184243eedbc37911c9d41397ff5271f8bffbc7e363d6feaa63d292f09e51d83d7a95aa13c2ed35b9f102909b254f2a36b66e9e39bccddc64aee3cc
|
data/CHANGES.md
CHANGED
@@ -2,6 +2,14 @@ CHANGES
|
|
2
2
|
=======
|
3
3
|
|
4
4
|
|
5
|
+
Release 0.2.0 (2023-10-18)
|
6
|
+
--------------------------
|
7
|
+
|
8
|
+
* [change] Requires Benry-CmdOpt 2.1.0 or higher.
|
9
|
+
* [enhance] `@action.()` and `@option.()` supports `hidden: true` keyword argument.
|
10
|
+
* [change] Rename `#run_action!()` in Action class to `#run_action_anyway()`.
|
11
|
+
|
12
|
+
|
5
13
|
Release 0.1.0 (2023-10-12)
|
6
14
|
--------------------------
|
7
15
|
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Benry-CmdApp
|
2
2
|
|
3
|
-
($Release: 0.
|
3
|
+
($Release: 0.2.0 $)
|
4
4
|
|
5
5
|
|
6
6
|
## What's This?
|
@@ -1181,7 +1181,8 @@ Actions:
|
|
1181
1181
|
|
1182
1182
|
### Private (Hidden) Action
|
1183
1183
|
|
1184
|
-
* If
|
1184
|
+
* If `hidden: true` keyword argument passed to `@action.()`,
|
1185
|
+
or action method is private, then Benry::CmdApp regards that action as private.
|
1185
1186
|
* Private actions are hidden in help message.
|
1186
1187
|
* Private actions are shown when `-a` or `--all` option enabled and specified.
|
1187
1188
|
|
@@ -1198,13 +1199,12 @@ class SampleAction < Benry::CmdApp::Action
|
|
1198
1199
|
puts __method__
|
1199
1200
|
end
|
1200
1201
|
|
1201
|
-
@action.("test action #2")
|
1202
|
+
@action.("test action #2", hidden: true) # !!!!
|
1202
1203
|
def test2()
|
1203
1204
|
puts __method__
|
1204
1205
|
end
|
1205
|
-
private :test2 # !!!! private method !!!!
|
1206
1206
|
|
1207
|
-
private # !!!!
|
1207
|
+
private # !!!!
|
1208
1208
|
|
1209
1209
|
@action.("test action #3")
|
1210
1210
|
def test3()
|
@@ -1258,7 +1258,7 @@ Actions:
|
|
1258
1258
|
|
1259
1259
|
### Private (Hidden) Option
|
1260
1260
|
|
1261
|
-
* Options
|
1261
|
+
* Options defined with `hidden: true` keyword argument are treated as private option.
|
1262
1262
|
* Private options are hidden in help message of action.
|
1263
1263
|
* Private options are shown when `-a` or `--all` option enabled and specified.
|
1264
1264
|
|
@@ -1272,9 +1272,9 @@ class SampleAction < Benry::CmdApp::Action
|
|
1272
1272
|
|
1273
1273
|
@action.("test action")
|
1274
1274
|
@option.(:verbose, "-v", "verbose mode")
|
1275
|
-
@option.(:
|
1276
|
-
def test1(verbose: false,
|
1277
|
-
puts "verbose=#{verbose},
|
1275
|
+
@option.(:debug , "-D", "debug mode", hidden: true) # !!!!
|
1276
|
+
def test1(verbose: false, debug: false)
|
1277
|
+
puts "verbose=#{verbose}, debug=#{_debug}"
|
1278
1278
|
end
|
1279
1279
|
|
1280
1280
|
end
|
data/benry-cmdapp.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = "benry-cmdapp"
|
5
|
-
spec.version = "$Release: 0.
|
5
|
+
spec.version = "$Release: 0.2.0 $".split()[1]
|
6
6
|
spec.author = "kwatch"
|
7
7
|
spec.email = "kwatch@gmail.com"
|
8
8
|
spec.platform = Gem::Platform::RUBY
|
@@ -21,9 +21,7 @@ END
|
|
21
21
|
spec.files = Dir[
|
22
22
|
"README.md", "MIT-LICENSE", "CHANGES.md",
|
23
23
|
"#{spec.name}.gemspec",
|
24
|
-
|
25
|
-
"lib/**/*.rb", "test/**/*.rb",
|
26
|
-
#"bin/*", "examples/**/*",
|
24
|
+
"lib/**/*.rb", "test/**/*.rb", #"bin/*", "examples/**/*",
|
27
25
|
"doc/*.html", "doc/css/*.css",
|
28
26
|
]
|
29
27
|
#spec.executables = []
|
@@ -33,6 +31,6 @@ END
|
|
33
31
|
#spec.extra_rdoc_files = ["README.md", "CHANGES.md"]
|
34
32
|
|
35
33
|
spec.required_ruby_version = ">= 2.3"
|
36
|
-
spec.add_runtime_dependency "benry-cmdopt" , "~> 2"
|
34
|
+
spec.add_runtime_dependency "benry-cmdopt" , "~> 2", ">= 2.1.0"
|
37
35
|
spec.add_development_dependency "oktest" , "~> 1"
|
38
36
|
end
|
data/doc/benry-cmdapp.html
CHANGED
@@ -21,7 +21,7 @@
|
|
21
21
|
<ul class="nav">
|
22
22
|
</ul>
|
23
23
|
</nav>
|
24
|
-
<p>($Release: 0.
|
24
|
+
<p>($Release: 0.2.0 $)</p>
|
25
25
|
<section class="section" id="whats-this">
|
26
26
|
<h2>What's This?</h2>
|
27
27
|
<p>Benry-CmdApp is a framework to create command-line application.
|
@@ -1116,7 +1116,8 @@ Actions:
|
|
1116
1116
|
<section class="subsection" id="private-hidden-action">
|
1117
1117
|
<h3>Private (Hidden) Action</h3>
|
1118
1118
|
<ul>
|
1119
|
-
<li>If
|
1119
|
+
<li>If <code>hidden: true</code> keyword argument passed to <code>@action.()</code>,
|
1120
|
+
or action method is private, then Benry::CmdApp regards that action as private.</li>
|
1120
1121
|
<li>Private actions are hidden in help message.</li>
|
1121
1122
|
<li>Private actions are shown when <code>-a</code> or <code>--all</code> option enabled and specified.</li>
|
1122
1123
|
</ul>
|
@@ -1132,13 +1133,12 @@ class SampleAction < Benry::CmdApp::Action
|
|
1132
1133
|
puts __method__
|
1133
1134
|
end
|
1134
1135
|
|
1135
|
-
@action.("test action #2")
|
1136
|
+
@action.("test action #2", <strong>hidden: true</strong>) # !!!!
|
1136
1137
|
def test2()
|
1137
1138
|
puts __method__
|
1138
1139
|
end
|
1139
|
-
<strong>private :test2</strong> # !!!! private method !!!!
|
1140
1140
|
|
1141
|
-
<strong>private</strong> # !!!!
|
1141
|
+
<strong>private</strong> # !!!!
|
1142
1142
|
|
1143
1143
|
@action.("test action #3")
|
1144
1144
|
def test3()
|
@@ -1188,7 +1188,7 @@ Actions:
|
|
1188
1188
|
<section class="subsection" id="private-hidden-option">
|
1189
1189
|
<h3>Private (Hidden) Option</h3>
|
1190
1190
|
<ul>
|
1191
|
-
<li>Options
|
1191
|
+
<li>Options defined with <code>hidden: true</code> keyword argument are treated as private option.</li>
|
1192
1192
|
<li>Private options are hidden in help message of action.</li>
|
1193
1193
|
<li>Private options are shown when <code>-a</code> or <code>--all</code> option enabled and specified.</li>
|
1194
1194
|
</ul>
|
@@ -1201,9 +1201,9 @@ class SampleAction < Benry::CmdApp::Action
|
|
1201
1201
|
|
1202
1202
|
@action.("test action")
|
1203
1203
|
@option.(:verbose, "-v", "verbose mode")
|
1204
|
-
@option.(
|
1205
|
-
def test1(verbose: false,
|
1206
|
-
puts "verbose=#{verbose},
|
1204
|
+
@option.(:debug , "-D", "debug mode", <strong>hidden: true</strong>) # !!!!
|
1205
|
+
def test1(verbose: false, debug: false)
|
1206
|
+
puts "verbose=#{verbose}, debug=#{_debug}"
|
1207
1207
|
end
|
1208
1208
|
|
1209
1209
|
end
|
data/lib/benry/cmdapp.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
###
|
5
|
-
### $Release: 0.
|
5
|
+
### $Release: 0.2.0 $
|
6
6
|
### $Copyright: copyright(c) 2023 kwatch@gmail.com $
|
7
7
|
### $License: MIT License $
|
8
8
|
###
|
@@ -277,7 +277,7 @@ module Benry::CmdApp
|
|
277
277
|
|
278
278
|
class ActionMetadata
|
279
279
|
|
280
|
-
def initialize(name, klass, method, desc, schema, detail: nil, postamble: nil, important: nil, tag: nil)
|
280
|
+
def initialize(name, klass, method, desc, schema, detail: nil, postamble: nil, important: nil, tag: nil, hidden: nil)
|
281
281
|
@name = name
|
282
282
|
@klass = klass
|
283
283
|
@method = method
|
@@ -287,14 +287,15 @@ module Benry::CmdApp
|
|
287
287
|
@postamble = postamble if postamble != nil
|
288
288
|
@important = important if important != nil
|
289
289
|
@tag = tag if tag != nil
|
290
|
+
@hidden = hidden if hidden != nil
|
290
291
|
end
|
291
292
|
|
292
|
-
attr_reader :name, :method, :klass, :schema, :desc, :detail, :postamble, :important, :tag
|
293
|
+
attr_reader :name, :method, :klass, :schema, :desc, :detail, :postamble, :important, :tag, :hidden
|
293
294
|
|
294
295
|
def hidden?()
|
295
296
|
#; [!kp10p] returns true when action method is private.
|
296
297
|
#; [!nw322] returns false when action method is not private.
|
297
|
-
return ! @klass.method_defined?(@method)
|
298
|
+
return @hidden != nil ? @hidden : ! @klass.method_defined?(@method)
|
298
299
|
end
|
299
300
|
|
300
301
|
def important?()
|
@@ -581,7 +582,7 @@ module Benry::CmdApp
|
|
581
582
|
return __run_action(action_name, true, args, kwargs)
|
582
583
|
end
|
583
584
|
|
584
|
-
def
|
585
|
+
def run_action_anyway(action_name, *args, **kwargs)
|
585
586
|
#; [!2yrc2] invokes action even if already invoked.
|
586
587
|
return __run_action(action_name, false, args, kwargs)
|
587
588
|
end
|
@@ -636,18 +637,18 @@ module Benry::CmdApp
|
|
636
637
|
@__aliasof__ = nil # ex: :method_name or "action-name"
|
637
638
|
@__default__ = nil # ex: :method_name or "action-name"
|
638
639
|
#; [!1qv12] @action is a Proc object and saves args.
|
639
|
-
@action = proc do |desc, detail: nil, postamble: nil, important: nil, tag: nil|
|
640
|
-
@__action__ = [desc, {detail: detail, postamble: postamble, important: important, tag: tag}]
|
640
|
+
@action = proc do |desc, detail: nil, postamble: nil, important: nil, tag: nil, hidden: nil|
|
641
|
+
@__action__ = [desc, {detail: detail, postamble: postamble, important: important, tag: tag, hidden: hidden}]
|
641
642
|
end
|
642
643
|
#; [!33ma7] @option is a Proc object and saves args.
|
643
|
-
@option = proc do |param, optdef, desc, *rest, type: nil, rexp: nil, enum: nil, range: nil, value: nil, detail: nil, tag: nil, &block|
|
644
|
+
@option = proc do |param, optdef, desc, *rest, type: nil, rexp: nil, enum: nil, range: nil, value: nil, detail: nil, important: nil, tag: nil, hidden: nil, &block|
|
644
645
|
#; [!gxybo] '@option.()' raises error when '@action.()' not called.
|
645
646
|
@__action__ != nil or
|
646
647
|
raise OptionDefError.new("@option.(#{param.inspect}): `@action.()` Required but not called.")
|
647
648
|
schema = (@__option__ ||= SCHEMA_CLASS.new)
|
648
649
|
#; [!ga6zh] '@option.()' raises error when invalid option info specified.
|
649
650
|
begin
|
650
|
-
schema.add(param, optdef, desc, *rest, type: type, rexp: rexp, enum: enum, range: range, value: value, detail: detail, tag:
|
651
|
+
schema.add(param, optdef, desc, *rest, type: type, rexp: rexp, enum: enum, range: range, value: value, detail: detail, important: important, tag: tag, hidden: hidden, &block)
|
651
652
|
rescue Benry::CmdOpt::SchemaError => exc
|
652
653
|
raise OptionDefError.new(exc.message)
|
653
654
|
end
|
data/test/action_test.rb
CHANGED
@@ -389,19 +389,19 @@ END
|
|
389
389
|
end
|
390
390
|
|
391
391
|
|
392
|
-
topic '#
|
392
|
+
topic '#run_action_anyway()' do
|
393
393
|
|
394
394
|
spec "[!2yrc2] invokes action even if already invoked." do
|
395
395
|
sout, serr = capture_sio() do
|
396
|
-
@action.
|
396
|
+
@action.run_action_anyway("test3:foo:invoke3", "Alice", lang: "fr")
|
397
397
|
end
|
398
398
|
ok {sout} == "Bonjour, Alice!\n"
|
399
399
|
sout, serr = capture_sio() do
|
400
|
-
@action.
|
400
|
+
@action.run_action_anyway("test3:foo:invoke3", "Alice", lang: "fr")
|
401
401
|
end
|
402
402
|
ok {sout} == "Bonjour, Alice!\n"
|
403
403
|
sout, serr = capture_sio() do
|
404
|
-
@action.
|
404
|
+
@action.run_action_anyway("test3:foo:invoke3", "Alice", lang: "en")
|
405
405
|
end
|
406
406
|
ok {sout} == "Hello, Alice!\n"
|
407
407
|
end
|
@@ -510,10 +510,10 @@ END
|
|
510
510
|
|
511
511
|
spec "[!1qv12] @action is a Proc object and saves args." do
|
512
512
|
class InheritedTest2 < Benry::CmdApp::ActionScope
|
513
|
-
@action.("description", detail: "xxx", postamble: "yyy", important: true, tag: "zzz")
|
513
|
+
@action.("description", detail: "xxx", postamble: "yyy", important: true, tag: "zzz", hidden: false)
|
514
514
|
end
|
515
515
|
x = InheritedTest2.instance_variable_get('@__action__')
|
516
|
-
ok {x} == ["description", {detail: "xxx", postamble: "yyy", important: true, tag: "zzz"}]
|
516
|
+
ok {x} == ["description", {detail: "xxx", postamble: "yyy", important: true, tag: "zzz", hidden: false}]
|
517
517
|
end
|
518
518
|
|
519
519
|
spec "[!33ma7] @option is a Proc object and saves args." do
|
data/test/app_test.rb
CHANGED
@@ -1013,8 +1013,8 @@ END
|
|
1013
1013
|
class HiddenTest < Benry::CmdApp::ActionScope
|
1014
1014
|
private
|
1015
1015
|
@action.("hidden test")
|
1016
|
-
@option.(:
|
1017
|
-
def hidden1(
|
1016
|
+
@option.(:trace, "-T", "enable tracing", hidden: true)
|
1017
|
+
def hidden1(trace: false)
|
1018
1018
|
end
|
1019
1019
|
end
|
1020
1020
|
#
|
data/test/help_test.rb
CHANGED
@@ -84,7 +84,7 @@ END
|
|
84
84
|
|
85
85
|
spec "[!8b02e] ignores '[<options>]' in 'Usage:' when only hidden options speicified." do
|
86
86
|
schema = new_schema(lang: false)
|
87
|
-
schema.add(:
|
87
|
+
schema.add(:lang, "-l, --lang=<en|fr|it>", "language", hidden: true)
|
88
88
|
msg = new_metadata(schema).help_message("testapp")
|
89
89
|
msg = uncolorize(msg)
|
90
90
|
ok {msg} =~ /^ \$ testapp halo1 \[<user>\]\n/
|
@@ -116,7 +116,7 @@ END
|
|
116
116
|
|
117
117
|
spec "[!hghuj] ignores 'Options:' section when only hidden options speicified." do
|
118
118
|
schema = new_schema(lang: false)
|
119
|
-
schema.add(:
|
119
|
+
schema.add(:lang, "-l, --lang=<en|fr|it>", "language", hidden: true) # hidden option
|
120
120
|
msg = new_metadata(schema).help_message("testapp")
|
121
121
|
msg = uncolorize(msg)
|
122
122
|
ok {msg}.NOT.include?("Options:\n")
|
@@ -125,7 +125,7 @@ END
|
|
125
125
|
spec "[!vqqq1] hidden option should be shown in weak format." do
|
126
126
|
schema = new_schema(lang: false)
|
127
127
|
schema.add(:file , "-f, --file=<file>", "filename")
|
128
|
-
schema.add(:
|
128
|
+
schema.add(:lang, "-l, --lang=<lang>", "language", hidden: true) # hidden option
|
129
129
|
msg = new_metadata(schema).help_message("testapp", true)
|
130
130
|
ok {msg}.end_with?(<<"END")
|
131
131
|
\e[34mOptions:\e[0m
|
@@ -436,7 +436,7 @@ END
|
|
436
436
|
@config.option_debug = false
|
437
437
|
app = Benry::CmdApp::Application.new(@config)
|
438
438
|
schema = app.instance_variable_get('@schema')
|
439
|
-
schema.add(:
|
439
|
+
schema.add(:log, "-L", "private option", hidden: true)
|
440
440
|
msg = app.help_message()
|
441
441
|
msg = uncolorize(msg)
|
442
442
|
ok {msg} !~ /^ -L /
|
@@ -454,7 +454,7 @@ END
|
|
454
454
|
@config.option_debug = false
|
455
455
|
app = Benry::CmdApp::Application.new(@config)
|
456
456
|
schema = app.instance_variable_get('@schema')
|
457
|
-
schema.add(:
|
457
|
+
schema.add(:log, "-L", "private option", hidden: true)
|
458
458
|
msg = app.help_message(true)
|
459
459
|
msg = uncolorize(msg)
|
460
460
|
ok {msg} =~ /^ -L /
|
@@ -477,7 +477,7 @@ END
|
|
477
477
|
|
478
478
|
spec "[!p1tu9] prints option in weak format if option is hidden." do
|
479
479
|
|app3|
|
480
|
-
app3.schema.add(:
|
480
|
+
app3.schema.add(:log, "-L", "private option", hidden: true) # !!!
|
481
481
|
msg = app3.help_message(true)
|
482
482
|
ok {msg}.include?(<<END)
|
483
483
|
\e[34mOptions:\e[0m
|
@@ -494,7 +494,7 @@ END
|
|
494
494
|
@config.option_debug = false
|
495
495
|
app = Benry::CmdApp::Application.new(@config)
|
496
496
|
schema = app.instance_variable_get('@schema')
|
497
|
-
schema.add(:
|
497
|
+
schema.add(:log, "-L", "private option", hidden: true)
|
498
498
|
msg = app.help_message()
|
499
499
|
msg = uncolorize(msg)
|
500
500
|
ok {msg} !~ /^Options:$/
|
data/test/util_test.rb
CHANGED
@@ -47,7 +47,7 @@ Oktest.scope do
|
|
47
47
|
|
48
48
|
spec "[!c4ljy] returns true if schema contains only private (hidden) options." do
|
49
49
|
sc = Benry::CmdOpt::Schema.new
|
50
|
-
sc.add(:
|
50
|
+
sc.add(:help, "-h", "help", hidden: true)
|
51
51
|
ok {Benry::CmdApp::Util.schema_empty?(sc)} == true
|
52
52
|
sc.add(:version, "-V", "version")
|
53
53
|
ok {Benry::CmdApp::Util.schema_empty?(sc)} == false
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: benry-cmdapp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kwatch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-10-
|
11
|
+
date: 2023-10-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: benry-cmdopt
|
@@ -17,6 +17,9 @@ dependencies:
|
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '2'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 2.1.0
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -24,6 +27,9 @@ dependencies:
|
|
24
27
|
- - "~>"
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: '2'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 2.1.0
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: oktest
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|