avm 0.43.0 → 0.45.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: da90158349f77578925f4185dcf817f3d086ba8939cf6fe2a0057d5acebce8d6
4
- data.tar.gz: 68bdb121438447bb34a59526adb61af042922a59f0d31226cae3ad10c9b66bf4
3
+ metadata.gz: edce5f54d8e35b2991eca7c296980c8102a3f9de6079df2c3841660d91a5a09a
4
+ data.tar.gz: 1f3bb4e92e4a1d342490b54843f505c641479eec2af609dfb5c70ee81de4101f
5
5
  SHA512:
6
- metadata.gz: 6842223c4c7006bad23a1b1bd283b389ca20fdb63acb2a6264a84cf737fefc43406167cedfab09843aaddb7620295b1b1fb70b445ce517bd7752ebd0e66982fe
7
- data.tar.gz: c4d9bd5b0994d480ae7ff9b8a48edfdfb1fd20b849c5cd99adee4fb3e6ff645b7dbeba8092771b475e6284254f13109340f0c7d58eb8ccdf0a97d9f2d1ba0b86
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,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Entries
7
+ module Base
8
+ class UriComponentsEntriesValues
9
+ class ComponentFactory
10
+ enable_method_class
11
+ common_constructor :owner, :component
12
+
13
+ def result
14
+ component_class.new(owner, component)
15
+ end
16
+
17
+ def component_class
18
+ specific_class || generic_class
19
+ end
20
+
21
+ def generic_class
22
+ parent_class.const_get('GenericComponent')
23
+ end
24
+
25
+ def parent_class
26
+ ::Avm::Entries::Base::UriComponentsEntriesValues
27
+ end
28
+
29
+ def specific_class
30
+ return nil unless parent_class.const_defined?(specific_class_basename)
31
+
32
+ parent_class.const_get(specific_class_basename)
33
+ end
34
+
35
+ def specific_class_basename
36
+ [component, 'component'].join('_').camelize
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/entries/uri_builder'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Avm
7
+ module Entries
8
+ module Base
9
+ class UriComponentsEntriesValues
10
+ class GenericComponent
11
+ common_constructor :owner, :component
12
+ delegate :entries_provider_class, :prefix, to: :owner
13
+
14
+ def auto_method_name
15
+ ['auto', component_method_name].join('_')
16
+ end
17
+
18
+ def component_method_name
19
+ [prefix, component].join('_')
20
+ end
21
+
22
+ def define_auto_method(&block)
23
+ entries_provider_class.define_method(auto_method_name, &block)
24
+ end
25
+
26
+ def define_inherited_value_proc_method(&block)
27
+ entries_provider_class.define_method(inherited_value_proc_name, &block)
28
+ end
29
+
30
+ def entry_key_path
31
+ ::EacConfig::EntryPath.assert([prefix, component])
32
+ end
33
+
34
+ def id_component
35
+ @id_component ||= owner.component_factory('id')
36
+ end
37
+
38
+ def inherited_value_proc_name
39
+ [component_method_name, 'inherited_value_proc'].join('_')
40
+ end
41
+
42
+ def setup
43
+ outer_self = self
44
+ define_auto_method do
45
+ uri_component_entry_value(outer_self.entry_key_path.to_string)
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/entries/base/uri_components_entries_values/generic_component'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Avm
7
+ module Entries
8
+ module Base
9
+ class UriComponentsEntriesValues
10
+ class PathComponent < ::Avm::Entries::Base::UriComponentsEntriesValues::GenericComponent
11
+ def setup
12
+ super
13
+ define_inherited_value_proc_method { |value| value + '/' + id }
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/entries/base/uri_components_entries_values/generic_component'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Avm
7
+ module Entries
8
+ module Base
9
+ class UriComponentsEntriesValues
10
+ class UrlComponent < ::Avm::Entries::Base::UriComponentsEntriesValues::GenericComponent
11
+ def setup
12
+ outer_self = self
13
+ define_auto_method do
14
+ inherited_entry_value(outer_self.id_component.entry_key_path.to_string,
15
+ outer_self.entry_key_path.to_string) ||
16
+ outer_self.auto_install_url_by_parts(self)
17
+ end
18
+ end
19
+
20
+ def auto_install_url_by_parts(entries_provider)
21
+ require 'avm/entries/auto_values/uri_entry'
22
+ ::Avm::Entries::AutoValues::UriEntry.new(entries_provider, 'install').value
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/entries/uri_builder'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Avm
7
+ module Entries
8
+ module Base
9
+ class UriComponentsEntriesValues
10
+ require_sub __FILE__
11
+ common_constructor :entries_provider_class, :prefix, :extra_fields
12
+
13
+ ENTRIES_FIELDS = ::Avm::Entries::UriBuilder::ENTRIES_FIELDS + %w[url]
14
+
15
+ def fields
16
+ ENTRIES_FIELDS + extra_fields
17
+ end
18
+
19
+ def result
20
+ fields.map { |field| component_factory(field).setup }
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -7,6 +7,13 @@ module Avm
7
7
  module Entries
