avm 0.44.0 → 0.45.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: 75da0735d17a4472beabdba8b1a848bd1df14e0e8b630885bbf2b1503d198e14
4
- data.tar.gz: 4d71ad19868decc5d8eebcd01b71a1a518702345a06521edb0c27f55bd25cca5
3
+ metadata.gz: edce5f54d8e35b2991eca7c296980c8102a3f9de6079df2c3841660d91a5a09a
4
+ data.tar.gz: 1f3bb4e92e4a1d342490b54843f505c641479eec2af609dfb5c70ee81de4101f
5
5
  SHA512:
6
- metadata.gz: 8e75c632a176c1f15431466cf0fe85c53fcbaccf5d914e643b7a5a51ef17bc8a41ea7c5b2d6253feb0587557d01d66a40b7073ac375115f7e07afe1ffa13d694
7
- data.tar.gz: d3c82791118497839cea0c53d9e8d838dedf1db1a7f462c022ea24d82411774f86db27b9e0e8d40b844a09ad6c2f918f0b23802f58f489e03490bc52f10d526f
6
+ metadata.gz: 2f827370664e3b78a4808a57227b5791da8a9185522a11081a6d50f05493648135e0734a680f2abbc1fc902775249f4011cad1f669bef8f6127258edd7b357f9
7
+ data.tar.gz: c95a5acd8db7c9c8ceb104cd203c9a30bdd1438de79309869cac1c3ed1ab1d8178b91f42b436a63ec312a54fe6ef9166c9f7395d26b35b826633856f7d43af03
@@ -8,15 +8,22 @@ module Avm
8
8
  module AutoValues
9
9
  class Entry
10
10
  class << self
11
- def auto_value_method_name(suffix)
12
- "auto_#{suffix.to_s.gsub('.', '_')}"
11
+ # @param path [EacConfig::EntryPath]
12
+ # @return String
13
+ def auto_value_method_name(path)
14
+ "auto_#{::EacConfig::EntryPath.assert(path).to_string.gsub('.', '_')}"
13
15
  end
14
16
  end
15
17
 
16
- common_constructor :entries_provider, :suffix
18
+ # @!method initialize(entries_provider, path)
19
+ # @param entries_provider
20
+ # @param path [EacConfig::EntryPath]
21
+ common_constructor :entries_provider, :path do
22
+ self.path = ::EacConfig::EntryPath.assert(path)
23
+ end
17
24
 
18
25
  def auto_value_method
19
- self.class.auto_value_method_name(suffix)
26
+ self.class.auto_value_method_name(path)
20
27
  end
21
28
 
22
29
  def found?
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/entries/jobs/with_variables_source'
4
+ require 'avm/result'
5
+ require 'eac_cli/core_ext'
6
+
7
+ module Avm
8
+ module Entries
9
+ module Jobs
10
+ module Base
11
+ common_concern do
12
+ include ::ActiveSupport::Callbacks
13
+ include ::Avm::Entries::Jobs::WithVariablesSource
14
+
15
+ enable_speaker
16
+ enable_simple_cache
17
+ enable_listable
18
+ common_constructor :instance, :options, default: [{}] do
19
+ if option_list.present?
20
+ self.options = option_list.hash_keys_validate!(options.symbolize_keys)
21
+ end
22
+ end
23
+ define_callbacks(*jobs)
24
+ end
25
+
26
+ module ClassMethods
27
+ def jobs
28
+ const_get('JOBS').dup
29
+ end
30
+ end
31
+
32
+ module InstanceMethods
33
+ def option_list
34
+ nil
35
+ end
36
+
37
+ def run
38
+ start_banner if respond_to?(:start_banner)
39
+ run_jobs
40
+ ::Avm::Result.success('Done!')
41
+ rescue ::Avm::Result::Error => e
42
+ e.to_result
43
+ end
44
+
45
+ protected
46
+
47
+ def run_jobs
48
+ jobs.each do |job|
49
+ run_callbacks job do
50
+ send(job)
51
+ end
52
+ end
53
+ end
54
+
55
+ def jobs
56
+ self.class.jobs
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Entries
7
+ module Jobs
8
+ class VariablesSource
9
+ class ReadEntry
10
+ enable_method_class
11
+ common_constructor :variables_source, :path, :options, default: [{}]
12
+ delegate :instance, :job, to: :variables_source
13
+
14
+ def result
15
+ return result_from_job if result_from_job?
16
+ return result_from_instance_method if result_from_instance_method?
17
+
18
+ result_from_instance_entry
19
+ end
20
+
21
+ private
22
+
23
+ def path_method_name
24
+ path.gsub('.', '_').underscore
25
+ end
26
+
27
+ def result_from_instance_entry
28
+ instance.read_entry(path, options)
29
+ end
30
+
31
+ def result_from_instance_method
32
+ instance.send(path_method_name)
33
+ end
34
+
35
+ def result_from_instance_method?
36
+ instance.respond_to?(path_method_name, true)
37
+ end
38
+
39
+ def result_from_job
40
+ job.send(path_method_name)
41
+ end
42
+
43
+ def result_from_job?
44
+ job.respond_to?(path_method_name, true)
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Entries
7
+ module Jobs
8
+ class VariablesSource
9
+ require_sub __FILE__, require_dependency: true
10
+ common_constructor :job
11
+ delegate :instance, to: :job
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/entries/jobs/variables_source'
4
+
5
+ module Avm
6
+ module Entries
7
+ module Jobs
8
+ module WithVariablesSource
9
+ def variables_source
10
+ ::Avm::Entries::Jobs::VariablesSource.new(self)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -3,7 +3,9 @@
3
3
  require 'eac_ruby_utils/core_ext'
