avm-tools 0.121.2 → 0.124.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -0
  3. data/lib/avm/tools/runner/app_src/info.rb +19 -0
  4. data/lib/avm/tools/runner/application_stereotypes/list.rb +31 -0
  5. data/lib/avm/tools/runner/application_stereotypes.rb +16 -0
  6. data/lib/avm/tools/version.rb +1 -1
  7. metadata +6 -63
  8. data/lib/avm/tools/runner/eac_redmine_base0/dev_docker.rb +0 -17
  9. data/sub/eac_config/Gemfile +0 -5
  10. data/sub/eac_config/eac_config.gemspec +0 -19
  11. data/sub/eac_config/lib/eac_config/entry.rb +0 -53
  12. data/sub/eac_config/lib/eac_config/entry_path.rb +0 -41
  13. data/sub/eac_config/lib/eac_config/envvars_node/entry.rb +0 -54
  14. data/sub/eac_config/lib/eac_config/envvars_node.rb +0 -25
  15. data/sub/eac_config/lib/eac_config/load_nodes_search.rb +0 -39
  16. data/sub/eac_config/lib/eac_config/load_path.rb +0 -28
  17. data/sub/eac_config/lib/eac_config/node.rb +0 -67
  18. data/sub/eac_config/lib/eac_config/node_entry.rb +0 -22
  19. data/sub/eac_config/lib/eac_config/node_uri.rb +0 -38
  20. data/sub/eac_config/lib/eac_config/old_configs/base.rb +0 -43
  21. data/sub/eac_config/lib/eac_config/old_configs/file.rb +0 -47
  22. data/sub/eac_config/lib/eac_config/old_configs.rb +0 -75
  23. data/sub/eac_config/lib/eac_config/paths_hash/entry_key_error.rb +0 -8
  24. data/sub/eac_config/lib/eac_config/paths_hash/node.rb +0 -67
  25. data/sub/eac_config/lib/eac_config/paths_hash/path_search.rb +0 -39
  26. data/sub/eac_config/lib/eac_config/paths_hash.rb +0 -63
  27. data/sub/eac_config/lib/eac_config/rspec/setup.rb +0 -65
  28. data/sub/eac_config/lib/eac_config/rspec.rb +0 -9
  29. data/sub/eac_config/lib/eac_config/version.rb +0 -5
  30. data/sub/eac_config/lib/eac_config/yaml_file_node/entry.rb +0 -36
  31. data/sub/eac_config/lib/eac_config/yaml_file_node.rb +0 -47
  32. data/sub/eac_config/lib/eac_config.rb +0 -7
  33. data/sub/eac_config/spec/lib/eac_config/entry_path_spec.rb +0 -30
  34. data/sub/eac_config/spec/lib/eac_config/envvars_node/entry_spec.rb +0 -14
  35. data/sub/eac_config/spec/lib/eac_config/envvars_node_spec.rb +0 -40
  36. data/sub/eac_config/spec/lib/eac_config/old_configs_spec.rb +0 -46
  37. data/sub/eac_config/spec/lib/eac_config/paths_hash_spec.rb +0 -88
  38. data/sub/eac_config/spec/lib/eac_config/yaml_file_node_spec.rb +0 -52
  39. data/sub/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1.yaml +0 -6
  40. data/sub/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1_1.yaml +0 -2
  41. data/sub/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1_2/storage1_2_1.yaml +0 -2
  42. data/sub/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1_2.yaml +0 -4
  43. data/sub/eac_config/spec/rubocop_spec.rb +0 -3
  44. data/sub/eac_config/spec/spec_helper.rb +0 -4
  45. data/sub/eac_docker/Gemfile +0 -5
  46. data/sub/eac_docker/eac_docker.gemspec +0 -19
  47. data/sub/eac_docker/lib/eac_docker/container.rb +0 -78
  48. data/sub/eac_docker/lib/eac_docker/debug.rb +0 -15
  49. data/sub/eac_docker/lib/eac_docker/executables.rb +0 -18
  50. data/sub/eac_docker/lib/eac_docker/images/base.rb +0 -14
  51. data/sub/eac_docker/lib/eac_docker/images/coded.rb +0 -43
  52. data/sub/eac_docker/lib/eac_docker/images/named.rb +0 -30
  53. data/sub/eac_docker/lib/eac_docker/images/templatized.rb +0 -41
  54. data/sub/eac_docker/lib/eac_docker/images.rb +0 -9
  55. data/sub/eac_docker/lib/eac_docker/registry.rb +0 -17
  56. data/sub/eac_docker/lib/eac_docker/rspec/setup.rb +0 -17
  57. data/sub/eac_docker/lib/eac_docker/rspec.rb +0 -9
  58. data/sub/eac_docker/lib/eac_docker/version.rb +0 -5
  59. data/sub/eac_docker/lib/eac_docker.rb +0 -7
  60. data/sub/eac_docker/spec/lib/eac_docker/executables_spec.rb +0 -9
  61. data/sub/eac_docker/spec/lib/eac_docker/images/coded_spec.rb +0 -12
  62. data/sub/eac_docker/spec/lib/eac_docker/images/coded_spec_files/image1/Dockerfile +0 -1
  63. data/sub/eac_docker/spec/lib/eac_docker/images/templatized_spec.rb +0 -18
  64. data/sub/eac_docker/spec/lib/eac_docker/images/templatized_spec_files/stub_docker_image/Dockerfile +0 -1
  65. data/sub/eac_docker/spec/rubocop_spec.rb +0 -3
  66. data/sub/eac_docker/spec/spec_helper.rb +0 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b24067d578a5336edb5025a099861a707d07c9e1124bf1eb79539175dd8bd4dd
