eac_tools 0.11.0 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +21 -21
  3. data/lib/eac_tools/version.rb +1 -1
  4. data/sub/avm/avm.gemspec +2 -2
  5. data/sub/avm/lib/avm/application_stereotypes/base.rb +11 -1
  6. data/sub/avm/lib/avm/instances/base/auto_values/install.rb +48 -0
  7. data/sub/avm/lib/avm/instances/base/auto_values.rb +1 -1
  8. data/sub/avm/lib/avm/instances/base.rb +4 -4
  9. data/sub/avm/lib/avm/instances/entry_keys.rb +7 -6
  10. data/sub/avm/lib/avm/instances.rb +3 -2
  11. data/sub/avm/lib/avm/registry/application_stereotypes/build_available.rb +9 -6
  12. data/sub/avm/lib/avm/registry/application_stereotypes/stereotype_builder.rb +8 -5
  13. data/sub/avm/lib/avm/registry/source_generators.rb +16 -0
  14. data/sub/avm/lib/avm/registry.rb +2 -1
  15. data/sub/avm/lib/avm/scms/base.rb +2 -2
  16. data/sub/avm/lib/avm/source_generators/base.rb +29 -0
  17. data/sub/avm/lib/avm/source_generators.rb +9 -0
  18. data/sub/avm/lib/avm/sources/base.rb +4 -4
  19. data/sub/avm/lib/avm/version.rb +1 -1
  20. data/sub/avm/lib/avm/with/application_stereotype.rb +35 -0
  21. data/sub/avm/lib/avm/with/extra_subcommands.rb +44 -0
  22. data/sub/avm/spec/lib/avm/instances/base_spec.rb +3 -3
  23. data/sub/avm/spec/lib/avm/instances/base_spec_configs_storage.yml +1 -1
  24. data/sub/avm-eac_rails_base0/avm-eac_rails_base0.gemspec +3 -3
  25. data/sub/avm-eac_rails_base0/lib/avm/eac_rails_base0/source_generators/base.rb +13 -0
  26. data/sub/avm-eac_rails_base0/lib/avm/eac_rails_base0/version.rb +1 -1
  27. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/source_generators/base/Gemfile +11 -0
  28. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/source_generators/base/Rakefile +8 -0
  29. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/source_generators/base/app/assets/config/manifest.js +3 -0
  30. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/source_generators/base/app/assets/javascripts/application.js +1 -0
  31. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/source_generators/base/app/assets/stylesheets/application.scss +1 -0
  32. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/source_generators/base/app/controllers/application_controller.rb +4 -0
  33. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/source_generators/base/app/controllers/welcome_controller.rb +5 -0
  34. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/source_generators/base/app/views/welcome/index.html.erb +1 -0
  35. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/source_generators/base/bin/bundle +5 -0
  36. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/source_generators/base/bin/rails +11 -0
  37. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/source_generators/base/bin/rake +11 -0
  38. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/source_generators/base/bin/yarn +11 -0
  39. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/source_generators/base/config/application.rb +11 -0
  40. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/source_generators/base/config/boot.rb +5 -0
  41. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/source_generators/base/config/cable.yml +8 -0
  42. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/source_generators/base/config/credentials.yml.enc +1 -0
  43. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/source_generators/base/config/environment.rb +7 -0
  44. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/source_generators/base/config/puma.rb +39 -0
  45. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/source_generators/base/config/routes.rb +5 -0
  46. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/source_generators/base/config/spring.rb +8 -0
  47. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/source_generators/base/config.ru +7 -0
  48. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/source_generators/base/db/schema.rb +1 -0
  49. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/source_generators/base/lib/ability.rb +20 -0
  50. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/source_generators/base/lib/ability_mapping.rb +10 -0
  51. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/source_generators/base/public/favicon.ico +0 -0
  52. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/source_generators/base/spec/code/rubocop_spec.rb +3 -0
  53. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/source_generators/base/spec/spec_helper.rb +8 -0
  54. data/sub/avm-eac_rails_base1/avm-eac_rails_base1.gemspec +3 -2
  55. data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/systemd_unit.rb +1 -1
  56. data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/version.rb +1 -1
  57. data/sub/avm-tools/README.textile +0 -11
  58. data/sub/avm-tools/avm-tools.gemspec +1 -2
  59. data/sub/avm-tools/lib/avm/tools/runner/source_generate.rb +45 -0
  60. data/sub/avm-tools/lib/avm/tools/version.rb +1 -1
  61. data/sub/eac_config/eac_config.gemspec +1 -1
  62. data/sub/eac_config/lib/eac_config/entry_path.rb +15 -4
  63. data/sub/eac_config/lib/eac_config/version.rb +1 -1
  64. data/sub/eac_ruby_utils/lib/eac_ruby_utils/regexp_parser.rb +5 -0
  65. data/sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub/base.rb +67 -0
  66. data/sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub/sub_file.rb +68 -0
  67. data/sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub.rb +2 -125
  68. data/sub/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
  69. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/{require_sub_spec → require_sub/base_spec}/stubbed_module_a.rb +0 -0
  70. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/{require_sub_spec → require_sub/base_spec}/stubbed_not_module.rb +0 -0
  71. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/{require_sub_spec.rb → require_sub/base_spec.rb} +1 -1
  72. metadata +56 -16
  73. data/sub/avm/lib/avm/instances/base/auto_values/access.rb +0 -40
  74. data/sub/avm/lib/avm/with_application_stereotype.rb +0 -23
  75. data/sub/avm/lib/avm/with_dynamic_runners.rb +0 -42
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cf951e52229600803d874cf5338a82d4a5844fc2b6394efe31f5f6fe6e90e211
4
- data.tar.gz: f30235f79e322f9c454de1e4260e660b06a6297dd391db4a1d6631ef97c9d2f2
3
+ metadata.gz: 5bf2ba914845ef4487ca80e47097879d283ece113e6cbe0863a9f54920b605d7
4
+ data.tar.gz: b9c45a9db9dba67f8c742bf689a1b267480c40b8312ec066dfe25aabf8f66ec6
5
5
  SHA512:
6
- metadata.gz: 80341907f9a9c14fdda123bc57ee50266f9894e23f247e3c84849bccd6b7ede54a9aebe9fd10463ee61440fe8f834c60f27a03992b8eddb8002ac81bb29ed3a5
7
- data.tar.gz: 298ec77d399c84bba732913eb5329373fa5b7500c4d09c2347f86f3ad899cce452fffcbbd7a9b893341c7f310dc1ed17ab9fd2c8473e3895c54ca05470990ee4
6
+ metadata.gz: de155498ec4b29e4391433f4fe3fb5a9509f15f92d5b4106b1e402026e7349d3887bb4b75bedf96bcb22281ba606149bd17be4ba67dad2d3bb4c741dc4f2a237
7
+ data.tar.gz: 0e738279dd36f46a1bc247d71fb2165ad0b5537e7050874a3705ee3b85c0b353e490535b3e74c7d6960ac17df6c0a8ab9c5f5ad371a7de7a524ad266faae4e6c
data/Gemfile.lock CHANGED
@@ -1,15 +1,15 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- eac_tools (0.11.0)
4
+ eac_tools (0.13.0)
5
5
  avm-eac_generic_base0 (~> 0.4)
6
- avm-eac_rails_base0 (~> 0.5)
7
- avm-eac_rails_base1 (~> 0.4, >= 0.4.1)
6
+ avm-eac_rails_base0 (~> 0.6, >= 0.6.1)
7
+ avm-eac_rails_base1 (~> 0.4, >= 0.4.2)
8
8
  avm-eac_redmine_base0 (~> 0.11)
9
9
  avm-eac_redmine_plugin_base0 (~> 0.3)
10
10
  avm-eac_ruby_base1 (~> 0.11)
11
- avm-tools (~> 0.125)
12
- eac_ruby_utils (~> 0.96)
11
+ avm-tools (~> 0.127)
12
+ eac_ruby_utils (~> 0.97)
13
13
 
14
14
  PATH
15
15
  remote: sub/avm-eac_generic_base0
@@ -21,17 +21,18 @@ PATH
21
21
  PATH
22
22
  remote: sub/avm-eac_rails_base0
23
23
  specs:
