baf 0.0.2 → 0.0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fdbb678fca1424651ded0c54c5983915b3ca7d04
4
- data.tar.gz: bd7557646c1eff5b19daa9aa6f21b3cd9cd49953
3
+ metadata.gz: 7b5885bd5c54f82a2332b2af104090112ba279bb
4
+ data.tar.gz: fc785f6261b8aa42c23ccd04ed822d314cd82ae7
5
5
  SHA512:
6
- metadata.gz: 7385fda52a9b80301c0b5fdfd5bb3fb732debcde8d7aee68f5eb77c129f96052d3b93a1df938b73546126d374cc55e1f0fd7f0f9fabd560b7c0e9f2bbc72cc76
7
- data.tar.gz: d487f12253679abf4b5b7bef4c6c3fdb3b266aae1fbcae2ccdcb4b32eaf544cb7d61709a59a2867ea393031f8d1906d37a8e176acfb6389fce31e25de64c4611
6
+ metadata.gz: c6f56b483aa1c0173b1993634b4b066324c1d30586a8c129bc943a91bc9b4011d4887de4c8cbdd892aeb6f99d0007b9cf261192759e6c56e8b02273bcb930ad2
7
+ data.tar.gz: f8f09d9a661222facdd6a0768fc6d814396c4fceda131ed4c40db4ec39fdca2ee0869b37d8769586cd97d0bb41660249e57397f26f139df177a940fa90a82455
data/lib/baf.rb CHANGED
@@ -3,7 +3,7 @@ require 'optparse'
3
3
 
4
4
  require 'baf/cli'
5
5
  require 'baf/env'
6
- require 'baf/option_registrant'
6
+ require 'baf/options_registrant'
7
7
 
8
8
  module Baf
9
9
  Error = Class.new(::StandardError)
data/lib/baf/cli.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'baf/options_registrant'
2
+
1
3
  module Baf
2
4
  class CLI
3
5
  ArgumentError = Class.new(ArgumentError)
@@ -5,17 +7,36 @@ module Baf
5
7
  EX_USAGE = 64
6
8
  EX_SOFTWARE = 70
7
9
 
10
+ CONFIG_DEFAULTS = {
11
+ flags: [],
12
+ options: [],
13
+ parser: OptionParser.new,
14
+ registrant: OptionsRegistrant
15
+ }.freeze
16
+
8
17
  class << self
9
- def flag *args, registrant: OptionRegistrant
10
- registrant.register_flag env, option_parser, *args
18
+ def config
19
+ @config ||= CONFIG_DEFAULTS.dup
11
20
  end
12
21
 
13
- def option *args, registrant: OptionRegistrant
14
- registrant.register_option env, option_parser, Option.new(*args)
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)
15
36
  end
16
37
 
17
38
  def run arguments, stdout: $stdout, stderr: $stderr
18
- cli = new env(stdout), option_parser, arguments
39
+ cli = new Env.new(stdout), arguments, config
19
40
  cli.parse_arguments!
20
41
  cli.run
21
42
  rescue ArgumentError => e
@@ -30,23 +51,16 @@ module Baf
30
51
  protected
31
52
 
32
53
  Option = Struct.new('Option', :short, :long, :arg, :desc)
33
-
34
- def env output = nil
35
- @env ||= Env.new(output)
36
- end
37
-
38
- def option_parser
39
- @option_parser ||= OptionParser.new
40
- end
41
54
  end
42
55
 
43
56
  attr_reader :arguments, :env, :option_parser
44
57
 
45
- def initialize env, option_parser, arguments
58
+ def initialize env, arguments, config
46
59
  @env = env
47
- @option_parser = option_parser
60
+ @option_parser = config[:parser]
48
61
  @arguments = arguments
49
- setup_default_options option_parser
62
+
63
+ config[:registrant].register env, config[:parser], config
50
64
  end
51
65
 
52
66
  def parse_arguments!
@@ -57,15 +71,5 @@ module Baf
57
71
 
58
72
  def run
59
73
  end
60
-
61
- protected
62
-
63
- def setup_default_options option_parser
64
- option_parser.separator ''
65
- option_parser.separator 'options:'
66
- option_parser.on_tail '-h', '--help', 'print this message' do
67
- env.print option_parser
68
- end
69
- end
70
74
  end
71
75
  end