8
8
  module Base
9
9
  require_sub __FILE__, require_dependency: true
10
+ common_concern
11
+
12
+ module ClassMethods
13
+ def uri_components_entries_values(prefix, extra_fields = [])
14
+ ::Avm::Entries::Base::UriComponentsEntriesValues.new(self, prefix, extra_fields).result
15
+ end
16
+ end
10
17
 
11
18
  def entries_provider_id
12
19
  id
@@ -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
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Entries
7
+ class KeysConstantsSet
8
+ common_constructor :entries_provider_class, :prefix, :suffixes
9
+
10
+ # @return [Array<String>]
11
+ def result
12
+ if suffixes.is_a?(::Hash)
13
+ keys_consts_set_from_hash
14
+ elsif suffixes.is_a?(::Enumerable)
15
+ keys_consts_set_from_enum
16
+ else
17
+ raise "Unmapped suffixes class: #{suffixes.class}"
18
+ end
19
+ end
20
+
21
+ private
22
+
23
+ # @return [String]
24
+ def key_const_set(prefix, suffix)
25
+ key = [prefix, suffix].reject(&:blank?).join('.')
26
+ entries_provider_class.const_set(key.gsub('.', '_').upcase, key)
27
+ key
28
+ end
29
+
30
+ # @return [Array<String>]
31
+ def keys_consts_set_from_enum
32
+ suffixes.map { |suffix| key_const_set(prefix, suffix) }
33
+ end
34
+
35
+ # @return [Array<String>]
36
+ def keys_consts_set_from_hash
37
+ suffixes.flat_map do |k, v|
38
+ self.class.new(entries_provider_class, prefix.to_s + (k.blank? ? '' : ".#{k}"), v).result
39
+ end
40
+ end
41
+ end
42
+ end
43
+ 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
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/entries/uri_builder'
4
+ require 'avm/instances/entry_keys'
5
+
6
+ module Avm
7
+ module Instances
8
+ class Base
9
+ module Install
10
+ common_concern do
11
+ uri_components_entries_values 'install', %w[data_path email groupname]
12
+ end
13
+
14
+ def install_data_path_inherited_value_proc(value)
15
+ value + '/' + id
16
+ end
17
+
18
+ def install_groupname_default_value
19
+ read_entry_optional(::Avm::Instances::EntryKeys::INSTALL_USERNAME)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'addressable'
4
+ require 'avm/instances/entry_keys'
5
+
6
+ module Avm
7
+ module Instances
8
+ class Base
9
+ module Web
10
+ common_concern do
11
+ uri_components_entries_values 'web'
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -12,8 +12,8 @@ module Avm
12
12
  enable_abstract_methods
13
13
  enable_listable
14
14
  enable_simple_cache
15
- require_sub __FILE__, include_modules: true
16
15
  include ::Avm::Entries::Base
16
+ require_sub __FILE__, include_modules: true
17
17
  include ::Avm::With::ExtraSubcommands
18
18
  include ::Avm::With::ApplicationStereotype
19
19
 
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'avm/entries/keys_constants_set'
3
4
  require 'avm/entries/uri_builder'
4
5
  require 'eac_ruby_utils/core_ext'
5
6
 
@@ -14,19 +15,7 @@ module Avm
14
15
  end
15
16
 
16
17
  def keys_consts_set(prefix, suffixes)