24
- avm-eac_rails_base0 (0.5.0)
25
- avm-eac_rails_base1 (~> 0.3)
26
- eac_ruby_utils (~> 0.80, >= 0.80.2)
24
+ avm-eac_rails_base0 (0.6.1)
25
+ avm-eac_rails_base1 (~> 0.4, >= 0.4.2)
26
+ eac_ruby_utils (~> 0.97)
27
27
 
28
28
  PATH
29
29
  remote: sub/avm-eac_rails_base1
30
30
  specs:
31
- avm-eac_rails_base1 (0.4.1)
32
- avm-eac_ruby_base1 (~> 0.9, >= 0.9.1)
31
+ avm-eac_rails_base1 (0.4.2)
32
+ avm (~> 0.31)
33
+ avm-eac_ruby_base1 (~> 0.11)
33
34
  avm-eac_webapp_base0 (~> 0.3)
34
- eac_ruby_utils (~> 0.95, >= 0.95.2)
35
+ eac_ruby_utils (~> 0.97)
35
36
 
36
37
  PATH
37
38
  remote: sub/avm-eac_redmine_base0
@@ -64,11 +65,10 @@ PATH
64
65
  PATH
65
66
  remote: sub/avm-tools
66
67
  specs:
67
- avm-tools (0.125.0)
68
+ avm-tools (0.127.0)
68
69
  aranha-parsers (~> 0.4)
69
- avm (~> 0.27)
70
+ avm (~> 0.30)
70
71
  avm-eac_asciidoctor_base0 (~> 0.3, >= 0.3.4)
71
- avm-eac_rails_base0 (~> 0.3)
72
72
  avm-eac_ruby_base1 (~> 0.8)
73
73
  avm-eac_ubuntu_base0 (~> 0.3)
74
74
  avm-files (~> 0.1)
@@ -82,12 +82,12 @@ PATH
82
82
  PATH
83
83
  remote: sub/avm
84
84
  specs:
85
- avm (0.29.0)
85
+ avm (0.31.0)
86
86
  eac_cli (~> 0.27, >= 0.27.6)
87
- eac_config (~> 0.9)
87
+ eac_config (~> 0.10)
88
88
  eac_docker (~> 0.3)
89
89
  eac_git (~> 0.6)
90
- eac_ruby_utils (~> 0.95)
90
+ eac_ruby_utils (~> 0.97)
91
91
  eac_templates (~> 0.1, >= 0.1.1)
92
92
  filesize (~> 0.2)
93
93
  htmlbeautifier (~> 1.3, >= 1.3.1)
@@ -104,9 +104,9 @@ PATH
104
104
  PATH
105
105
  remote: sub/eac_config
106
106
  specs:
107
- eac_config (0.9.0)
107
+ eac_config (0.10.0)
108
108
  addressable
109
- eac_ruby_utils (~> 0.83)
109
+ eac_ruby_utils (~> 0.97)
110
110
 
111
111
  PATH
112
112
  remote: sub/eac_docker
@@ -135,7 +135,7 @@ PATH
135
135
  PATH
136
136
  remote: sub/eac_ruby_utils
137
137
  specs:
138
- eac_ruby_utils (0.96.0)
138
+ eac_ruby_utils (0.97.0)
139
139
  activesupport (>= 4, < 7)
140
140
  addressable (~> 2.6)
141
141
  bundler
@@ -269,7 +269,7 @@ GEM
269
269
  rainbow (3.1.1)
270
270
  rchardet (1.8.0)
271
271
  rexml (3.2.5)
272
- rouge (3.29.0)
272
+ rouge (3.30.0)
273
273
  rspec (3.11.0)
274
274
  rspec-core (~> 3.11.0)
275
275
  rspec-expectations (~> 3.11.0)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacTools
4
- VERSION = '0.11.0'
4
+ VERSION = '0.13.0'
5
5
  end
data/sub/avm/avm.gemspec CHANGED
@@ -13,10 +13,10 @@ Gem::Specification.new do |s|
13
13
  s.files = Dir['{lib}/**/*']
14
14
 
15
15
  s.add_dependency 'eac_cli', '~> 0.27', '>= 0.27.6'
16
- s.add_dependency 'eac_config', '~> 0.9'
16
+ s.add_dependency 'eac_config', '~> 0.10'
17
17
  s.add_dependency 'eac_docker', '~> 0.3'