@@ -0,0 +1,60 @@
1
+ module Baf
2
+ class OptionsRegistrant
3
+ class << self
4
+ def register *args
5
+ new(*args).register
6
+ end
7
+ end
8
+
9
+ def initialize env, parser, config
10
+ @env = env
11
+ @parser = parser
12
+ @config = config
13
+ end
14
+
15
+ def register
16
+ declare_default_options
17
+ config[:flags].each { |o| flag o.short, o.long }
18
+ config[:options].each { |o| option o }
19
+ end
20
+
21
+ def flag short, long
22
+ define_env_flag env, long
23
+ parser.on "-#{short}", "--#{long}", "enable #{long} mode" do
24
+ env.send :"#{long}=", true
25
+ end
26
+ end
27
+
28
+ def option opt
29
+ define_env_accessor env, opt.long
30
+ parser.on "-#{opt.short}", "--#{opt.long} #{opt.arg}", opt.desc do |v|
31
+ env.send :"#{opt.long}=", v
32
+ end
33
+ end
34
+
35
+ protected
36
+
37
+ attr_reader :env, :parser, :config
38
+
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
+ def define_env_accessor env, name
48
+ (class << env; self end).send :attr_accessor, name
49
+ end
50
+
51
+ def define_env_flag env, name
52
+ define_env_accessor env, name
53
+ env.send :"#{name}=", false
54
+ env.define_singleton_method :"#{name}?" do
55
+ instance_variable_get :"@#{name}"
56
+ end
57
+ env.instance_variable_set :"@#{name}", false
58
+ end
59
+ end
60
+ end
@@ -1,5 +1,5 @@
1
1
  def program_run check: false, opts: nil, args: nil
2
- cmd = %w[ruby baf]
2
+ cmd = [*@_baf_program ||= %w[ruby baf]]
3
3
  cmd << opts if opts
4
4
  cmd << args.split(' ') if args
5
5
  run_simple cmd.join(' '), fail_on_error: false
@@ -36,3 +36,7 @@ end
36
36
  Then /^the exit status must be (\d+)$/ do |exit_status|
37
37
  program_run_check status: exit_status.to_i
38
38
  end
39
+
40
+ Then /^the program must terminate successfully$/ do
41
+ program_run_check status: 0
42
+ end
@@ -8,13 +8,17 @@ def build_regexp pattern, options
8
8
  end)
9
9
  end
10
10
 
11
+ def expect_output content
12
+ expect(last_command_started.output).to eq unescape_text content
13
+ end
14
+
11
15
 
12
16
  Then /^the output must contain exactly:$/ do |content|
13
- expect(last_command_started.output).to eq unescape_text content + $/
17
+ expect_output content + $/
14
18
  end
15
19
 
16
20
  Then /^the output must contain exactly "([^"]+)"$/ do |content|
17
- expect(last_command_started.output).to eq unescape_text content
21
+ expect_output content
18
22
  end
19
23
 
20
24
  Then /^the output must match \/([^\/]+)\/([a-z]*)$/ do |pattern, options|
data/lib/baf/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Baf
2
- VERSION = '0.0.2'.freeze
2
+ VERSION = '0.0.3'.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.0.2
4
+ version: 0.0.3
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-02-22 00:00:00.000000000 Z
11
+ date: 2016-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aruba
@@ -81,7 +81,7 @@ files:
81
81
  - lib/baf.rb
82
82
  - lib/baf/cli.rb
83
83
  - lib/baf/env.rb
84
- - lib/baf/option_registrant.rb
84
+ - lib/baf/options_registrant.rb
85
85
  - lib/baf/testing/cucumber.rb
86
86
  - lib/baf/testing/cucumber/steps/execution.rb
87
87
  - lib/baf/testing/cucumber/steps/output.rb
@@ -1,34 +0,0 @@
1
- module Baf
2
- class OptionRegistrant
3
- class << self
4
- def register_flag env, parser, short, long
5
- define_env_flag env, long
6
- parser.on "-#{short}", "--#{long}", "enable #{long} mode" do
7
- env.send :"#{long}=", true
8
- end
9
- end
10
-
11
- def register_option env, parser, opt
12
- define_env_accessor env, opt.long
13
- parser.on "-#{opt.short}", "--#{opt.long} #{opt.arg}", opt.desc do |v|
14
- env.send :"#{opt.long}=", v
15
- end
16
- end
17
-
18
- protected
19
-
20
- def define_env_accessor env, name
21
- (class << env; self end).send :attr_accessor, name
22
- end
23
-
24
- def define_env_flag env, name
25
- define_env_accessor env, name
26
- env.send :"#{name}=", false
27
- env.define_singleton_method :"#{name}?" do
28
- instance_variable_get :"@#{name}"
29
- end
30
- env.instance_variable_set :"@#{name}", false
31
- end
32
- end
33
- end
34
- end