baf 0.2.0 → 0.2.1
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/lib/baf/cli.rb +5 -5
- data/lib/baf/option.rb +13 -3
- data/lib/baf/options_registrant.rb +56 -25
- data/lib/baf/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4ae9e185856672962cc03ee541efbfaeaacf3f64
|
4
|
+
data.tar.gz: 96e339bd95ee8a9695973df19dba8a0fa26220ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c43bd18e04dbddb92053d3842bd232ff7b889aa4690da333268ff738ccaa3331115b5462c5accbc981a95fda149baab7a22c2f26fbc7910fffcd283d509d12d
|
7
|
+
data.tar.gz: aecf2e2f7d9c2b58c95739613a933c9dee2846d699c3f3c09250b29b4fe22b8f708a2a2e873fc914cae502d9ccbfdccc31df97dd4f61bb1c34919424c49db5cc
|
data/lib/baf/cli.rb
CHANGED
@@ -35,8 +35,7 @@ module Baf
|
|
35
35
|
@parser = opts[:parser] || OptionParser.new
|
36
36
|
@registrant = opts[:registrant] || OptionsRegistrant.new(env, parser)
|
37
37
|
|
38
|
-
registrant.
|
39
|
-
setup
|
38
|
+
registrant.register { setup }
|
40
39
|
end
|
41
40
|
|
42
41
|
def setup
|
@@ -47,15 +46,16 @@ module Baf
|
|
47
46
|
end
|
48
47
|
|
49
48
|
def flag_debug
|
50
|
-
flag :d,
|
49
|
+
flag :d, :debug
|
51
50
|
end
|
52
51
|
|
53
52
|
def flag_verbose
|
54
|
-
flag :v,
|
53
|
+
flag :v, :verbose
|
55
54
|
end
|
56
55
|
|
57
56
|
def flag_version version
|
58
|
-
flag :V,
|
57
|
+
flag :V, :version, 'print version', -> env { env.puts version },
|
58
|
+
tail: true
|
59
59
|
end
|
60
60
|
|
61
61
|
def option *args
|
data/lib/baf/option.rb
CHANGED
@@ -1,10 +1,20 @@
|
|
1
1
|
module Baf
|
2
2
|
class Option
|
3
|
-
attr_accessor :short, :long, :arg, :desc, :block
|
3
|
+
attr_accessor :short, :long, :arg, :desc, :block, :flag, :tail
|
4
4
|
|
5
|
-
def initialize *args
|
5
|
+
def initialize *args, flag: false, tail: false
|
6
6
|
attrs = args.size > 1 ? build_attrs(*args) : args[0]
|
7
7
|
attrs.each { |k, v| send :"#{k}=", v }
|
8
|
+
self.flag = flag
|
9
|
+
self.tail = tail
|
10
|
+
end
|
11
|
+
|
12
|
+
def flag?
|
13
|
+
!!flag
|
14
|
+
end
|
15
|
+
|
16
|
+
def tail?
|
17
|
+
!!tail
|
8
18
|
end
|
9
19
|
|
10
20
|
def to_parser_arguments
|
@@ -13,7 +23,7 @@ module Baf
|
|
13
23
|
|
14
24
|
protected
|
15
25
|
|
16
|
-
def build_attrs
|
26
|
+
def build_attrs short, long, arg_or_desc = nil, desc_or_block = nil
|
17
27
|
{
|
18
28
|
short: short,
|
19
29
|
long: long
|
@@ -1,41 +1,35 @@
|
|
1
|
+
require 'baf/option'
|
2
|
+
|
1
3
|
module Baf
|
2
4
|
class OptionsRegistrant
|
3
|
-
|
4
|
-
@env = env
|
5
|
-
@parser = parser
|
6
|
-
end
|
5
|
+
SUMMARY_HEADER = "\noptions:".freeze
|
7
6
|
|
8
|
-
def
|
9
|
-
|
10
|
-
parser
|
11
|
-
|
12
|
-
env.print parser
|
13
|
-
end
|
7
|
+
def initialize env, parser, options = []
|
8
|
+
@env = env
|
9
|
+
@parser = parser
|
10
|
+
@options = options
|
14
11
|
end
|
15
12
|
|
16
|
-
def flag *args
|
17
|
-
|
18
|
-
if opt.block
|
19
|
-
parser.on(*opt.to_parser_arguments) { opt.block[env] }
|
20
|
-
else
|
21
|
-
define_env_flag env, opt.long
|
22
|
-
parser.on "-#{opt.short}", "--#{opt.long}", "enable #{opt.long} mode" do
|
23
|
-
env.send :"#{opt.long}=", true
|
24
|
-
end
|
25
|
-
end
|
13
|
+
def flag *args, **opts
|
14
|
+
options << Option.new(*args, flag: true, **opts)
|
26
15
|
end
|
27
16
|
|
28
17
|
def option *args
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
18
|
+
options << Option.new(*args)
|
19
|
+
end
|
20
|
+
|
21
|
+
def register
|
22
|
+
yield if block_given?
|
23
|
+
parser.separator SUMMARY_HEADER
|
24
|
+
options.each do |opt|
|
25
|
+
if opt.flag? then register_flag opt else register_option opt end
|
33
26
|
end
|
27
|
+
register_default_options
|
34
28
|
end
|
35
29
|
|
36
30
|
protected
|
37
31
|
|
38
|
-
attr_reader :env, :parser, :
|
32
|
+
attr_reader :env, :parser, :options
|
39
33
|
|
40
34
|
def define_env_accessor env, name
|
41
35
|
(class << env; self end).send :attr_accessor, name
|
@@ -49,5 +43,42 @@ module Baf
|
|
49
43
|
end
|
50
44
|
env.instance_variable_set :"@#{name}", false
|
51
45
|
end
|
46
|
+
|
47
|
+
def env_flag! name
|
48
|
+
env_flag_set name, true
|
49
|
+
end
|
50
|
+
|
51
|
+
def env_flag_set name, value
|
52
|
+
env.send :"#{name}=", value
|
53
|
+
end
|
54
|
+
|
55
|
+
def register_default_options
|
56
|
+
parser.separator '' if options.any?
|
57
|
+
parser.on_tail '-h', '--help', 'print this message' do
|
58
|
+
env.print parser
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def register_flag opt
|
63
|
+
position = opt.tail ? :on_tail : :on
|
64
|
+
if opt.block
|
65
|
+
parser.send position, *opt.to_parser_arguments do
|
66
|
+
opt.block[env]
|
67
|
+
end
|
68
|
+
else
|
69
|
+
define_env_flag env, opt.long
|
70
|
+
parser.send position,
|
71
|
+
"-#{opt.short}", "--#{opt.long}", "enable #{opt.long} mode" do
|
72
|
+
env_flag! opt.long
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def register_option opt
|
78
|
+
define_env_accessor env, opt.long
|
79
|
+
parser.on *opt.to_parser_arguments do |v|
|
80
|
+
self.env_flag_set opt.long, v
|
81
|
+
end
|
82
|
+
end
|
52
83
|
end
|
53
84
|
end
|
data/lib/baf/version.rb
CHANGED