18
18
  s.add_dependency 'eac_git', '~> 0.6'
19
- s.add_dependency 'eac_ruby_utils', '~> 0.95'
19
+ s.add_dependency 'eac_ruby_utils', '~> 0.97'
20
20
  s.add_dependency 'eac_templates', '~> 0.1', '>= 0.1.1'
21
21
  s.add_dependency 'filesize', '~> 0.2'
22
22
  s.add_dependency 'htmlbeautifier', '~> 1.3', '>= 1.3.1'
@@ -5,7 +5,11 @@ require 'eac_ruby_utils/core_ext'
5
5
  module Avm
6
6
  module ApplicationStereotypes
7
7
  class Base
8
- common_constructor :namespace_module, :instance_class, :source_class
8
+ enable_listable
9
+ lists.add_symbol :resource, :instance, :source, :source_generator
10
+ common_constructor :namespace_module, :resources do
11
+ self.resources = self.class.lists.resource.hash_keys_validate!(resources)
12
+ end
9
13
 
10
14
  # @return [String]
11
15
  def name
@@ -16,6 +20,12 @@ module Avm
16
20
  def to_s
17
21
  name
18
22
  end
23
+
24
+ lists.resource.each_value do |resource|
25
+ define_method "#{resource}_class" do
26
+ resources[resource]
27
+ end
28
+ end
19
29
  end
20
30
  end
21
31
  end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/instances/entry_keys'
4
+
5
+ module Avm
6
+ module Instances
7
+ class Base
8
+ module AutoValues
9
+ module Install
10
+ def auto_access
11
+ read_entry_optional(::Avm::Instances::EntryKeys::INSTALL_URL).present? ? 'ssh' : 'local'
12
+ end
13
+
14
+ def auto_install_hostname
15
+ inherited_entry_value(::Avm::Instances::EntryKeys::HOST_ID,
16
+ ::Avm::Instances::EntryKeys::INSTALL_HOSTNAME)
17
+ end
18
+
19
+ def auto_install_port
20
+ inherited_entry_value(::Avm::Instances::EntryKeys::HOST_ID,
21
+ ::Avm::Instances::EntryKeys::INSTALL_PORT) || 22
22
+ end
23
+
24
+ def auto_install_username
25
+ inherited_entry_value(::Avm::Instances::EntryKeys::HOST_ID,
26
+ ::Avm::Instances::EntryKeys::INSTALL_USERNAME)
27
+ end
28
+
29
+ def auto_install_url
30
+ inherited_entry_value(::Avm::Instances::EntryKeys::HOST_ID,
31
+ ::Avm::Instances::EntryKeys::INSTALL_URL) ||
32
+ auto_install_url_by_parts
33
+ end
34
+
35
+ 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
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -10,7 +10,7 @@ module Avm
10
10
  extend ::ActiveSupport::Concern
11
11
 
12
12
  included do
13
- %w[Access Admin Data Database Filesystem Mailer Ruby Source System Web]
13
+ %w[Admin Data Database Filesystem Install Mailer Ruby Source System Web]
14
14
  .each do |class_name|
15
15
  include const_get(class_name)
16
16
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'avm/with_application_stereotype'
4
- require 'avm/with_dynamic_runners'
3
+ require 'avm/with/application_stereotype'
4
+ require 'avm/with/extra_subcommands'
5
5
  require 'eac_ruby_utils/require_sub'
6
6
  require 'eac_ruby_utils/simple_cache'
7
7
  require 'avm/instances/entries'
@@ -14,8 +14,8 @@ module Avm
14
14
  enable_simple_cache
15
15
  require_sub __FILE__, include_modules: true
16
16
  include ::Avm::Instances::Entries
17
- include ::Avm::WithDynamicRunners
18
- include ::Avm::WithApplicationStereotype
17
+ include ::Avm::With::ExtraSubcommands
18
+ include ::Avm::With::ApplicationStereotype
19
19
 
20
20
  lists.add_string :access, :local, :ssh
21
21
 
@@ -5,6 +5,8 @@ require 'eac_ruby_utils/core_ext'
5
5
  module Avm
6
6
  module Instances
