eac_cli 0.19.0 → 0.20.0

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
  SHA256:
3
- metadata.gz: cfee9c78c899be3c4e2d36915e4d0cac08cf5f2a63269813b5c05527a06d0e75
4
- data.tar.gz: c0374336ed9fea6c351ce00b0a9e5e210b53ca7a34c201dc1a0699fcda12b943
3
+ metadata.gz: 01eaf23ca5b82f1a1a84d97f24325055a8bc2729e00332bdc2605c1011cf41b9
4
+ data.tar.gz: 598aed6a1b0badb6c808f64e71f3cb52af7b61f70d54f9eddc395657868a7723
5
5
  SHA512:
6
- metadata.gz: d2e1c8009e10490cde982e4d8cc0fce02d67d0114ddb3a852180298c6f83edd7d5e4e2ee0bf04188199d615739297b3fdbf41a61d532e6614b86dece3c63b864
7
- data.tar.gz: fba7139e87ea3959a2498f20d83a08d19c299acd71e576ed0d446ca47a77bb97ab9e670c4280984001feb6467d6cdd01d3a989dc6b44b5e4d5345d9f87c66a0c
6
+ metadata.gz: d43adb8addf74169323f2e379e2eab2e8f772803b75e05ba9dc13548c412fe87cfcaba2e1bcc7ee8d6f44b369e09c96f51fe4d381ed6f56c54ee515f1c61c146
7
+ data.tar.gz: 28438b31ef94bb1a45e3cebe2c862abec2092ff91223aea69a80cdc1f99f6317b106b96af7177bc68cf4a25aeb59b0ef335f3f616fc6cefe351892deb002aace
@@ -10,7 +10,7 @@ module EacCli
10
10
  require_sub __FILE__, include_modules: true
11
11
  enable_listable
12
12
  enable_simple_cache
13
- include ::EacCli::Speaker
13
+ enable_speaker
14
14
 
15
15
  common_constructor :config, :path, :options do
16
16
  self.path = ::EacConfig::EntryPath.assert(path)
@@ -18,7 +18,7 @@ module EacCli
18
18
  end
19
19
 
20
20
  def undefined_value_no_loop
21
- request_input("Value for entry \"#{path}\"", options.request_input_options)
21
+ input("Value for entry \"#{path}\"", options.request_input_options)
22
22
  end
23
23
  end
24
24
  end
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'eac_ruby_utils/core_ext'
4
- require 'eac_cli/patches/module/speaker'
5
4
 
6
5
  module EacCli
7
6
  class OldConfigs
@@ -70,8 +70,8 @@ module EacCli
70
70
  end
71
71
 
72
72
  def entry_value_from_input(entry_key, options)
73
- entry_value = request_input("Value for entry \"#{entry_key}\"",
74
- options.request_input_options)
73
+ entry_value = input("Value for entry \"#{entry_key}\"",
74
+ options.request_input_options)
75
75
  warn('Entered value is blank') if entry_value.blank?
76
76
  entry_value
77
77
  end
@@ -1,26 +1,26 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'colorize'
4
- require 'io/console'
5
- require 'eac_ruby_utils/patches/hash/options_consumer'
6
- require 'eac_ruby_utils/require_sub'
7
- ::EacRubyUtils.require_sub __FILE__
4
+ require 'eac_ruby_utils/core_ext'
5
+ require 'eac_ruby_utils/speaker/receiver'
8
6
 
9
7
  module EacCli
10
- # https://github.com/fazibear/colorize
11
- module Speaker
12
- def on_speaker_node(&block)
13
- ::EacCli::Speaker.on_node(&block)
8
+ class Speaker
9
+ require_sub __FILE__, include_modules: true
10
+ include ::EacRubyUtils::Speaker::Receiver
11
+
12
+ common_constructor :options, default: [{}] do
13
+ self.options = self.class.lists.option.hash_keys_validate!(options)
14
14
  end
15
15
 
16
16
  def puts(string = '')
17
17
  string.to_s.each_line do |line|
18
- current_node.stderr.puts(current_node.stderr_line_prefix.to_s + line)
18
+ err_out.puts(err_line_prefix.to_s + line)
19
19
  end
20
20
  end
21
21
 
22
22
  def out(string = '')
23
- current_node.stdout.write(string.to_s)
23
+ out_out.write(string.to_s)
24
24
  end
25
25
 
26
26
  def fatal_error(string)
@@ -52,7 +52,7 @@ module EacCli
52
52
  # +bool+ ([Boolean], default: +false+): requires a answer "yes" or "no".
53
53
  # +list+ ([Hash] or [Array], default: +nil+): requires a answer from a list.
54
54
  # +noecho+ ([Boolean], default: +false+): does not output answer.
55
- def request_input(question, options = {})
55
+ def input(question, options = {})
56
56
  bool, list, noecho = options.to_options_consumer.consume_all(:bool, :list, :noecho)
57
57
  if list
58
58
  request_from_list(question, list, noecho)
@@ -110,22 +110,18 @@ module EacCli
110
110
  end
111
111
 
112
112
  def request_string(question, noecho)
113
- current_node.stderr.write "#{question}: ".to_s.yellow
113
+ err_out.write "#{question}: ".to_s.yellow
114
114
  noecho ? request_string_noecho : request_string_echo
115
115
  end
116
116
 
117
117
  def request_string_noecho
118
- r = current_node.stdin.noecho(&:gets).chomp.strip
119
- current_node.stderr.write("\n")
118
+ r = in_in.noecho(&:gets).chomp.strip
119
+ err_out.write("\n")
120
120
  r
121
121
  end
122
122
 