17
- if suffixes.is_a?(::Hash)
18
- keys_consts_set_from_hash(prefix, suffixes)
19
- elsif suffixes.is_a?(::Enumerable)
20
- keys_consts_set_from_enum(prefix, suffixes)
21
- else
22
- raise "Unmapped suffixes class: #{suffixes.class}"
23
- end
24
- end
25
-
26
- def key_const_set(prefix, suffix)
27
- key = [prefix, suffix].reject(&:blank?).join('.')
28
- const_set(key.gsub('.', '_').upcase, key)
29
- all_keys << key
18
+ all_keys.merge(::Avm::Entries::KeysConstantsSet.new(self, prefix, suffixes).result)
30
19
  end
31
20
 
32
21
  private
@@ -34,14 +23,6 @@ module Avm
34
23
  def all_keys
35
24
  @all_keys ||= ::Set.new
36
25
  end
37
-
38
- def keys_consts_set_from_enum(prefix, suffixes)
39
- suffixes.each { |suffix| key_const_set(prefix, suffix) }
40
- end
41
-
42
- def keys_consts_set_from_hash(prefix, suffixes)
43
- suffixes.each { |k, v| keys_consts_set(prefix.to_s + (k.blank? ? '' : ".#{k}"), v) }
44
- end
45
26
  end
46
27
 
47
28
  {
@@ -54,7 +35,7 @@ module Avm
54
35
  '' => %w[id from reply_to],
55
36
  smtp: URI_FIELDS + %w[address domain authentication openssl_verify_mode starttls_auto tls]
56
37
  },
57
- web: URI_FIELDS + %w[authority userinfo]
38
+ web: URI_FIELDS
58
39
  }.each { |prefix, suffixes| keys_consts_set(prefix, suffixes) }
59
40
  end
60
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.43.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.43.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-14 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
@@ -16,20 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.27'
20
- - - ">="
21
- - !ruby/object:Gem::Version
22
- version: 0.27.8
19
+ version: '0.28'
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
24
  - - "~>"
28
25
  - !ruby/object:Gem::Version
29
- version: '0.27'
30
- - - ">="
31
- - !ruby/object:Gem::Version
32
- version: 0.27.8
26
+ version: '0.28'
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: eac_config
35
29
  requirement: !ruby/object:Gem::Requirement
@@ -79,7 +73,7 @@ dependencies:
79
73
  version: '0.12'
80
74
  - - ">="
81
75
  - !ruby/object:Gem::Version
82
- version: 0.12.2
76
+ version: 0.12.3
83
77
  type: :runtime
84
78
  prerelease: false
85
79
  version_requirements: !ruby/object:Gem::Requirement
@@ -89,21 +83,21 @@ dependencies:
89
83
  version: '0.12'
90
84
  - - ">="
91
85
  - !ruby/object:Gem::Version
92
- version: 0.12.2
86
+ version: 0.12.3
93
87
  - !ruby/object:Gem::Dependency
94
88
  name: eac_ruby_utils
95
89
  requirement: !ruby/object:Gem::Requirement
96
90
  requirements:
97
91
  - - "~>"
98
92
  - !ruby/object:Gem::Version
99
- version: '0.103'
93
+ version: '0.104'
100
94
  type: :runtime
101
95
  prerelease: false
102
96
  version_requirements: !ruby/object:Gem::Requirement
103
97
  requirements:
104
98
  - - "~>"
105
99
  - !ruby/object:Gem::Version
106
- version: '0.103'
100
+ version: '0.104'
107
101
  - !ruby/object:Gem::Dependency
108
102
  name: eac_templates
109
103
  requirement: !ruby/object:Gem::Requirement
@@ -113,7 +107,7 @@ dependencies:
113
107
  version: '0.3'
114
108
  - - ">="
115
109
  - !ruby/object:Gem::Version
116
- version: 0.3.1
110
+ version: 0.3.2
117
111
  type: :runtime
118
112
  prerelease: false
119
113
  version_requirements: !ruby/object:Gem::Requirement
@@ -123,7 +117,7 @@ dependencies:
123
117
  version: '0.3'
124
118
  - - ">="
125
119
  - !ruby/object:Gem::Version
126
- version: 0.3.1
120
+ version: 0.3.2
127
121
  - !ruby/object:Gem::Dependency
128
122
  name: filesize
129
123
  requirement: !ruby/object:Gem::Requirement
@@ -241,7 +235,18 @@ files:
241
235
  - lib/avm/entries/base/uri_component_entry_value/default_value.rb