4
- data.tar.gz: 9a64c337099caa0cd45dbbdbfe58248d5a0333c166da9eb5ffd1139ed3fc3788
3
+ metadata.gz: '08cbe8be7452f80405bfbc8fe71f64bc84b797af3399ee4d35c1d218065f7a98'
4
+ data.tar.gz: ae959f3f8c6c7e70da1c3dd4d425d8cda2fe73b27a8bd806b4bf24e7db424b53
5
5
  SHA512:
6
- metadata.gz: bcf410474f87daf2746cacceb809c9390af0929f0346fdd1cce147f2336cfd047ea803421869a57369bff43ad1c4af4a014a57afcab56bb27466dedbbd1eac9b
7
- data.tar.gz: 471c0268b03a367ebd9de94799938270c66f1cca8b95b92f261b278649e7fb27ab6b18c786bf0a9f13beeaa92ed9941c0e420946a8c69bbed56b9cf0f66c1692
6
+ metadata.gz: ef1e039ba2a5ff3be49286b37fb1d17b15561960d53458d55c011ecaec3e80bed22fd88caa5be6a8b5ba2ff09a1f60cddce412710f6aa44f64909c07ec4ce5d4
7
+ data.tar.gz: b560513dcf791a0bec5287054e3f4c18e5c71c3099b1b4f2d1617f8dd742cccfe6802a0c6547b46799bf8570b0aa498dab40dbaf299f26f6fa6b26cb74094cde
data/Gemfile CHANGED
@@ -10,3 +10,6 @@ Dir["#{gems_subdir}/*"].each do |dir|
10
10
 
11
11
  gem ::File.basename(dir), path: dir
12
12
  end
13
+
14
+ local_gemfile = ::File.join(::File.dirname(__FILE__), 'Gemfile.local')
15
+ eval_gemfile local_gemfile if ::File.exist?(local_gemfile)
@@ -9,11 +9,15 @@ module Avm
9
9
  class Info
10
10
  runner_with :help do
11
11
  desc 'Show information about local project instance.'
