avm 0.34.0 → 0.36.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: 7f010253f1247e81a5935385a2c1070e5d4217948b31258c5e4286d3b1453fee
4
- data.tar.gz: 000a1a2a76b966b3f353c251cbb8ded41cf9719cf9b13f056f768d6a16d6c377
3
+ metadata.gz: 7efc64412c406ca9b9575a704de3e3eaa48328ce07f95a9406f55edd323a6843
4
+ data.tar.gz: 82b77ad19908de1401ba655e7ec16ddc5c4a119b9d4c52b47baa259c40db77ea
5
5
  SHA512:
6
- metadata.gz: a9f61d3c21cef4aaed1a8c5c4eecbcc20aab3247c8a28098f0aefff9818a578bb3e8450aff34b9b1bcced1ecbbb58ce3f011ee426d470e51cb840396fd98a8d8
7
- data.tar.gz: c6019a2b01b64630a9c61d870e48d35a3e4ded56c6e67e1be74fdfa524d7700c72b55cae69a188ac1f3df318c8a0d7aca87c1eac7eda5f0f4b2be807c6da8069
6
+ metadata.gz: 37a7790ce5e98c0cfe0eca56d22fbbd44689ce63bb5796eacb5c762f0c8b9765972ac7c4666b401ecfa21f0feb2807e26361c9fe99a8c384732a29ece0943255
7
+ data.tar.gz: e85973d4cc9064ac60e34697cdca985ffcce20f300560e91b6d134000fb5b628e603750db44e2f184397fa806b6b87b6bb33d834e9119fc04fca04e28e3a1197
@@ -0,0 +1,24 @@
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 AutoValues
9
+ class UriEntry
10
+ common_constructor :entries_provider, :suffix
11
+
12
+ def found?
13
+ value.present?
14
+ end
15
+
16
+ def value
17
+ ::Avm::Entries::UriBuilder.from_all_fields do |field_name|
18
+ entries_provider.entry([suffix, field_name]).value
19
+ end.to_uri.to_s
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,85 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Entries
7
+ class UriBuilder
8
+ require_sub __FILE__
9
+
10
+ FIELDS = %w[scheme user password host port path query fragment].freeze
11
+ FIELDS_TRANSLATIONS = {
12
+ username: :user, hostname: :host
13
+ }.freeze
14
+ ENTRIES_FIELDS = FIELDS.map do |field|
15
+ FIELDS_TRANSLATIONS.key(field.to_sym).if_present(field).to_s
16
+ end
17
+
18
+ class << self
19
+ def from_all_fields(&block)
20
+ r = new
21
+ ENTRIES_FIELDS.each do |field_name|
22
+ field_value = block.call(field_name)
23
+ r.field_set(field_name, field_value) if field_value.present?
24
+ end
25
+ r
26
+ end
27
+
28
+ def from_source(source)
29
+ if source.is_a?(::Addressable::URI)
30
+ from_source_uri(source)
31
+ elsif source.blank?
32
+ new
33
+ else
34
+ raise "Unexpected source: #{source}"
35
+ end
36
+ end
37
+
38
+ def from_source_uri(source_uri)
39
+ new(source_uri.to_hash)
40
+ end
41
+ end
42
+
43
+ common_constructor :data, default: [{}]
44
+
45
+ def field_get(name)
46
+ data[name.to_sym].if_present(&:to_s)
47
+ end
48
+
49
+ def field_set(field, value)
50
+ tfield = translate_field(field)
51
+ if FIELDS.include?(tfield)
52
+ main_field_set(tfield, value)
53
+ else
54
+ sub_field_set(tfield, value)
55
+ end
56
+ end
57
+
58
+ def translate_field(field)
59
+ if FIELDS_TRANSLATIONS.key?(field.to_sym)
60
+ FIELDS_TRANSLATIONS.fetch(field.to_sym).to_s
61
+ else
62
+ field.to_s
63
+ end
64
+ end
65
+
66
+ # @return [Addressable::URI, nil]
67
+ def to_uri
68
+ to_required_uri
69
+ rescue ::Addressable::URI::InvalidURIError
70
+ nil
71
+ end
72
+
73
+ # @return [Addressable::URI]
74
+ def to_required_uri
75
+ ::Addressable::URI.new(FIELDS.map { |f| [f.to_sym, field_get(f)] }.to_h)
76
+ end
77
+
78
+ private
79
+
80
+ def main_field_set(name, value)
81
+ data[name.to_sym] = value
82
+ end
83
+ end
84
+ end
85
+ end
@@ -7,8 +7,10 @@ module Avm
7
7
  class Base
8
8
  module AutoValues
9
9
  module Install