242
236
  - lib/avm/entries/base/uri_component_entry_value/inherited_value.rb
243
237
  - lib/avm/entries/base/uri_component_entry_value/url_entry_value.rb
238
+ - lib/avm/entries/base/uri_components_entries_values.rb
239
+ - lib/avm/entries/base/uri_components_entries_values/component_factory.rb
240
+ - lib/avm/entries/base/uri_components_entries_values/generic_component.rb
241
+ - lib/avm/entries/base/uri_components_entries_values/path_component.rb
242
+ - lib/avm/entries/base/uri_components_entries_values/url_component.rb
244
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
249
+ - lib/avm/entries/keys_constants_set.rb
245
250
  - lib/avm/entries/uri_builder.rb
246
251
  - lib/avm/executables.rb
247
252
  - lib/avm/instances.rb
@@ -249,19 +254,16 @@ files:
249
254
  - lib/avm/instances/base/auto_values.rb
250
255
  - lib/avm/instances/base/auto_values/data.rb
251
256
  - lib/avm/instances/base/auto_values/database.rb
252
- - lib/avm/instances/base/auto_values/install.rb
253
257
  - lib/avm/instances/base/auto_values/mailer.rb
254
258
  - lib/avm/instances/base/auto_values/ruby.rb
255
259
  - lib/avm/instances/base/auto_values/source.rb
256
- - lib/avm/instances/base/auto_values/web.rb
257
260
  - lib/avm/instances/base/dockerizable.rb
258
261
  - lib/avm/instances/base/entry_keys.rb
262
+ - lib/avm/instances/base/install.rb
263
+ - lib/avm/instances/base/web.rb
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
@@ -1,47 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'avm/entries/uri_builder'
4
- require 'avm/instances/entry_keys'
5
-
6
- module Avm
7
- module Instances
8
- class Base
9
- module AutoValues
10
- module Install
11
- (::Avm::Entries::UriBuilder::ENTRIES_FIELDS + %w[data_path email groupname])
12
- .each do |component|
13
- method_suffix = "install_#{component}"
14
- define_method "auto_#{method_suffix}" do
15
- uri_component_entry_value(
16
- ::Avm::Instances::EntryKeys.const_get(method_suffix.underscore.upcase)
17
- )
18
- end
19
- end
20
-
21
- def auto_install_url
22
- inherited_entry_value(::Avm::Instances::EntryKeys::INSTALL_ID,
23
- ::Avm::Instances::EntryKeys::INSTALL_URL) ||
24
- auto_install_url_by_parts
25
- end
26
-
27
- def auto_install_url_by_parts
28
- require 'avm/entries/auto_values/uri_entry'
29
- ::Avm::Entries::AutoValues::UriEntry.new(self, 'install').value
30
- end
31
-
32
- def install_data_path_inherited_value_proc(value)
33
- value + '/' + id
34
- end
35
-
36
- def install_groupname_default_value
37
- read_entry_optional(::Avm::Instances::EntryKeys::INSTALL_USERNAME)
38
- end
39
-
40
- def install_path_inherited_value_proc(value)
41
- install_data_path_inherited_value_proc(value)
42
- end
43
- end
44
- end
45
- end
46
- end
47
- end
@@ -1,46 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'addressable'
4
- require 'avm/instances/entry_keys'
5
-
6
- module Avm
7
- module Instances
8
- class Base
9
- module AutoValues
10
- module Web
11
- def auto_web_authority
12
- web_url_as_uri(&:authority)
13
- end
14
-
15
- def auto_web_hostname
16
- web_url_as_uri(&:host)
17
- end
18
-
19
- def auto_web_path
20
- web_url_as_uri(&:path)
21
- end
22
-
23
- def auto_web_port
24
- web_url_as_uri(&:port)
25
- end
26
-
27
- def auto_web_scheme
28
- web_url_as_uri(&:scheme)
29
- end
30
-
31
- def auto_web_userinfo
32
- web_url_as_uri(&:userinfo)
33
- end
34
-
35
- private
36
-
37
- def web_url_as_uri
38
- read_entry_optional(::Avm::Instances::EntryKeys::WEB_URL).if_present do |v|
39
- yield(::Addressable::URI.parse(v))
40
- end
41
- end
42
- end
43
- end
44
- end
45
- end
46
- end
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