12
+ bool_opt '-p', '--parent', 'Show the parent source.'
13
+ bool_opt '-t', '--tests', 'Show test commands.'
12
14
  end
13
15
 
14
16
  def run
15
17
  show_instance
16
18
  show_source
19
+ show_parent
20
+ show_test_commands
17
21
  end
18
22
 
19
23
  private
@@ -23,11 +27,26 @@ module Avm
23
27
  infov 'Launcher stereotypes', instance.stereotypes.map(&:label).join(', ')
24
28
  end
25
29
 
30
+ def show_parent
31
+ return unless parsed.parent?
32
+
33
+ infov 'Parent', runner_context.call(:subject).parent
34
+ end
35
+
26
36
  def show_source
27
37
  infov 'Stereotype', runner_context.call(:subject).class
28
38
  infov 'SCM', runner_context.call(:subject).scm
29
39
  end
30
40
 
41
+ def show_test_commands
42
+ return unless parsed.tests?
43
+
44
+ infov 'Test commands', runner_context.call(:subject).test_commands.count
45
+ runner_context.call(:subject).test_commands.each do |name, command|
46
+ infov " * #{name}", command
47
+ end
48
+ end
49
+
31
50
  def instance
32
51
  runner_context.call(:instance)
33
52
  end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/tools/core_ext'
4
+
5
+ module Avm
6
+ module Tools
7
+ class Runner
8
+ class ApplicationStereotypes
9
+ class List
10
+ runner_with :help, :output
11
+
12
+ def run
13
+ infov 'Found', stereotypes.count
14
+ run_output
15
+ end
16
+
17
+ def output_content
18
+ stereotypes.map { |s| "#{s}\n" }.join
19
+ end
20
+
21
+ private
22
+
23
+ def stereotypes
24
+ ::Avm::Registry.application_stereotypes.available
25
+ .sort_by { |s| [s.name, s.namespace_module] }
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_cli/core_ext'
4
+
5
+ module Avm
6
+ module Tools
7
+ class Runner
8
+ class ApplicationStereotypes
9
+ require_sub __FILE__
10
+ runner_with :help, :subcommands do
11
+ subcommands
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module Tools
5
- VERSION = '0.121.2'
5
+ VERSION = '0.124.0'
6
6
  end
7
7
  end
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.121.2
4
+ version: 0.124.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: 2022-07-18 00:00:00.000000000 Z
11
+ date: 2022-07-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aranha-parsers
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.22'
33
+ version: '0.27'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0.22'
40
+ version: '0.27'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: avm-eac_asciidoctor_base0
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -371,11 +371,12 @@ files:
371
371
  - lib/avm/tools/runner/app_src/test.rb
372
372
  - lib/avm/tools/runner/app_src/update.rb
373
373
  - lib/avm/tools/runner/app_src/version_bump.rb
374
+ - lib/avm/tools/runner/application_stereotypes.rb
375
+ - lib/avm/tools/runner/application_stereotypes/list.rb
374
376
  - lib/avm/tools/runner/config.rb
375
377
  - lib/avm/tools/runner/config/load_path.rb
376
378
  - lib/avm/tools/runner/eac_asciidoctor_base0.rb
377
379
  - lib/avm/tools/runner/eac_redmine_base0.rb
378
- - lib/avm/tools/runner/eac_redmine_base0/dev_docker.rb
379
380
  - lib/avm/tools/runner/eac_redmine_base0/docker.rb
380
381
  - lib/avm/tools/runner/eac_redmine_base0/project_rename.rb
381
382
  - lib/avm/tools/runner/eac_webapp_base0.rb
@@ -550,64 +551,6 @@ files:
550
551
  - sub/avm-git/spec/lib/avm/git/scms/git_subrepo_spec.rb
551
552
  - sub/avm-git/spec/rubocop_spec.rb
552
553
  - sub/avm-git/spec/spec_helper.rb