7
7
  module EntryKeys
8
+ URI_FIELDS = %i[fragment hostname password path port query scheme url username].freeze
9
+
8
10
  class << self
9
11
  def all
10
12
  all_keys.to_a
@@ -43,17 +45,16 @@ module Avm
43
45
 
44
46
  {
45
47
  '' => %w[data_fs_path fs_path host_id name source_instance_id],
46
- admin: %w[username password api_key],
47
- database: %w[id hostname limit name password port system timeout username extra],
48
+ admin: URI_FIELDS + %w[api_key],
49
+ database: URI_FIELDS + %w[id limit name system timeout extra],
48
50
  docker: %w[registry],
49
51
  fs: %w[url],
52
+ install: URI_FIELDS,
50
53
  mailer: {
51
54
  '' => %w[id from reply_to],
52
- smtp: %w[address port domain username password authentication openssl_verify_mode
53
- starttls_auto tls]
55
+ smtp: URI_FIELDS + %w[address domain authentication openssl_verify_mode starttls_auto tls]
54
56
  },
55
- ssh: %w[hostname port url username],
56
- web: %w[authority hostname path port scheme url userinfo]
57
+ web: URI_FIELDS + %w[authority userinfo]
57
58
  }.each { |prefix, suffixes| keys_consts_set(prefix, suffixes) }
58
59
  end
59
60
  end
@@ -1,8 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'eac_ruby_utils/core_ext'
4
+
3
5
  module Avm
4
6
  module Instances
5
- require 'avm/applications/base'
6
- require 'avm/instances/entries'
7
+ require_sub __FILE__
7
8
  end
8
9
  end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'avm/application_stereotypes/base'
3
4
  require 'avm/registry/application_stereotypes/stereotype_builder'
4
5
  require 'eac_ruby_utils/core_ext'
5
6
 
@@ -13,8 +14,7 @@ module Avm
13
14
 
14
15
  def result
15
16
  reset_buffer
16
- read_instances_registry
17
- read_sources_registry
17
+ read_registries
18
18
  buffer.values.map(&:build)
19
19
  end
20
20
 
@@ -29,12 +29,15 @@ module Avm
29
29
  buffer[object.stereotype_namespace_module].add_object(type, object)
30
30
  end
31
31
 
32
- def read_instances_registry
33
- ::Avm::Registry.instances.available.each { |instance| read_object(:instance, instance) }
32
+ def read_registries
33
+ ::Avm::ApplicationStereotypes::Base.lists.resource.each_value do |resource|
34
+ read_registry(resource)
35
+ end
34
36
  end
35
37
 
36
- def read_sources_registry
37
- ::Avm::Registry.sources.available.each { |source| read_object(:source, source) }
38
+ def read_registry(resource)
39
+ ::Avm::Registry.send(resource.to_s.pluralize).available
40
+ .each { |obj| read_object(resource, obj) }
38
41
  end
39
42
 
40
43
  def reset_buffer
@@ -10,20 +10,23 @@ module Avm
10
10
  common_constructor :namespace_module
11
11
 
12
12
  def add_object(type, object)
13
- attr_method = "#{type}_class"
14
- raise "#{attr_method} is already present" if send(attr_method).present?
13
+ type = type.to_sym
14
+ raise "#{attr_method} is already present" if resources.key?(type)
15
15
 
16
- send("#{attr_method}=", object)
16
+ resources[::Avm::ApplicationStereotypes::Base.lists.resource.value_validate!(type)] =
17
+ object
17
18
  end
18
19
 
19
20
  # @return [Avm::ApplicationStereotypes::Base]
20
21
  def build
21
- ::Avm::ApplicationStereotypes::Base.new(namespace_module, instance_class, source_class)
22
+ ::Avm::ApplicationStereotypes::Base.new(namespace_module, resources)
22
23
  end
23
24
 
24
25
  private
25
26
 
26
- attr_accessor :instance_class, :source_class
27
+ def resources
28
+ @resources ||= {}
29
+ end
27
30
  end
28
31
  end
29
32
  end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/instances/base'