10
- def auto_access
11
- read_entry_optional(::Avm::Instances::EntryKeys::INSTALL_URL).present? ? 'ssh' : 'local'
10
+ def auto_install_groupname
11
+ inherited_entry_value(::Avm::Instances::EntryKeys::INSTALL_ID,
12
+ ::Avm::Instances::EntryKeys::INSTALL_GROUPNAME) ||
13
+ read_entry_optional(::Avm::Instances::EntryKeys::INSTALL_USERNAME)
12
14
  end
13
15
 
14
16
  def auto_install_hostname
@@ -33,13 +35,8 @@ module Avm
33
35
  end
34
36
 
35
37
  def auto_install_url_by_parts
36
- read_entry_optional(::Avm::Instances::EntryKeys::INSTALL_HOSTNAME).if_present do |a|
37
- a = read_entry_optional(::Avm::Instances::EntryKeys::INSTALL_USERNAME)
38
- .if_present(a) { |v| "#{v}@#{a}" }
39
- a = read_entry_optional(::Avm::Instances::EntryKeys::INSTALL_PORT)
40
- .if_present(a) { |v| "#{a}:#{v}" }
41
- "ssh://#{a}"
42
- end
38
+ require 'avm/entries/auto_values/uri_entry'
39
+ ::Avm::Entries::AutoValues::UriEntry.new(self, 'install').value
43
40
  end
44
41
  end
45
42
  end
@@ -6,14 +6,8 @@ module Avm
6
6
  module Instances
7
7
  class Base
8
8
  module AutoValues
9
- require_sub __FILE__
10
-
11
- common_concern do
12
- %w[Admin Data Database Filesystem Install Mailer Ruby Source System Web]
13
- .each do |class_name|
14
- include const_get(class_name)
15
- end
16
- end
9
+ require_sub __FILE__, include_modules: true
10
+ common_concern
17
11
  end
18
12
  end
19
13
  end
@@ -53,7 +53,7 @@ module Avm
53
53
  def host_env_uncached
54
54
  install_uri = entry(::Avm::Instances::EntryKeys::INSTALL_URL).value.to_uri
55
55
  case install_uri.scheme
56
- when 'local' then ::EacRubyUtils::Envs.local
56
+ when 'file' then ::EacRubyUtils::Envs.local
57
57
  when 'ssh' then ::EacRubyUtils::Envs.ssh(install_uri)
58
58
  else raise("Unmapped access value: \"#{install_uri}\"")
59
59
  end
@@ -49,7 +49,7 @@ module Avm
49
49
  database: URI_FIELDS + %w[id limit name system timeout extra],
50
50
  docker: %w[registry],
51
51
  fs: %w[url],
