appl 1.16 → 1.18

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