4
+ require 'avm/registry/from_gems'
5
+
6
+ module Avm
7
+ module Registry
8
+ class SourceGenerators < ::Avm::Registry::FromGems
9
+ # @return [Avm::Instances::Base, nil]
10
+ def class_detect(klass, detect_args)
11
+ stereotype_name, target_path = detect_args
12
+ klass.application_stereotype.name == stereotype_name ? klass.new(target_path) : nil
13
+ end
14
+ end
15
+ end
16
+ end
@@ -7,7 +7,8 @@ module Avm
7
7
  module Registry
8
8
  require_sub __FILE__
9
9
  enable_listable
10
- lists.add_symbol :category, :application_stereotypes, :instances, :runners, :scms, :sources
10
+ lists.add_symbol :category, :application_stereotypes, :instances, :runners, :scms,
11
+ :source_generators, :sources
11
12
 
12
13
  WITH_PATH = [CATEGORY_SCMS, CATEGORY_SOURCES].freeze
13
14
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'avm/with_application_stereotype'
3
+ require 'avm/with/application_stereotype'
4
4
  require 'eac_ruby_utils/core_ext'
5
5
 
6
6
  module Avm
@@ -8,7 +8,7 @@ module Avm
8
8
  class Base
9
9
  enable_abstract_methods
10
10
  enable_simple_cache
11
- include ::Avm::WithApplicationStereotype
11
+ include ::Avm::With::ApplicationStereotype
12
12
  abstract_methods :update, :valid?
13
13
  common_constructor :path do
14
14
  self.path = path.to_pathname
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/with/application_stereotype'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Avm
7
+ module SourceGenerators
8
+ class Base
9
+ include ::Avm::With::ApplicationStereotype
10
+ common_constructor :target_path do
11
+ self.target_path = target_path.to_pathname
12
+ end
13
+
14
+ def perform
15
+ assert_clear_directory
16
+ apply_template
17
+ end
18
+
19
+ def assert_clear_directory
20
+ target_path.mkpath
21
+ raise "\"#{target_path}\" is not empty" if target_path.children.any?
22
+ end
23
+
24
+ def apply_template
25
+ template.apply(self, target_path)
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module SourceGenerators
7
+ require_sub __FILE__
8
+ end
9
+ end
@@ -2,8 +2,8 @@
2
2
 
3
3
  require 'avm/registry'
4
4
  require 'avm/scms/null'
5
- require 'avm/with_application_stereotype'
6
- require 'avm/with_dynamic_runners'
5
+ require 'avm/with/application_stereotype'
6
+ require 'avm/with/extra_subcommands'
7
7
  require 'eac_git'
8
8
  require 'eac_ruby_utils/core_ext'
9
9
 
@@ -11,8 +11,8 @@ module Avm
11
11
  module Sources
12
12
  class Base
13
13
  require_sub __FILE__, include_modules: true
14
- include ::Avm::WithApplicationStereotype
15
- include ::Avm::WithDynamicRunners
14
+ include ::Avm::With::ApplicationStereotype
15
+ include ::Avm::With::ExtraSubcommands
16
16
  compare_by :path
17
17
  enable_abstract_methods
18
18
  enable_simple_cache
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Avm
4
- VERSION = '0.29.0'
4
+ VERSION = '0.31.0'
5
5
  end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module With
