avm-tools 0.16.0 → 0.17.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|