123
123
  def request_string_echo
124
- current_node.stdin.gets.chomp.strip
125
- end
126
-
127
- def current_node
128
- ::EacCli::Speaker.current_node
124
+ in_in.gets.chomp.strip
129
125
  end
130
126
  end
131
127
  end
@@ -4,7 +4,7 @@ require 'eac_ruby_utils/by_reference'
4
4
 
5
5
  module EacCli
6
6
  # https://github.com/fazibear/colorize
7
- module Speaker
7
+ class Speaker
8
8
  STDERR = ::EacRubyUtils::ByReference.new { $stderr }
9
9
  STDIN = ::EacRubyUtils::ByReference.new { $stdin }
10
10
  STDOUT = ::EacRubyUtils::ByReference.new { $stdout }
@@ -4,7 +4,7 @@ require 'active_support/hash_with_indifferent_access'
4
4
  require 'ostruct'
5
5
 
6
6
  module EacCli
7
- module Speaker
7
+ class Speaker
8
8
  class List
9
9
  class << self
10
10
  def build(list)
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EacCli
6
+ class Speaker
7
+ module Options
8
+ common_concern do
9
+ enable_listable
10
+ lists.add_symbol :option, :out_out, :err_out, :in_in, :parent, :err_line_prefix
11
+ end
12
+
13
+ def err_out
14
+ option(OPTION_ERR_OUT, ::EacCli::Speaker::STDERR)
15
+ end
16
+
17
+ def out_out
18
+ option(OPTION_OUT_OUT, ::EacCli::Speaker::STDOUT)
19
+ end
20
+
21
+ def in_in
22
+ option(OPTION_IN_IN, ::EacCli::Speaker::STDIN)
23
+ end
24
+
25
+ def err_line_prefix
26
+ option(OPTION_ERR_LINE_PREFIX, '')
27
+ end
28
+
29
+ def parent
30
+ options[OPTION_PARENT]
31
+ end
32
+
33
+ def option(key, default)
34
+ options[key] || parent.if_present(default) { |v| v.send(__METHOD__) }
35
+ end
36
+ end
37
+ end
38
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacCli
4
- VERSION = '0.19.0'
4
+ VERSION = '0.20.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eac_cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.19.0
4
+ version: 0.20.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esquilo Azul Company
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-02 00:00:00.000000000 Z
11
+ date: 2021-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0.64'
61
+ version: '0.67'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0.64'
68
+ version: '0.67'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: eac_ruby_gem_support
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -130,8 +130,6 @@ files:
130
130
  - lib/eac_cli/parser/collector.rb
131
131
  - lib/eac_cli/parser/error.rb
132
132
  - lib/eac_cli/patches.rb
133
- - lib/eac_cli/patches/module.rb
134
- - lib/eac_cli/patches/module/speaker.rb
135
133
  - lib/eac_cli/patches/object.rb
136
134
  - lib/eac_cli/patches/object/runner_with.rb
137
135
  - lib/eac_cli/runner.rb
@@ -145,10 +143,9 @@ files:
145
143
  - lib/eac_cli/runner_with/subcommands/definition_concern.rb
146
144
  - lib/eac_cli/runner_with_set.rb
147
145
  - lib/eac_cli/speaker.rb
148
- - lib/eac_cli/speaker/_class_methods.rb
149
146
  - lib/eac_cli/speaker/_constants.rb
150
147
  - lib/eac_cli/speaker/list.rb
151
- - lib/eac_cli/speaker/node.rb
148
+ - lib/eac_cli/speaker/options.rb
152
149
  - lib/eac_cli/version.rb
153
150
  homepage:
154
151
  licenses: []
@@ -1,4 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/require_sub'
4
- ::EacRubyUtils.require_sub(__FILE__)
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_cli/speaker'
4
- require 'eac_ruby_utils/patch'
5
-
6
- class Module
7
- def enable_speaker
8
- ::EacRubyUtils.patch(self, ::EacCli::Speaker)
9
- end
10
- end
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_cli/speaker/node'
4
-
5
- module EacCli
6
- module Speaker
7
- class << self
8
- def current_node
9
- nodes_stack.last
10
- end
11
-
12
- def on_node(&block)
13
- push
14
- yield(*(block.arity.zero? ? [] : [current_node]))
15
- ensure
16
- pop
17
- end
18
-
19
- def push
20
- nodes_stack << ::EacCli::Speaker::Node.new
21
- current_node
22
- end
23
-
24
- def pop
25
- return nodes_stack.pop if nodes_stack.count > 1
26
-
27
- raise "Cannot remove first node (nodes_stack.count: #{nodes_stack.count})"
28
- end
29
-
30
- private
31
-
32
- def nodes_stack
33
- @nodes_stack ||= [::EacCli::Speaker::Node.new]
34
- end
35
- end
36
- end
37
- end
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/patches/object/if_present'
4
- require 'eac_cli/speaker/_constants'
5
-
6
- module EacCli
7
- module Speaker
8
- class Node
9
- attr_accessor :stdin, :stdout, :stderr, :stderr_line_prefix
10
-
11
- def initialize(parent = nil)
12
- self.stdin = parent.if_present(::EacCli::Speaker::STDIN, &:stdin)
13
- self.stdout = parent.if_present(::EacCli::Speaker::STDOUT, &:stdout)
14
- self.stderr = parent.if_present(::EacCli::Speaker::STDERR, &:stderr)
15
- self.stderr_line_prefix = parent.if_present('', &:stderr_line_prefix)
16
- end
17
-
18
- def configure
19
- yield(self)
20
- self
21
- end
22
- end
23
- end
24
- end