eac_cli 0.19.0 → 0.20.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 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