553
- - sub/eac_config/Gemfile
554
- - sub/eac_config/eac_config.gemspec
555
- - sub/eac_config/lib/eac_config.rb
556
- - sub/eac_config/lib/eac_config/entry.rb
557
- - sub/eac_config/lib/eac_config/entry_path.rb
558
- - sub/eac_config/lib/eac_config/envvars_node.rb
559
- - sub/eac_config/lib/eac_config/envvars_node/entry.rb
560
- - sub/eac_config/lib/eac_config/load_nodes_search.rb
561
- - sub/eac_config/lib/eac_config/load_path.rb
562
- - sub/eac_config/lib/eac_config/node.rb
563
- - sub/eac_config/lib/eac_config/node_entry.rb
564
- - sub/eac_config/lib/eac_config/node_uri.rb
565
- - sub/eac_config/lib/eac_config/old_configs.rb
566
- - sub/eac_config/lib/eac_config/old_configs/base.rb
567
- - sub/eac_config/lib/eac_config/old_configs/file.rb
568
- - sub/eac_config/lib/eac_config/paths_hash.rb
569
- - sub/eac_config/lib/eac_config/paths_hash/entry_key_error.rb
570
- - sub/eac_config/lib/eac_config/paths_hash/node.rb
571
- - sub/eac_config/lib/eac_config/paths_hash/path_search.rb
572
- - sub/eac_config/lib/eac_config/rspec.rb
573
- - sub/eac_config/lib/eac_config/rspec/setup.rb
574
- - sub/eac_config/lib/eac_config/version.rb
575
- - sub/eac_config/lib/eac_config/yaml_file_node.rb
576
- - sub/eac_config/lib/eac_config/yaml_file_node/entry.rb
577
- - sub/eac_config/spec/lib/eac_config/entry_path_spec.rb
578
- - sub/eac_config/spec/lib/eac_config/envvars_node/entry_spec.rb
579
- - sub/eac_config/spec/lib/eac_config/envvars_node_spec.rb
580
- - sub/eac_config/spec/lib/eac_config/old_configs_spec.rb
581
- - sub/eac_config/spec/lib/eac_config/paths_hash_spec.rb
582
- - sub/eac_config/spec/lib/eac_config/yaml_file_node_spec.rb
583
- - sub/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1.yaml
584
- - sub/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1_1.yaml
585
- - sub/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1_2.yaml
586
- - sub/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1_2/storage1_2_1.yaml
587
- - sub/eac_config/spec/rubocop_spec.rb
588
- - sub/eac_config/spec/spec_helper.rb
589
- - sub/eac_docker/Gemfile
590
- - sub/eac_docker/eac_docker.gemspec
591
- - sub/eac_docker/lib/eac_docker.rb
592
- - sub/eac_docker/lib/eac_docker/container.rb
593
- - sub/eac_docker/lib/eac_docker/debug.rb
594
- - sub/eac_docker/lib/eac_docker/executables.rb
595
- - sub/eac_docker/lib/eac_docker/images.rb
596
- - sub/eac_docker/lib/eac_docker/images/base.rb
597
- - sub/eac_docker/lib/eac_docker/images/coded.rb
598
- - sub/eac_docker/lib/eac_docker/images/named.rb
599
- - sub/eac_docker/lib/eac_docker/images/templatized.rb
600
- - sub/eac_docker/lib/eac_docker/registry.rb
601
- - sub/eac_docker/lib/eac_docker/rspec.rb
602
- - sub/eac_docker/lib/eac_docker/rspec/setup.rb
603
- - sub/eac_docker/lib/eac_docker/version.rb
604
- - sub/eac_docker/spec/lib/eac_docker/executables_spec.rb
605
- - sub/eac_docker/spec/lib/eac_docker/images/coded_spec.rb
606
- - sub/eac_docker/spec/lib/eac_docker/images/coded_spec_files/image1/Dockerfile
607
- - sub/eac_docker/spec/lib/eac_docker/images/templatized_spec.rb
608
- - sub/eac_docker/spec/lib/eac_docker/images/templatized_spec_files/stub_docker_image/Dockerfile
609
- - sub/eac_docker/spec/rubocop_spec.rb
610
- - sub/eac_docker/spec/spec_helper.rb
611
554
  - sub/eac_git/Gemfile
