baf 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: eb7e742e40fa882d844b78c036a6bca5f131c171
4
- data.tar.gz: 37d3817b1e22de1bfc64893e160348def169cc21
3
+ metadata.gz: 1991efb68636435cda379110ba0131f4215c43d0
4
+ data.tar.gz: b72d0e15f29acddc4644a4d93d1cf47a25c06cc7
5
5
  SHA512:
6
- metadata.gz: df951baa4362f0ab932d930cb01f90e903008cb3bfb2274ecb8af91d42e6234d621fe25c946ac60b8f8d692d711e440c398491d83722cb7347dc1bb9f6b068d9
7
- data.tar.gz: 808326c6382a87fd570dabd173c50958929702cf32ffc22363acda37ab933af0ce94f33e82fa611c0284fc916bbb590e907d6ab09017e42f1f6592e9a4b1507f
6
+ metadata.gz: cfbd178801b266b25d26c04cfff28ddb1a9df4eed78aff69716583fab76d8c5236447eef3f260c7ae4237d5e7e55c5178bdd458c7714950f305b80cf442447da
7
+ data.tar.gz: b972cc8676106807bd668ece76a2ffd8190129d66ff6104c52462676f07c014a36d23488e9e07b39b5ed2471036a7ef60da02fad54c789a5d4c8b7762fde7aae
@@ -54,6 +54,10 @@ module Baf
54
54
  flag :v, 'verbose'
55
55
  end
56
56
 
57
+ def flag_version version
58
+ flag :V, 'version', -> env { env.puts version }
59
+ end
60
+
57
61
  def option *args
58
62
  registrant.option *args
59
63
  end
@@ -3,7 +3,7 @@ require 'forwardable'
3
3
  module Baf
4
4
  class Env
5
5
  extend Forwardable
6
- def_delegator :@output, :print
6
+ def_delegators :@output, :print, :puts
7
7
 
8
8
  def initialize output
9
9
  @output = output
@@ -1,11 +1,31 @@
1
1
  module Baf
2
- Option = Struct.new('Option', :short, :long, :arg, :desc) do
2
+ class Option
3
+ attr_accessor :short, :long, :arg, :desc, :block
4
+
5
+ def initialize *args
6
+ attrs = args.size > 1 ? build_attrs(*args) : args[0]
7
+ attrs.each { |k, v| send :"#{k}=", v }
8
+ end
9
+
3
10
  def to_parser_arguments
4
11
  ["-#{short}", parser_argument_long, desc]
5
12
  end
6
13
 
7
14
  protected
8
15
 
16
+ def build_attrs(short, long, arg_or_block = nil, desc = nil)
17
+ {
18
+ short: short,
19
+ long: long,
20
+ desc: desc
21
+ }.tap do |attrs|
22
+ case arg_or_block
23
+ when Proc then attrs[:block] = arg_or_block
24
+ when String then attrs[:arg] = arg_or_block
25
+ end
26
+ end
27
+ end
28
+
9
29
  def parser_argument_long
10
30
  [
11
31
  '--' + long.to_s.tr(?_, ?-),
@@ -13,10 +13,15 @@ module Baf
13
13
  end
14
14
  end
15
15
 
16
- def flag short, long
17
- define_env_flag env, long
18
- parser.on "-#{short}", "--#{long}", "enable #{long} mode" do
19
- env.send :"#{long}=", true
16
+ def flag *args
17
+ opt = Option.new(*args)
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
20
25
  end
21
26
  end
22
27
 
@@ -1,3 +1,3 @@
1
1
  module Baf
2
- VERSION = '0.1.0'.freeze
2
+ VERSION = '0.1.1'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: baf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thibault Jouan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-08 00:00:00.000000000 Z
11
+ date: 2016-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: baf-testing