-
-
Notifications
You must be signed in to change notification settings - Fork 90
/
Copy pathcatch_all.rb
55 lines (46 loc) · 1.06 KB
/
catch_all.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
module Bashly
module Script
class CatchAll
class << self
def option_keys
@option_keys ||= %i[label help required]
end
def from_config(config)
options = case config
when nil
{ enabled: false }
when String
{ label: config }
when Hash
{ label: config['label'], help: config['help'], required: config['required'] }
else
{}
end
new(**options)
end
end
def initialize(label: nil, help: nil, required: false, enabled: true)
@label = label
@help = help
@required = required
@enabled = enabled
end
def enabled?
@enabled
end
def label
enabled? ? "#{@label&.upcase}..." : nil
end
def help
enabled? ? @help : nil
end
def required?
@required
end
def usage_string
return nil unless enabled?
required? ? "[--] #{label}" : "[--] [#{label}]"
end
end
end
end