4
4
 
5
5
  module Avm
6
- module Jobs
7
- require_sub __FILE__
6
+ module Entries
7
+ module Jobs
8
+ require_sub __FILE__
9
+ end
8
10
  end
9
11
  end
@@ -13,7 +13,7 @@ module Avm
13
13
  end
14
14
 
15
15
  define_method "#{method_name}_optional" do
16
- read_entry(key, required: false)
16
+ read_entry_optional(key)
17
17
  end
18
18
  end
19
19
  end
@@ -35,7 +35,7 @@ module Avm
35
35
  '' => %w[id from reply_to],
36
36
  smtp: URI_FIELDS + %w[address domain authentication openssl_verify_mode starttls_auto tls]
37
37
  },
38
- web: URI_FIELDS + %w[authority userinfo]
38
+ web: URI_FIELDS
39
39
  }.each { |prefix, suffixes| keys_consts_set(prefix, suffixes) }
40
40
  end
41
41
  end
@@ -5,17 +5,16 @@ require 'eac_ruby_utils/core_ext'
5
5
  module Avm
6
6
  module Rspec
7
7
  module Setup
8
- def self.extended(obj)
9
- obj.setup_in_avm_registry_example
10
- obj.setup_not_in_avm_registry_example
11
- end
8
+ EXAMPLES = %w[entries_values in_avm_registry not_in_avm_registry].freeze
12
9
 
13
- def setup_in_avm_registry_example
14
- require 'avm/rspec/shared_examples/in_avm_registry'
10
+ def self.extended(obj)
11
+ obj.setup_examples
15
12
  end
16
13
 
17
- def setup_not_in_avm_registry_example
18
- require 'avm/rspec/shared_examples/not_in_avm_registry'
14
+ def setup_examples
15
+ EXAMPLES.each do |example|
16
+ require "avm/rspec/shared_examples/#{example}"
17
+ end
19
18
  end
20
19
  end
21
20
  end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ ::RSpec.shared_examples 'entries_values' do |spec_file, expected_values|
6
+ describe '#read_entry' do
7
+ config_path = spec_file.to_pathname
8
+ config_path = config_path.dirname.join("#{config_path.basename_noext}_files", 'config.yml')
9
+ ::EacRubyUtils::Rspec.default_setup.stub_eac_config_node(self, config_path)
10
+
11
+ expected_values.each do |instance_id, values|
12
+ values.each do |input, expected|
13
+ context "when a auto value is requested for \"#{instance_id}.#{input}\"" do
14
+ let(:instance) { described_class.by_id(instance_id) }
15
+
16
+ it ".read_entry should return \"#{expected}\"" do
17
+ expect(instance.read_entry(input)).to eq(expected)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
data/lib/avm/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Avm
4
- VERSION = '0.44.0'
4
+ VERSION = '0.45.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.44.0
4
+ version: 0.45.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eduardo H. Bogoni
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-22 00:00:00.000000000 Z
11
+ date: 2022-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eac_cli
@@ -73,7 +73,7 @@ dependencies:
73
73
  version: '0.12'
