appl 1.16 → 1.18

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 (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/appl.rb +17 -6
  3. data/lib/applfan.rb +5 -1
  4. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0053236723f1d22dd2981fb2c6cfbab33bb83035dc62c8c276f2c772e8512bd6
4
- data.tar.gz: 24ab877ef793b0f658a79eb7adcf4fb347f5d806aa4388eb9d6bf663b75e52c1
3
+ metadata.gz: 910d3c31e9ccea4a482121b2a580b2a764d18603057f4f55ded3de0da4f6570f
4
+ data.tar.gz: 1266cccb0ea094c1d560947456006064f6eb4f26561b706f9aeff18c47e23119
5
5
  SHA512:
6
- metadata.gz: 418680b99d4da05b2ae5f240bf13d106fc3b87f8cf215a4dc635d282b9ecebd54d3719993e38da66f979ca4760252e80f5767250cc5cb8f0750eeac8726197db
7
- data.tar.gz: b07caffaadea381cb93cb7626f7dfd2ebedc56cfdd401c7ecc3982f02194f4d648eac663acc0d73afa090790c76db7babfd1a38ddc30fe15a7f72dd2acaa2d84
6
+ metadata.gz: 43612b15a512ec95b6b8915d72e85d3673417f21b164d08767d4d2bb33210c633b8b24c90c0e6b7b711ee96fad27f07715b6bb636846f6d605269d329417099e
7
+ data.tar.gz: 628aa7d1fb71c47c4be0403b921ba3461eae58f231a057cc70acf3b1aefab94b82e9a00375958d46b7207d13d2059bc1e08d0799d3e37a3d5a342b2c4d232ab7
data/lib/appl.rb CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  class Application
7
7
 
8
- APPL_VERSION = "1.16".freeze
8
+ APPL_VERSION = "1.18".freeze
9
9
 
10
10
  OPTIONS_ENV = nil
11
11
 
@@ -25,7 +25,13 @@ class Application
25
25
  @name, @args = name, args
26
26
  self.class.each_option { |opt,desc,arg,dfl,act|
27
27
  begin
28
- send act, dfl if dfl
28
+ if dfl then
29
+ if arg then
30
+ send act, dfl
31
+ else
32
+ send act
33
+ end
34
+ end
29
35
  rescue NoMethodError
30
36
  raise OptionError, "Option action `#{act}' is not defined."
31
37
  end
@@ -88,6 +94,10 @@ class Application
88
94
 
89
95
  class <<self
90
96
 
97
+ def is_cmd?
98
+ const_defined? :NAME
99
+ end
100
+
91
101
  def run args = nil
92
102
  e = execute args
93
103
  exit e
@@ -129,7 +139,9 @@ class Application
129
139
  desc = param.pop
130
140
  arg = param.shift
131
141
  if arg then
132
- if param.empty? then
142
+ if arg == true then
143
+ arg, dfl = nil, true
144
+ elsif param.empty? then
133
145
  arg, dfl = arg.split /:/, 2
134
146
  if dfl =~ /\A:/ then
135
147
  dfl = $'.to_sym
@@ -208,9 +220,8 @@ class Application
208
220
  def show_options
209
221
  options_desc do |opt,arg,dfl,desc|
210
222
  opt = opt.length == 1 ? "-#{opt}" : "--#{opt}"
211
- arg &&= "#{arg}"
212
- dfl &&= "[#{dfl}]"
213
- arg << dfl if arg && dfl
223
+ arg = "#{arg}"
224
+ arg << "[#{dfl}]" if dfl
214
225
  l = " %-*s %-*s %s" % [ root::W_OPTS, opt, root::W_ARGS, arg, desc]
215
226
  l.rstrip!
216
227
  puts l
data/lib/applfan.rb CHANGED
@@ -20,7 +20,10 @@ class ApplicationFan < Application
20
20
  attr_accessor :commands
21
21
 
22
22
  def find_command name
23
- @commands.find { |c| c::NAME == name or c::ALIASES.include? name }
23
+ @commands.find { |c|
24
+ next unless c.is_cmd?
25
+ c::NAME == name or c::ALIASES.include? name
26
+ }
24
27
  end
25
28
 
26
29
 
@@ -33,6 +36,7 @@ class ApplicationFan < Application
33
36
  puts self::AVAILCMDS
34
37
  puts
35
38
  @commands.each { |c|
39
+ next unless c.is_cmd?
36
40
  puts " %-*s %s" % [ self::W_CMDS, c.all_names, c::SUMMARY]
37
41
  }
38
42
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appl
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.16'
4
+ version: '1.18'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bertram Scharpf
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-12-24 00:00:00.000000000 Z
11
+ date: 2024-12-28 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |
14
14
  A base class for command line applications doing options parsing
@@ -42,7 +42,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
42
42
  version: '0'
43
43
  requirements:
44
44
  - Just Ruby
45
- rubygems_version: 3.4.22
45
+ rubygems_version: 3.5.23
46
46
  signing_key:
47
47
  specification_version: 4
48
48
  summary: Easy option parsing