baf 0.0.3 → 0.1.0
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.rb +0 -7
- data/lib/baf/cli.rb +38 -39
- data/lib/baf/env.rb +2 -0
- data/lib/baf/option.rb +16 -0
- data/lib/baf/options_registrant.rb +10 -22
- data/lib/baf/version.rb +1 -1
- metadata +6 -39
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb7e742e40fa882d844b78c036a6bca5f131c171
|
4
|
+
data.tar.gz: 37d3817b1e22de1bfc64893e160348def169cc21
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: df951baa4362f0ab932d930cb01f90e903008cb3bfb2274ecb8af91d42e6234d621fe25c946ac60b8f8d692d711e440c398491d83722cb7347dc1bb9f6b068d9
|
7
|
+
data.tar.gz: 808326c6382a87fd570dabd173c50958929702cf32ffc22363acda37ab933af0ce94f33e82fa611c0284fc916bbb590e907d6ab09017e42f1f6592e9a4b1507f
|
data/lib/baf.rb
CHANGED
data/lib/baf/cli.rb
CHANGED
@@ -1,42 +1,20 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
3
|
+
require 'baf'
|
4
|
+
require 'baf/env'
|
5
|
+
require 'baf/option'
|
1
6
|
require 'baf/options_registrant'
|
2
7
|
|
3
8
|
module Baf
|
4
9
|
class CLI
|
5
|
-
ArgumentError = Class.new(ArgumentError)
|
10
|
+
ArgumentError = Class.new(::Baf::ArgumentError)
|
6
11
|
|
7
12
|
EX_USAGE = 64
|
8
13
|
EX_SOFTWARE = 70
|
9
14
|
|
10
|
-
CONFIG_DEFAULTS = {
|
11
|
-
flags: [],
|
12
|
-
options: [],
|
13
|
-
parser: OptionParser.new,
|
14
|
-
registrant: OptionsRegistrant
|
15
|
-
}.freeze
|
16
|
-
|
17
15
|
class << self
|
18
|
-
def config
|
19
|
-
@config ||= CONFIG_DEFAULTS.dup
|
20
|
-
end
|
21
|
-
|
22
|
-
def flag *args
|
23
|
-
config[:flags] << Option.new(*args)
|
24
|
-
end
|
25
|
-
|
26
|
-
def flag_verbose
|
27
|
-
config[:flags] << Option.new(:v, 'verbose')
|
28
|
-
end
|
29
|
-
|
30
|
-
def flag_debug
|
31
|
-
config[:flags] << Option.new(:d, 'debug')
|
32
|
-
end
|
33
|
-
|
34
|
-
def option *args
|
35
|
-
config[:options] << Option.new(*args)
|
36
|
-
end
|
37
|
-
|
38
16
|
def run arguments, stdout: $stdout, stderr: $stderr
|
39
|
-
cli = new Env.new(stdout), arguments
|
17
|
+
cli = new Env.new(stdout), arguments
|
40
18
|
cli.parse_arguments!
|
41
19
|
cli.run
|
42
20
|
rescue ArgumentError => e
|
@@ -47,29 +25,50 @@ module Baf
|
|
47
25
|
stderr.puts e.backtrace.map { |l| ' %s' % l }
|
48
26
|
exit EX_SOFTWARE
|
49
27
|
end
|
28
|
+
end
|
29
|
+
|
30
|
+
attr_reader :arguments, :env, :parser
|
50
31
|
|
51
|
-
|
32
|
+
def initialize env, arguments, **opts
|
33
|
+
@env = env
|
34
|
+
@arguments = arguments
|
35
|
+
@parser = opts[:parser] || OptionParser.new
|
36
|
+
@registrant = opts[:registrant] || OptionsRegistrant.new(env, parser)
|
52
37
|
|
53
|
-
|
38
|
+
registrant.register_default_options
|
39
|
+
setup
|
54
40
|
end
|
55
41
|
|
56
|
-
|
42
|
+
def setup
|
43
|
+
end
|
57
44
|
|
58
|
-
def
|
59
|
-
|
60
|
-
|
61
|
-
@arguments = arguments
|
45
|
+
def flag *args
|
46
|
+
registrant.flag *args
|
47
|
+
end
|
62
48
|
|
63
|
-
|
49
|
+
def flag_debug
|
50
|
+
flag :d, 'debug'
|
51
|
+
end
|
52
|
+
|
53
|
+
def flag_verbose
|
54
|
+
flag :v, 'verbose'
|
55
|
+
end
|
56
|
+
|
57
|
+
def option *args
|
58
|
+
registrant.option *args
|
64
59
|
end
|
65
60
|
|
66
61
|
def parse_arguments!
|
67
|
-
|
62
|
+
parser.parse! arguments
|
68
63
|
rescue OptionParser::InvalidOption
|
69
|
-
raise ArgumentError,
|
64
|
+
raise ArgumentError, parser
|
70
65
|
end
|
71
66
|
|
72
67
|
def run
|
73
68
|
end
|
69
|
+
|
70
|
+
private
|
71
|
+
|
72
|
+
attr_reader :registrant
|
74
73
|
end
|
75
74
|
end
|
data/lib/baf/env.rb
CHANGED
data/lib/baf/option.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
module Baf
|
2
|
+
Option = Struct.new('Option', :short, :long, :arg, :desc) do
|
3
|
+
def to_parser_arguments
|
4
|
+
["-#{short}", parser_argument_long, desc]
|
5
|
+
end
|
6
|
+
|
7
|
+
protected
|
8
|
+
|
9
|
+
def parser_argument_long
|
10
|
+
[
|
11
|
+
'--' + long.to_s.tr(?_, ?-),
|
12
|
+
arg
|
13
|
+
].join ' '
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -1,21 +1,16 @@
|
|
1
1
|
module Baf
|
2
2
|
class OptionsRegistrant
|
3
|
-
|
4
|
-
def register *args
|
5
|
-
new(*args).register
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
def initialize env, parser, config
|
3
|
+
def initialize env, parser
|
10
4
|
@env = env
|
11
5
|
@parser = parser
|
12
|
-
@config = config
|
13
6
|
end
|
14
7
|
|
15
|
-
def
|
16
|
-
|
17
|
-
|
18
|
-
|
8
|
+
def register_default_options
|
9
|
+
parser.separator ''
|
10
|
+
parser.separator 'options:'
|
11
|
+
parser.on_tail '-h', '--help', 'print this message' do
|
12
|
+
env.print parser
|
13
|
+
end
|
19
14
|
end
|
20
15
|
|
21
16
|
def flag short, long
|
@@ -25,9 +20,10 @@ module Baf
|
|
25
20
|
end
|
26
21
|
end
|
27
22
|
|
28
|
-
def option
|
23
|
+
def option *args
|
24
|
+
opt = Option.new(*args)
|
29
25
|
define_env_accessor env, opt.long
|
30
|
-
parser.on
|
26
|
+
parser.on *opt.to_parser_arguments do |v|
|
31
27
|
env.send :"#{opt.long}=", v
|
32
28
|
end
|
33
29
|
end
|
@@ -36,14 +32,6 @@ module Baf
|
|
36
32
|
|
37
33
|
attr_reader :env, :parser, :config
|
38
34
|
|
39
|
-
def declare_default_options
|
40
|
-
parser.separator ''
|
41
|
-
parser.separator 'options:'
|
42
|
-
parser.on_tail '-h', '--help', 'print this message' do
|
43
|
-
env.print parser
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
35
|
def define_env_accessor env, name
|
48
36
|
(class << env; self end).send :attr_accessor, name
|
49
37
|
end
|
data/lib/baf/version.rb
CHANGED
metadata
CHANGED
@@ -1,49 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: baf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
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-
|
11
|
+
date: 2016-03-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: baf-testing
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
20
|
-
- - "<"
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: '0.12'
|
23
|
-
type: :development
|
24
|
-
prerelease: false
|
25
|
-
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
requirements:
|
27
|
-
- - "~>"
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '0.11'
|
30
|
-
- - "<"
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: '0.12'
|
33
|
-
- !ruby/object:Gem::Dependency
|
34
|
-
name: cucumber
|
35
|
-
requirement: !ruby/object:Gem::Requirement
|
36
|
-
requirements:
|
37
|
-
- - "~>"
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: '2.0'
|
19
|
+
version: '0.0'
|
40
20
|
type: :development
|
41
21
|
prerelease: false
|
42
22
|
version_requirements: !ruby/object:Gem::Requirement
|
43
23
|
requirements:
|
44
24
|
- - "~>"
|
45
25
|
- !ruby/object:Gem::Version
|
46
|
-
version: '
|
26
|
+
version: '0.0'
|
47
27
|
- !ruby/object:Gem::Dependency
|
48
28
|
name: rake
|
49
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,20 +38,6 @@ dependencies:
|
|
58
38
|
- - "~>"
|
59
39
|
- !ruby/object:Gem::Version
|
60
40
|
version: '10.4'
|
61
|
-
- !ruby/object:Gem::Dependency
|
62
|
-
name: rspec
|
63
|
-
requirement: !ruby/object:Gem::Requirement
|
64
|
-
requirements:
|
65
|
-
- - "~>"
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version: '3.4'
|
68
|
-
type: :development
|
69
|
-
prerelease: false
|
70
|
-
version_requirements: !ruby/object:Gem::Requirement
|
71
|
-
requirements:
|
72
|
-
- - "~>"
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
version: '3.4'
|
75
41
|
description: Basic Application Framework
|
76
42
|
email: tj@a13.fr
|
77
43
|
executables: []
|
@@ -81,6 +47,7 @@ files:
|
|
81
47
|
- lib/baf.rb
|
82
48
|
- lib/baf/cli.rb
|
83
49
|
- lib/baf/env.rb
|
50
|
+
- lib/baf/option.rb
|
84
51
|
- lib/baf/options_registrant.rb
|
85
52
|
- lib/baf/testing/cucumber.rb
|
86
53
|
- lib/baf/testing/cucumber/steps/execution.rb
|