eac_cli 0.14.0 → 0.15.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: 8ca942fefac703528e400de1a095cad1dd85d648895eabf7cfdf51ac430b34fe
4
- data.tar.gz: 73f8e8c595e7669756b134d35576a1a3f873b67dfda1def674ea02d4a60173a7
3
+ metadata.gz: adea15fa71d63d7ee84ffd7978a582098b9e582a8ab32bdf2f332d1fc06abffa
4
+ data.tar.gz: c8d7a4875e1d551a45e9cd6ad7dbdd26107ed296008ce068df3166a0a53d242a
5
5
  SHA512:
6
- metadata.gz: 95cbcedfb77ca5d9fd3a3ffe2f818d9a8866d6774cc25bf3964f0a0fa1c81a3014afb6f3a26cb32393fd84fe76e56e159a5be22f0780e5d916b1d66f90a08961
7
- data.tar.gz: 4a9cf2040a0cdae39543379f3da011931d11bbc22c15aca1a0c88838a592215d80c6fd413b034f66c991487d7f6a5b32eecc9b9d29530c787aba09c3f48c4daa
6
+ metadata.gz: f62270d724e15ef2ee006d0f74cf065b09a97bae467ce629c47b7e3a90a48131f1b0f555255215bf94ffe4576668ab060eda77c89cc8c119b2847b919690d6b7
7
+ data.tar.gz: 30fec20cf4e1e3c121c943edee3044b8c636219e45434ea8f1847bccaee5d904d6980dcba9a48e228b4928923f24ad6acea43cb5c5615d6a86b4065f6f6aad32
@@ -2,3 +2,5 @@
2
2
 
3
3
  require 'eac_ruby_utils/core_ext'
4
4
  require 'eac_cli/patches'
5
+
6
+ ::EacCli::RunnerWithSet.default.add_namespace(::EacCli::RunnerWith)
@@ -3,6 +3,7 @@
3
3
  require 'eac_ruby_utils/core_ext'
4
4
  require 'eac_cli/runner'
5
5
  require 'eac_cli/runner_with'
6
+ require 'eac_cli/runner_with_set'
6
7
 
7
8
  class Object
8
9
  def runner_with(*runners, &block)
@@ -10,7 +11,7 @@ class Object
10
11
  enable_simple_cache
11
12
  enable_console_speaker
12
13
  runners.each do |runner|
13
- include runner_with_to_module(runner)
14
+ include ::EacCli::RunnerWithSet.default.item_to_module(runner)
14
15
  end
15
16
  runner_definition(&block) if block
16
17
  end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacCli
4
+ class RunnerWithSet
5
+ class << self
6
+ def default
7
+ @default ||= new
8
+ end
9
+ end
10
+
11
+ def add_namespace(namespace)
12
+ namespace = sanitize_namespace(namespace)
13
+ raise "\"#{namespace}\" already was included" if namespace_set.include?(namespace)
14
+
15
+ namespace_set << namespace
16
+ self
17
+ end
18
+
19
+ def item_to_module(item)
20
+ item.is_a?(::Module) ? item : key_to_module(item)
21
+ end
22
+
23
+ def namespaces
24
+ namespace_set.dup
25
+ end
26
+
27
+ private
28
+
29
+ def namespace_set
30
+ @namespace_set ||= ::Array.new
31
+ end
32
+
33
+ def key_to_module(key)
34
+ namespace_set.lazy
35
+ .map { |namespace| key_to_module_in_namespace(namespace, key) }
36
+ .find(&:present?) ||
37
+ raise("Not module found with key \"#{key}\" (Namespaces: #{namespace_set})")
38
+ end
39
+
40
+ def key_to_module_in_namespace(namespace, key)
41
+ namespace.const_get(key.to_s.camelize)
42
+ rescue ::NameError
43
+ nil
44
+ end
45
+
46
+ def sanitize_namespace(source)
47
+ source.is_a?(::Module) ? source : source.to_s.constantize
48
+ end
49
+ end
50
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacCli
4
- VERSION = '0.14.0'
4
+ VERSION = '0.15.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.14.0
4
+ version: 0.15.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-02-14 00:00:00.000000000 Z
11
+ date: 2021-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eac_ruby_utils
@@ -89,6 +89,7 @@ files:
89
89
  - lib/eac_cli/runner_with/help.rb
90
90
  - lib/eac_cli/runner_with/output_file.rb
91
91
  - lib/eac_cli/runner_with/subcommands.rb
92
+ - lib/eac_cli/runner_with_set.rb
92
93
  - lib/eac_cli/version.rb
93
94
  homepage:
94
95
  licenses: []