74
74
  - - ">="
75
75
  - !ruby/object:Gem::Version
76
- version: 0.12.2
76
+ version: 0.12.3
77
77
  type: :runtime
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
@@ -83,7 +83,7 @@ dependencies:
83
83
  version: '0.12'
84
84
  - - ">="
85
85
  - !ruby/object:Gem::Version
86
- version: 0.12.2
86
+ version: 0.12.3
87
87
  - !ruby/object:Gem::Dependency
88
88
  name: eac_ruby_utils
89
89
  requirement: !ruby/object:Gem::Requirement
@@ -241,6 +241,11 @@ files:
241
241
  - lib/avm/entries/base/uri_components_entries_values/path_component.rb
242
242
  - lib/avm/entries/base/uri_components_entries_values/url_component.rb
243
243
  - lib/avm/entries/entry.rb
244
+ - lib/avm/entries/jobs.rb
245
+ - lib/avm/entries/jobs/base.rb
246
+ - lib/avm/entries/jobs/variables_source.rb
247
+ - lib/avm/entries/jobs/variables_source/read_entry.rb
248
+ - lib/avm/entries/jobs/with_variables_source.rb
244
249
  - lib/avm/entries/keys_constants_set.rb
245
250
  - lib/avm/entries/uri_builder.rb
246
251
  - lib/avm/executables.rb
@@ -259,9 +264,6 @@ files:
259
264
  - lib/avm/instances/docker_image.rb
260
265
  - lib/avm/instances/entry_keys.rb
261
266
  - lib/avm/instances/runner.rb
262
- - lib/avm/jobs.rb
263
- - lib/avm/jobs/base.rb
264
- - lib/avm/jobs/variables_source.rb
265
267
  - lib/avm/launcher/errors/base.rb
266
268
  - lib/avm/launcher/errors/non_project.rb
267
269
  - lib/avm/launcher/paths/real.rb
@@ -282,6 +284,7 @@ files:
282
284
  - lib/avm/result.rb
283
285
  - lib/avm/rspec.rb
284
286
  - lib/avm/rspec/setup.rb
287
+ - lib/avm/rspec/shared_examples/entries_values.rb
285
288
  - lib/avm/rspec/shared_examples/in_avm_registry.rb
286
289
  - lib/avm/rspec/shared_examples/not_in_avm_registry.rb
287
290
  - lib/avm/runners/base.rb
data/lib/avm/jobs/base.rb DELETED
@@ -1,63 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'avm/jobs/variables_source'
4
- require 'avm/result'
5
- require 'eac_cli/core_ext'
6
-
7
- module Avm
8
- module Jobs
9
- module Base
10
- common_concern do
11
- include ::ActiveSupport::Callbacks
12
-
13
- enable_speaker
14
- enable_simple_cache
15
- enable_listable
16
- common_constructor :instance, :options, default: [{}] do
17
- if option_list.present?
18
- self.options = option_list.hash_keys_validate!(options.symbolize_keys)
19
- end
20
- end
21
- define_callbacks(*jobs)
22
- end
23
-
24
- module ClassMethods
25
- def jobs
26
- const_get('JOBS').dup
27
- end
28
- end
29
-
30
- module InstanceMethods
31
- def option_list
32
- nil
33
- end
34
-
35
- def run
36
- start_banner if respond_to?(:start_banner)
37
- run_jobs
38
- ::Avm::Result.success('Done!')
39
- rescue ::Avm::Result::Error => e
40
- e.to_result
41
- end
42
-
43
- def variables_source
44
- ::Avm::Jobs::VariablesSource.new(self, instance)
45
- end
46
-
47
- protected
48
-
49
- def run_jobs
50
- jobs.each do |job|
51
- run_callbacks job do
52
- send(job)
53
- end
54
- end
55
- end
56
-
57
- def jobs
58
- self.class.jobs
59
- end
60
- end
61
- end
62
- end
63
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/core_ext'
4
-
5
- module Avm
6
- module Jobs
7
- class VariablesSource
8
- common_constructor :job, :instance
9
-
10
- def read_entry(path, options = {})
11
- entry_from_job(path) || instance.read_entry(path, options)
12
- end
13
-
14
- private
15
-
16
- def entry_from_job(path)
17
- method = path.gsub('.', '_').underscore
18
- return job.send(method) if job.respond_to?(method, true)
19
- end
20
- end
21
- end
22
- end