avm-tools 0.16.0 → 0.17.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 +4 -4
- data/lib/avm/configs.rb +12 -1
- data/lib/avm/instances/base.rb +11 -4
- data/lib/avm/instances/base/auto_values.rb +20 -0
- data/lib/avm/instances/base/auto_values/access.rb +39 -0
- data/lib/avm/instances/base/auto_values/database.rb +57 -0
- data/lib/avm/instances/base/auto_values/filesystem.rb +19 -0
- data/lib/avm/instances/base/auto_values/source.rb +15 -0
- data/lib/avm/instances/entries.rb +24 -2
- data/lib/avm/instances/entries/entry_reader.rb +45 -0
- data/lib/avm/templates/file.rb +1 -1
- data/lib/avm/tools/version.rb +1 -1
- metadata +12 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d6a03e86cba8b7cc3cefba9163e093176460fc22f9155414ad6cc113ebe3cd5d
|
4
|
+
data.tar.gz: bd31ac49d42c4020a81543f099b5cdc693628821601ef196f185b675d03285ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 01b434bc5a5bc72b9de6ab1679886ef5587fba84e1095d114702dfae4d180b169fcc8c823df7adef6965a4c1a0b9c266649f0de86eb912bb0f5e3141663369a3
|
7
|
+
data.tar.gz: ee37b11970672b1c90b313517807349381f93ae0fd892e6d85dd0c7dbcbd766efe7073351a5bf4f5dc316516983ca7368636acbd1e7154b8911a44e548831972
|
data/lib/avm/configs.rb
CHANGED
@@ -4,8 +4,19 @@ require 'eac_ruby_utils/console/configs'
|
|
4
4
|
|
5
5
|
module Avm
|
6
6
|
class << self
|
7
|
+
attr_reader :configs_storage_path
|
8
|
+
|
7
9
|
def configs
|
8
|
-
@configs ||= ::EacRubyUtils::Console::Configs.new('avm-tools')
|
10
|
+
@configs ||= ::EacRubyUtils::Console::Configs.new('avm-tools', configs_options)
|
11
|
+
end
|
12
|
+
|
13
|
+
def configs_options
|
14
|
+
configs_storage_path.if_present({}) { |v| { storage_path: v } }
|
15
|
+
end
|
16
|
+
|
17
|
+
def configs_storage_path=(path)
|
18
|
+
@configs_storage_path = path
|
19
|
+
@configs = nil
|
9
20
|
end
|
10
21
|
end
|
11
22
|
end
|
data/lib/avm/instances/base.rb
CHANGED
@@ -1,14 +1,20 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'eac_ruby_utils/require_sub'
|
3
4
|
require 'eac_ruby_utils/simple_cache'
|
4
5
|
require 'avm/instances/entries'
|
6
|
+
::EacRubyUtils.require_sub(__FILE__)
|
5
7
|
|
6
8
|
module Avm
|
7
9
|
module Instances
|
8
10
|
class Base
|
11
|
+
include ::EacRubyUtils::Listable
|
9
12
|
include ::EacRubyUtils::SimpleCache
|
13
|
+
include ::Avm::Instances::Base::AutoValues
|
10
14
|
include ::Avm::Instances::Entries
|
11
15
|
|
16
|
+
lists.add_string :access, :local, :ssh
|
17
|
+
|
12
18
|
ID_PATTERN = /\A([a-z]+(?:\-[a-z]+)*)_(.+)\z/.freeze
|
13
19
|
|
14
20
|
class << self
|
@@ -44,10 +50,11 @@ module Avm
|
|
44
50
|
end
|
45
51
|
|
46
52
|
def host_env_uncached
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
53
|
+
access = read_entry(:access, list: ::Avm::Instances::Base.lists.access.values)
|
54
|
+
case access
|
55
|
+
when 'local' then return ::EacRubyUtils::Envs.local
|
56
|
+
when 'ssh' then return ::EacRubyUtils::Envs.ssh(read_entry('ssh.url'))
|
57
|
+
else raise("Unmapped access value: \"#{access}\"")
|
51
58
|
end
|
52
59
|
end
|
53
60
|
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/require_sub'
|
4
|
+
::EacRubyUtils.require_sub(__FILE__)
|
5
|
+
|
6
|
+
module Avm
|
7
|
+
module Instances
|
8
|
+
class Base
|
9
|
+
module AutoValues
|
10
|
+
extend ::ActiveSupport::Concern
|
11
|
+
|
12
|
+
included do
|
13
|
+
%w[Access Database Filesystem Source].each do |class_name|
|
14
|
+
include const_get(class_name)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Avm
|
4
|
+
module Instances
|
5
|
+
class Base
|
6
|
+
module AutoValues
|
7
|
+
module Access
|
8
|
+
def auto_access
|
9
|
+
read_entry_optional('ssh.url').present? ? 'ssh' : 'local'
|
10
|
+
end
|
11
|
+
|
12
|
+
def auto_ssh_hostname
|
13
|
+
inherited_entry_value(:host_id, 'ssh.hostname')
|
14
|
+
end
|
15
|
+
|
16
|
+
def auto_ssh_port
|
17
|
+
inherited_entry_value(:host_id, 'ssh.port') || 22
|
18
|
+
end
|
19
|
+
|
20
|
+
def auto_ssh_username
|
21
|
+
inherited_entry_value(:host_id, 'ssh.username')
|
22
|
+
end
|
23
|
+
|
24
|
+
def auto_ssh_url
|
25
|
+
inherited_entry_value(:host_id, 'ssh.url') || auto_ssh_url_by_parts
|
26
|
+
end
|
27
|
+
|
28
|
+
def auto_ssh_url_by_parts
|
29
|
+
read_entry_optional('ssh.hostname').if_present do |a|
|
30
|
+
a = read_entry_optional('ssh.username').if_present(a) { |v| "#{v}@#{a}" }
|
31
|
+
a = read_entry_optional('ssh.port').if_present(a) { |v| "#{a}:#{v}" }
|
32
|
+
"ssh://#{a}"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Avm
|
4
|
+
module Instances
|
5
|
+
class Base
|
6
|
+
module AutoValues
|
7
|
+
module Database
|
8
|
+
DEFAULT_HOSTNAME = '127.0.0.1'
|
9
|
+
DEFAULT_PORTS = {
|
10
|
+
'postgresql' => 5432,
|
11
|
+
'mysql' => 3306,
|
12
|
+
'oracle' => 1521,
|
13
|
+
'sqlserver' => 1433
|
14
|
+
}.freeze
|
15
|
+
DEFAULT_SYSTEM = 'postgresql'
|
16
|
+
|
17
|
+
def auto_database_name
|
18
|
+
inherited_entry_value(:database_id, 'database.name') || id
|
19
|
+
end
|
20
|
+
|
21
|
+
def auto_database_hostname
|
22
|
+
database_auto_common('hostname') || DEFAULT_HOSTNAME
|
23
|
+
end
|
24
|
+
|
25
|
+
def auto_database_password
|
26
|
+
database_auto_common('password')
|
27
|
+
end
|
28
|
+
|
29
|
+
def auto_database_port
|
30
|
+
database_auto_common('port') || database_port_by_system
|
31
|
+
end
|
32
|
+
|
33
|
+
def auto_database_username
|
34
|
+
database_auto_common('username')
|
35
|
+
end
|
36
|
+
|
37
|
+
def auto_database_system
|
38
|
+
database_auto_common('system') || DEFAULT_SYSTEM
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def database_auto_common(suffix)
|
44
|
+
inherited_entry_value(:database_id, "database.#{suffix}") ||
|
45
|
+
inherited_entry_value(:host_id, "database.#{suffix}")
|
46
|
+
end
|
47
|
+
|
48
|
+
def database_port_by_system
|
49
|
+
read_entry_optional('database.system').if_present do |v|
|
50
|
+
DEFAULT_PORTS.fetch(v)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Avm
|
4
|
+
module Instances
|
5
|
+
class Base
|
6
|
+
module AutoValues
|
7
|
+
module Filesystem
|
8
|
+
def auto_fs_path
|
9
|
+
inherited_entry_value(:host_id, :fs_path) { |v| v + '/' + id }
|
10
|
+
end
|
11
|
+
|
12
|
+
def auto_data_fs_path
|
13
|
+
inherited_entry_value(:host_id, :data_fs_path) { |v| v + '/' + id }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -1,7 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'eac_ruby_utils/
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
require 'eac_ruby_utils/require_sub'
|
4
5
|
require 'avm/configs'
|
6
|
+
::EacRubyUtils.require_sub(__FILE__)
|
5
7
|
|
6
8
|
module Avm
|
7
9
|
module Instances
|
@@ -11,7 +13,11 @@ module Avm
|
|
11
13
|
end
|
12
14
|
|
13
15
|
def read_entry(entry_suffix, options = {})
|
14
|
-
|
16
|
+
entry(entry_suffix, options).value
|
17
|
+
end
|
18
|
+
|
19
|
+
def read_entry_optional(entry_suffix, options = {})
|
20
|
+
entry(entry_suffix, options).optional_value
|
15
21
|
end
|
16
22
|
|
17
23
|
def full_entry_path(entry_suffix)
|
@@ -20,6 +26,22 @@ module Avm
|
|
20
26
|
end
|
21
27
|
(path_prefix + entry_suffix).join('.')
|
22
28
|
end
|
29
|
+
|
30
|
+
def inherited_entry_value(source_entry_suffix, target_entry_suffix, &block)
|
31
|
+
read_entry_optional(source_entry_suffix).if_present do |instance_id|
|
32
|
+
other_entry_value(instance_id, target_entry_suffix).if_present(&block)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def other_entry_value(instance_id, entry_suffix)
|
37
|
+
::Avm::Instances::Base.by_id(instance_id).read_entry_optional(entry_suffix)
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def entry(suffix, options)
|
43
|
+
::Avm::Instances::Entries::EntryReader.new(self, suffix, options)
|
44
|
+
end
|
23
45
|
end
|
24
46
|
end
|
25
47
|
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module Avm
|
6
|
+
module Instances
|
7
|
+
module Entries
|
8
|
+
class EntryReader
|
9
|
+
common_constructor :parent, :suffix, :options
|
10
|
+
|
11
|
+
def auto_value
|
12
|
+
parent.respond_to?(auto_value_method, true) ? parent.send(auto_value_method) : nil
|
13
|
+
end
|
14
|
+
|
15
|
+
def auto_value_method
|
16
|
+
"auto_#{suffix.to_s.gsub('.', '_')}"
|
17
|
+
end
|
18
|
+
|
19
|
+
def full_path
|
20
|
+
(parent.path_prefix + suffix_as_array).join('.')
|
21
|
+
end
|
22
|
+
|
23
|
+
def optional_value
|
24
|
+
read(required: false, noinput: true) || auto_value
|
25
|
+
end
|
26
|
+
|
27
|
+
def read(extra_options = {})
|
28
|
+
::Avm.configs.read_entry(full_path, options.merge(extra_options))
|
29
|
+
end
|
30
|
+
|
31
|
+
def suffix_as_array
|
32
|
+
if suffix.is_a?(::Array)
|
33
|
+
suffix.dup
|
34
|
+
else
|
35
|
+
::EacRubyUtils::PathsHash.parse_entry_key(suffix.to_s)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def value
|
40
|
+
optional_value || read
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/lib/avm/templates/file.rb
CHANGED
@@ -9,7 +9,7 @@ module Avm
|
|
9
9
|
include ::EacRubyUtils::SimpleCache
|
10
10
|
|
11
11
|
VARIABLE_DELIMITER = ::Regexp.quote('%%')
|
12
|
-
VARIABLE_PATTERN = /#{VARIABLE_DELIMITER}([a-
|
12
|
+
VARIABLE_PATTERN = /#{VARIABLE_DELIMITER}([a-z0-9\._]*)#{VARIABLE_DELIMITER}/i.freeze
|
13
13
|
|
14
14
|
attr_reader :path
|
15
15
|
|
data/lib/avm/tools/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: avm-tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.17.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Esquilo Azul Company
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-11-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aranha-parsers
|
@@ -76,14 +76,14 @@ dependencies:
|
|
76
76
|
requirements:
|
77
77
|
- - "~>"
|
78
78
|
- !ruby/object:Gem::Version
|
79
|
-
version: '0.
|
79
|
+
version: '0.16'
|
80
80
|
type: :runtime
|
81
81
|
prerelease: false
|
82
82
|
version_requirements: !ruby/object:Gem::Requirement
|
83
83
|
requirements:
|
84
84
|
- - "~>"
|
85
85
|
- !ruby/object:Gem::Version
|
86
|
-
version: '0.
|
86
|
+
version: '0.16'
|
87
87
|
- !ruby/object:Gem::Dependency
|
88
88
|
name: filesize
|
89
89
|
requirement: !ruby/object:Gem::Requirement
|
@@ -132,14 +132,14 @@ dependencies:
|
|
132
132
|
requirements:
|
133
133
|
- - "~>"
|
134
134
|
- !ruby/object:Gem::Version
|
135
|
-
version: 0.
|
135
|
+
version: 0.76.0
|
136
136
|
type: :development
|
137
137
|
prerelease: false
|
138
138
|
version_requirements: !ruby/object:Gem::Requirement
|
139
139
|
requirements:
|
140
140
|
- - "~>"
|
141
141
|
- !ruby/object:Gem::Version
|
142
|
-
version: 0.
|
142
|
+
version: 0.76.0
|
143
143
|
- !ruby/object:Gem::Dependency
|
144
144
|
name: rubocop-rspec
|
145
145
|
requirement: !ruby/object:Gem::Requirement
|
@@ -202,7 +202,13 @@ files:
|
|
202
202
|
- lib/avm/instances.rb
|
203
203
|
- lib/avm/instances/application.rb
|
204
204
|
- lib/avm/instances/base.rb
|
205
|
+
- lib/avm/instances/base/auto_values.rb
|
206
|
+
- lib/avm/instances/base/auto_values/access.rb
|
207
|
+
- lib/avm/instances/base/auto_values/database.rb
|
208
|
+
- lib/avm/instances/base/auto_values/filesystem.rb
|
209
|
+
- lib/avm/instances/base/auto_values/source.rb
|
205
210
|
- lib/avm/instances/entries.rb
|
211
|
+
- lib/avm/instances/entries/entry_reader.rb
|
206
212
|
- lib/avm/patches.rb
|
207
213
|
- lib/avm/patches/eac_launcher_git_base.rb
|
208
214
|
- lib/avm/patches/object/template.rb
|