52
- install: URI_FIELDS + %w[id],
52
+ install: URI_FIELDS + %w[id groupname],
53
53
  mailer: {
54
54
  '' => %w[id from reply_to],
55
55
  smtp: URI_FIELDS + %w[address domain authentication openssl_verify_mode starttls_auto tls]
@@ -7,10 +7,12 @@ module Avm
7
7
  module Instances
8
8
  class Runner < ::Avm::Runners::Base
9
9
  class << self
10
- def instance_class
11
- ::Avm.const_get(stereotype_name).const_get('Instance')
10
+ def application_stereotype
11
+ ::Avm::Registry.application_stereotypes.detect(stereotype_name)
12
12
  end
13
13
 
14
+ delegate :instance_class, to: :application_stereotype
15
+
14
16
  def stereotype_module
15
17
  ::Avm.const_get(stereotype_name)
16
18
  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.34.0'
4
+ VERSION = '0.36.0'
5
5
  end
@@ -5,9 +5,7 @@ require 'eac_ruby_utils/core_ext'
5
5
  module Avm
6
6
  module With
7
7
  module ApplicationStereotype
8
- common_concern do
9
- include ClassMethods
10
- end
8
+ common_concern
11
9
 
12
10
  module ClassMethods
13
11
  # @return [Avm::ApplicationStereotype::Base]
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.34.0
4
+ version: 0.36.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-08-05 00:00:00.000000000 Z
11
+ date: 2022-08-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eac_cli
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '0.27'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 0.27.6
22
+ version: 0.27.8
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: '0.27'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 0.27.6
32
+ version: 0.27.8
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: eac_config
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -50,62 +50,74 @@ dependencies:
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '0.3'
53
+ version: '0.4'
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: 0.4.2
54
57
  type: :runtime
55
58
  prerelease: false
56
59
  version_requirements: !ruby/object:Gem::Requirement
57
60
  requirements:
58
61
  - - "~>"
59
62
  - !ruby/object:Gem::Version
60
- version: '0.3'
63
+ version: '0.4'
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: 0.4.2
61
67
  - !ruby/object:Gem::Dependency
62
68
  name: eac_git
63
69
  requirement: !ruby/object:Gem::Requirement
64
70
  requirements:
65
71
  - - "~>"
66
72
  - !ruby/object:Gem::Version
67
- version: '0.6'
73
+ version: '0.12'
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: 0.12.1
68
77
  type: :runtime
69
78
  prerelease: false
70
79
  version_requirements: !ruby/object:Gem::Requirement
71
80
  requirements:
72
81
  - - "~>"
73
82
  - !ruby/object:Gem::Version
74
- version: '0.6'
83
+ version: '0.12'
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: 0.12.1
75
87
  - !ruby/object:Gem::Dependency
76
88
  name: eac_ruby_utils
77
89
  requirement: !ruby/object:Gem::Requirement
78
90
  requirements:
79
91
  - - "~>"
80
92
  - !ruby/object:Gem::Version
81
- version: '0.97'
93
+ version: '0.98'
82
94
  type: :runtime
83
95
  prerelease: false
84
96
  version_requirements: !ruby/object:Gem::Requirement
85
97
  requirements:
86
98
  - - "~>"
87
99
  - !ruby/object:Gem::Version
88
- version: '0.97'
100
+ version: '0.98'
89
101
  - !ruby/object:Gem::Dependency
90
102
  name: eac_templates
91
103
  requirement: !ruby/object:Gem::Requirement
92
104
  requirements:
93
105
  - - "~>"
94
106
  - !ruby/object:Gem::Version
95
- version: '0.1'
107
+ version: '0.3'
96
108
  - - ">="
97
109
  - !ruby/object:Gem::Version
98
- version: 0.1.1
110
+ version: 0.3.1
99
111
  type: :runtime
100
112
  prerelease: false
101
113
  version_requirements: !ruby/object:Gem::Requirement
102
114
  requirements:
103
115
  - - "~>"
104
116
  - !ruby/object:Gem::Version
105
- version: '0.1'
117
+ version: '0.3'
106
118
  - - ">="
107
119
  - !ruby/object:Gem::Version
108
- version: 0.1.1
120
+ version: 0.3.1
109
121
  - !ruby/object:Gem::Dependency
110
122
  name: filesize
111
123
  requirement: !ruby/object:Gem::Requirement
@@ -126,20 +138,20 @@ dependencies:
126
138
  requirements:
127
139
  - - "~>"
128
140
  - !ruby/object:Gem::Version
129
- version: '1.3'
141
+ version: '1.4'
130
142
  - - ">="
131
143
  - !ruby/object:Gem::Version
132
- version: 1.3.1
144
+ version: 1.4.2
133
145
  type: :runtime
134
146
  prerelease: false
135
147
  version_requirements: !ruby/object:Gem::Requirement
136
148
  requirements:
137
149
  - - "~>"
138
150
  - !ruby/object:Gem::Version
139
- version: '1.3'
151
+ version: '1.4'
140
152
  - - ">="
141
153
  - !ruby/object:Gem::Version
142
- version: 1.3.1
154
+ version: 1.4.2
143
155
  - !ruby/object:Gem::Dependency
144
156
  name: minitar
145
157
  requirement: !ruby/object:Gem::Requirement
@@ -216,8 +228,10 @@ files:
216
228
  - lib/avm/entries.rb
217
229
  - lib/avm/entries/auto_values.rb
218
230
  - lib/avm/entries/auto_values/entry.rb
231
+ - lib/avm/entries/auto_values/uri_entry.rb
219
232
  - lib/avm/entries/base.rb
220
233
  - lib/avm/entries/entry.rb
234
+ - lib/avm/entries/uri_builder.rb
221
235
  - lib/avm/executables.rb
222
236
  - lib/avm/instances.rb
223
237
  - lib/avm/instances/base.rb
@@ -230,7 +244,6 @@ files:
230
244
  - lib/avm/instances/base/auto_values/mailer.rb
231
245
  - lib/avm/instances/base/auto_values/ruby.rb
232
246
  - lib/avm/instances/base/auto_values/source.rb
233
- - lib/avm/instances/base/auto_values/system.rb
234
247
  - lib/avm/instances/base/auto_values/web.rb
235
248
  - lib/avm/instances/base/dockerizable.rb
236
249
  - lib/avm/instances/base/entry_keys.rb
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'addressable'
4
-
5
- module Avm
6
- module Instances
7
- class Base
8
- module AutoValues
9
- module System
10
- def auto_system_username
11
- inherited_entry_value(::Avm::Instances::EntryKeys::INSTALL_ID, 'system.username') ||
12
- read_entry_optional(::Avm::Instances::EntryKeys::INSTALL_USERNAME)
13
- end
14
-
15
- def auto_system_groupname
16
- inherited_entry_value(::Avm::Instances::EntryKeys::INSTALL_ID, 'system.groupname') ||
17
- read_entry_optional('system.username')
18
- end
19
- end
20
- end
21
- end
22
- end
23
- end