612
555
  - sub/eac_git/eac_git.gemspec
613
556
  - sub/eac_git/lib/eac_git.rb
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'avm/docker/runner'
4
-
5
- module Avm
6
- module Tools
7
- class Runner
8
- class EacRedmineBase0 < ::Avm::EacRailsBase1::Runner
9
- class DevDocker < ::Avm::Docker::Runner
10
- def docker_image
11
- ::Avm::EacUbuntuBase0::DockerImage
12
- end
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source 'https://rubygems.org'
4
-
5
- gemspec
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- $LOAD_PATH.push File.expand_path('lib', __dir__)
4
-
5
- require 'eac_config/version'
6
-
7
- Gem::Specification.new do |s|
8
- s.name = 'eac_config'
9
- s.version = EacConfig::VERSION
10
- s.authors = ['Put here the authors']
11
- s.summary = 'Put here de description.'
12
-
13
- s.files = Dir['{lib}/**/*']
14
-
15
- s.add_dependency 'addressable'
16
- s.add_dependency 'eac_ruby_utils', '~> 0.83'
17
-
18
- s.add_development_dependency 'eac_ruby_gem_support', '~> 0.5.1'
19
- end
@@ -1,53 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_config/entry_path'
4
- require 'eac_ruby_utils/core_ext'
5
-
6
- module EacConfig
7
- class Entry
8
- enable_simple_cache
9
- common_constructor :root_node, :path do
10
- self.path = ::EacConfig::EntryPath.assert(path)
11
- end
12
-
13
- def found?
14
- node_entry.if_present(false, &:found?)
15
- end
16
-
17
- def found_node
18
- node_entry.if_present(&:node)
19
- end
20
-
21
- def secret_value
22
- node_entry.if_present(&:secret_value)
23
- end
24
-
25
- def value
26
- node_entry.if_present(&:value)
27
- end
28
-
29
- def value=(a_value)
30
- write_node.self_entry(path).value = a_value
31
- end
32
-
33
- def write_node
34
- root_node.write_node || root_node
35
- end
36
-
37
- private
38
-
39
- def node_entry_uncached
40
- node_entry_from_root || node_entry_from_load_path
41
- end
42
-
43
- def node_entry_from_load_path_uncached
44
- root_node.recursive_loaded_nodes.lazy.map { |loaded_node| loaded_node.self_entry(path) }
45
- .find(&:found?)
46
- end
47
-
48
- def node_entry_from_root_uncached
49
- e = root_node.self_entry(path)
50
- e.found? ? e : nil
51
- end
52
- end
53
- end
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/core_ext'
4
-
5
- module EacConfig
6
- class EntryPath
7
- PART_SEPARATOR = '.'
8
-
9
- class << self
10
- def assert(source)
11
- source.is_a?(self) ? source : new(build_parts(source))
12
- end
13
-
14
- def build_parts(source)
15
- return validate_parts!(source.split(PART_SEPARATOR)) if source.is_a?(::String)
16
- return validate_parts!(source.flat_map { |part| build_parts(part) }) if
17
- source.is_a?(::Enumerable)
18
-
19
- build_parts(source.to_s)
20
- end
21
-
22
- def validate_parts!(parts)
23
- parts.assert_argument(::Enumerable, 'parts')
24
- parts.each_with_index do |part, index|
25
- raise ::ArgumentError, "Part #{index} of #{parts} is blank" if part.blank?
26
- raise ::ArgumentError, "Part #{index} is not a string" unless part.is_a?(::String)
27
- end
28
- end
29
- end
30
-
31
- attr_reader :parts
32
-
33
- def initialize(parts)
34
- @parts = parts.to_a.freeze
35
- end
36
-
37
- def to_s
38
- "#{self.class}[#{parts.join(PART_SEPARATOR)}]"
39
- end
40
- end
41
- end
@@ -1,54 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_config/entry_path'
4
- require 'eac_config/node_entry'
5
- require 'eac_ruby_utils/blank_not_blank'
6
- require 'eac_ruby_utils/core_ext'
7
- require 'eac_ruby_utils/yaml'
8
-
9
- module EacConfig
10
- class EnvvarsNode
11
- class Entry < ::EacConfig::NodeEntry
12
- class << self
13
- def entry_path_to_envvar_name(path)
14
- ::EacConfig::EntryPath.assert(path).parts.join('_').gsub(/[^a-z0-9_]/i, '')
15
- .gsub(/\A_+/, '').gsub(/_+\z/, '').gsub(/_{2,}/, '_').upcase
16
- end
17
-
18
- def from_value(string)
19
- return nil if string.nil?
20
- return ::EacRubyUtils::Yaml.load(string) if string.start_with?('---')
21
-
22
- string
23
- end
24
-
25
- def to_value(object)
26
- return nil if object.nil?
27
- return object if object.is_a?(String)
28
-
29
- ::EacRubyUtils::Yaml.dump(object)
30
- end
31
- end
32
-
33
- enable_simple_cache
34
-
35
- def found?
36
- ENV.key?(envvar_name)
37
- end
38
-
39
- def value
40
- self.class.from_value(ENV[envvar_name])
41
- end
42
-
43
- def value=(a_value)
44
- ENV[envvar_name] = self.class.to_value(a_value)
45
- end
46
-
47
- private
48
-
49
- def envvar_name_uncached
50
- self.class.entry_path_to_envvar_name(path)
51
- end
52
- end
53
- end
54
- end
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'addressable'
4
- require 'eac_config/node'
5
- require 'eac_ruby_utils/core_ext'
6
-
7
- module EacConfig
8
- # A node that read/write entries from environment variables.
9
- class EnvvarsNode
10
- require_sub __FILE__
11
- include ::EacConfig::Node
12
-
13
- URI = ::Addressable::URI.parse('self://envvars')
14
-
15
- class << self
16
- def from_uri(uri)
17
- return new if uri == URI
18
- end
19
- end
20
-
21
- def url
22
- URI
23
- end
24
- end
25
- end
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/core_ext'
4
-
5
- module EacConfig
6
- class LoadNodesSearch
7
- common_constructor :root_node do
8
- add_next_pending until pending.empty?
9
- end
10
-
11
- def result
12
- added
13
- end
14
-
15
- private
16
-
17
- def added
18
- @added ||= []
19
- end
20
-
21
- def add_next_pending
22
- current = pending.pop
23
- current.self_loaded_nodes.each do |loaded_node|
24
- next if added.include?(loaded_node)
25
-
26
- added << loaded_node
27
- pending.push(loaded_node)
28
- end
29
- end
30
-
31
- def pending
32
- @pending ||= begin
33
- r = Queue.new
34
- r.push(root_node)
35
- r
36
- end
37
- end
38
- end
39
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_config/entry_path'
4
- require 'eac_ruby_utils/core_ext'
5
-
6
- module EacConfig
7
- class LoadPath
8
- ENTRY_PATH = ::EacConfig::EntryPath.assert(%w[load_path])
9
-
10
- common_constructor :node
11
-
12
- def entry
13
- node.self_entry(ENTRY_PATH)
14
- end
15
-
16
- # @return [Array<String>]
17
- def paths
18
- r = entry.value
19
- r.is_a?(::Array) ? r : []
20
- end
21
-
22
- def push(new_path)
23
- entry.value = paths + [new_path]
24
- end
25
-
26
- delegate :to_s, to: :paths
27
- end
28
- end
@@ -1,67 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_config/entry'
4
- require 'eac_config/entry_path'
5
- require 'eac_config/load_path'
6
- require 'eac_config/load_nodes_search'
7
- require 'eac_config/node_entry'
8
- require 'eac_config/node_uri'
9
- require 'eac_ruby_utils/core_ext'
10
- require 'eac_ruby_utils/context'
11
-
12
- module EacConfig
13
- module Node
14
- class << self
15
- def context
16
- @context ||= ::EacRubyUtils::Context.new
17
- end
18
- end
19
-
20
- attr_accessor :write_node
21
-
22
- common_concern do
23
- enable_abstract_methods
24
- include ::Comparable
25
- end
26
-
27
- def entry(path)
28
- ::EacConfig::Entry.new(self, path)
29
- end
30
-
31
- # @return [[EacConfig::IncludePath]]
32
- def load_path
33
- @load_path ||= ::EacConfig::LoadPath.new(self)
34
- end
35
-
36
- # @return [Addressable::URI]
37
- def url
38
- raise_abstract_method(__method__)
39
- end
40
-
41
- # Return a entry which search values only in the self node.
42
- # @return [EacConfig::NodeEntry]
43
- def self_entry(path)
44
- self_entry_class.new(self, path)
45
- end
46
-
47
- def self_entry_class
48
- self.class.const_get('Entry')
49
- end
50
-
51
- # @return [Array<EacConfig::Node>]
52
- def self_loaded_nodes
53
- load_path.paths.map { |node_path| load_node(node_path) }
54
- end
55
-
56
- # @return [Array<EacConfig::Node>]
57
- def recursive_loaded_nodes
58
- ::EacConfig::LoadNodesSearch.new(self).result
59
- end
60
-
61
- private
62
-
63
- def load_node(node_path)
64
- ::EacConfig::NodeUri.new(node_path, url).instanciate
65
- end
66
- end
67
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_config/entry_path'
4
- require 'eac_config/paths_hash'
5
- require 'eac_ruby_utils/core_ext'
6
-
7
- module EacConfig
8
- # A entry which search values only in the source node.
9
- class NodeEntry
10
- enable_abstract_methods
11
- enable_simple_cache
12
- common_constructor :node, :path do
13
- self.path = ::EacConfig::EntryPath.assert(path)
14
- end
15
-
16
- abstract_methods :found?, :value, :value=
17
-
18
- def secret_value
19
- value
20
- end
21
- end
22
- end
@@ -1,38 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module EacConfig
4
- class NodeUri
5
- enable_simple_cache
6
- common_constructor :source, :loader_uri, default: [nil]
7
-
8
- def available_node_classes
9
- require 'eac_config/envvars_node'
10
- require 'eac_config/yaml_file_node'
11
- [::EacConfig::EnvvarsNode, ::EacConfig::YamlFileNode]
12
- end
13
-
14
- def instanciate
15
- available_node_classes.lazy.map { |k| k.from_uri(self) }.find(&:present?) ||
16
- raise("No class mapped for \"#{to_addressable}\"")
17
- end
18
-
19
- delegate :to_s, to: :to_addressable
20
-
21
- private
22
-
23
- def to_addressable_uncached
24
- r = ::Addressable::URI.parse(source)
25
- path = r.path.to_pathname
26
- r.path = path.expand_path(loader_uri_path_directory).to_path if path.relative?
27
- r.scheme = 'file' if r.scheme.blank?
28
- r
29
- end
30
-
31
- def loader_uri_path_directory
32
- r = loader_uri.path
33
- raise ".loader_uri \"#{loader_uri}\" has no path (Source: \"#{source}\")" if r.blank?
34
-
35
- r.to_pathname.parent
36
- end
37
- end
38
- end