7
+ module ApplicationStereotype
8
+ common_concern do
9
+ include ClassMethods
10
+ end
11
+
12
+ module ClassMethods
13
+ # @return [Avm::ApplicationStereotype::Base]
14
+ def application_stereotype
15
+ @application_stereotype ||=
16
+ ::Avm::Registry.application_stereotypes.detect(application_stereotype_name)
17
+ end
18
+
19
+ # @return [String]
20
+ def application_stereotype_name
21
+ stereotype_namespace_module.name.demodulize
22
+ end
23
+
24
+ # @return [Module]
25
+ def stereotype_namespace_module
26
+ module_parent.module_parent
27
+ end
28
+ end
29
+
30
+ def stereotype_namespace_module
31
+ self.class.stereotype_namespace_module
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_cli/runner_with/subcommands'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Avm
7
+ module With
8
+ module ExtraSubcommands
9
+ # @return [Hash<String, EacCli::Runner>]
10
+ def extra_available_subcommands
11
+ extra_available_subcommands_from_runners_module
12
+ end
13
+
14
+ # @return [Hash<String, EacCli::Runner>]
15
+ def extra_available_subcommands_from_runners_module
16
+ self.class.ancestors.reverse.inject({}) do |a, e|
17
+ a.merge(RunnersFromModule.new(e).result)
18
+ end
19
+ end
20
+
21
+ class RunnersFromModule
22
+ enable_simple_cache
23
+ common_constructor :the_module
24
+
25
+ # @return [Hash<String, EacCli::Runner>]
26
+ def result
27
+ return {} if runners_module.blank?
28
+
29
+ ::EacCli::RunnerWith::Subcommands.subcommands_from_module(runners_module)
30
+ end
31
+
32
+ def runners_module_uncached
33
+ return nil if the_module.module_parent.blank?
34
+
35
+ begin
36
+ the_module.module_parent.const_get('Runners')
37
+ rescue ::NameError
38
+ nil
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -23,9 +23,9 @@ RSpec.describe ::Avm::Instances::Base do
23
23
  ::Avm::Instances::EntryKeys::DATABASE_PASSWORD => 'pass1',
24
24
  ::Avm::Instances::EntryKeys::DATABASE_HOSTNAME => 'database.net',
25
25
  ::Avm::Instances::EntryKeys::DATABASE_PORT => 5432,
26
- ::Avm::Instances::EntryKeys::SSH_HOSTNAME => 'myhost.com',
27
- ::Avm::Instances::EntryKeys::SSH_USERNAME => 'myuser',
28
- ::Avm::Instances::EntryKeys::SSH_URL => 'ssh://otheruser@otherhost.com'
26
+ ::Avm::Instances::EntryKeys::INSTALL_HOSTNAME => 'myhost.com',
27
+ ::Avm::Instances::EntryKeys::INSTALL_USERNAME => 'myuser',
28
+ ::Avm::Instances::EntryKeys::INSTALL_URL => 'ssh://otheruser@otherhost.com'
29
29
  },
30
30
  'app_2' => {
31
31
  ::Avm::Instances::EntryKeys::DATABASE_HOSTNAME => '127.0.0.1',
@@ -11,7 +11,7 @@ app_1:
11
11
  password: pass1
12
12
  hostname: database.net
13
13
  app_2:
14
- ssh:
14
+ install:
15
15
  hostname: myhost.com
16
16
  username: myuser
17
17
  url: ssh://otheruser@otherhost.com
@@ -12,8 +12,8 @@ Gem::Specification.new do |s|
12
12
 
13
13
  s.files = Dir['{lib,template}/**/*']
14
14
 
15
- s.add_dependency 'avm-eac_rails_base1', '~> 0.3'
16
- s.add_dependency 'eac_ruby_utils', '~> 0.80', '>= 0.80.2'
15
+ s.add_dependency 'avm-eac_rails_base1', '~> 0.4', '>= 0.4.2'
16
+ s.add_dependency 'eac_ruby_utils', '~> 0.97'
17
17
 
18
- s.add_development_dependency 'eac_ruby_gem_support', '~> 0.4'
18
+ s.add_development_dependency 'eac_ruby_gem_support', '~> 0.5.1'
19
19
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/source_generators/base'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Avm
7
+ module EacRailsBase0
8
+ module SourceGenerators
9
+ class Base < ::Avm::SourceGenerators::Base
10
+ end
11
+ end
12
+ end
13
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module EacRailsBase0
5
- VERSION = '0.5.0'
5
+ VERSION = '0.6.1'
6
6
  end
7
7
  end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gem 'eac_rails_base0'
6
+ gem 'eac_rails_gem_support', group: :development
7
+
8
+ # Local gems
9
+ ::Dir["#{__dir__}/{sub/gems,engines}/*/*.gemspec"].each do |file|
10
+ gem ::File.basename(::File.dirname(file)), path: ::File.dirname(file)
11
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
4
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
5
+
6
+ require_relative 'config/application'
7
+
8
+ Rails.application.load_tasks
@@ -0,0 +1,3 @@
1
+ //= link_tree ../images
2
+ //= link_directory ../javascripts .js
3
+ //= link_directory ../stylesheets .css
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ApplicationController < ::EacRailsBase0::ApplicationController
4
+ end