avm-tools 0.71.0 → 0.75.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (143) hide show
  1. checksums.yaml +4 -4
  2. data/lib/avm/{stereotypes/eac_rails_base0.rb → eac_rails_base0.rb} +1 -3
  3. data/lib/avm/eac_rails_base0/instance.rb +2 -5
  4. data/lib/avm/{rails/runners.rb → eac_rails_base1.rb} +2 -4
  5. data/lib/avm/{rails → eac_rails_base1}/instance.rb +8 -3
  6. data/lib/avm/eac_rails_base1/runner.rb +12 -0
  7. data/lib/avm/eac_rails_base1/runner/bundle.rb +28 -0
  8. data/lib/avm/eac_rails_base1/runner/code_runner.rb +28 -0
  9. data/lib/avm/eac_rails_base1/runner_with/bundle.rb +57 -0
  10. data/lib/avm/{stereotypes/rails.rb → eac_redmine_base0.rb} +2 -4
  11. data/lib/avm/eac_redmine_base0/instance.rb +2 -4
  12. data/lib/avm/{stereotypes/eac_ubuntu_base0.rb → eac_ubuntu_base0.rb} +1 -3
  13. data/lib/avm/{stereotypes/eac_webapp_base0.rb → eac_webapp_base0.rb} +1 -3
  14. data/lib/avm/eac_webapp_base0/deploy.rb +17 -40
  15. data/lib/avm/eac_webapp_base0/deploy/build.rb +48 -0
  16. data/lib/avm/eac_webapp_base0/deploy/git_info.rb +13 -0
  17. data/lib/avm/eac_webapp_base0/deploy/version.rb +4 -0
  18. data/lib/avm/eac_webapp_base0/deploy/write_on_target.rb +18 -0
  19. data/lib/avm/eac_webapp_base0/instance.rb +2 -2
  20. data/lib/avm/eac_webapp_base0/runner.rb +12 -0
  21. data/lib/avm/eac_webapp_base0/runner/apache_host.rb +2 -3
  22. data/lib/avm/eac_webapp_base0/runner/data.rb +1 -1
  23. data/lib/avm/eac_webapp_base0/runner/data/dump.rb +1 -1
  24. data/lib/avm/eac_webapp_base0/runner/data/load.rb +1 -1
  25. data/lib/avm/eac_webapp_base0/runner/deploy.rb +3 -16
  26. data/lib/avm/eac_wordpress_base0.rb +9 -0
  27. data/lib/avm/eac_wordpress_base0/apache_host.rb +25 -0
  28. data/lib/avm/eac_wordpress_base0/deploy.rb +10 -0
  29. data/lib/avm/eac_wordpress_base0/instance.rb +24 -0
  30. data/lib/avm/eac_writings_base0.rb +9 -0
  31. data/lib/avm/eac_writings_base0/apache_host.rb +17 -0
  32. data/lib/avm/eac_writings_base0/commons.rb +12 -0
  33. data/lib/avm/eac_writings_base0/deploy.rb +36 -0
  34. data/lib/avm/eac_writings_base0/file_build.rb +45 -0
  35. data/lib/avm/eac_writings_base0/file_build/base_stereotype.rb +19 -0
  36. data/lib/avm/eac_writings_base0/file_build/chapter_index.rb +23 -0
  37. data/lib/avm/eac_writings_base0/file_build/tex_source.rb +33 -0
  38. data/lib/avm/eac_writings_base0/instance.rb +11 -0
  39. data/lib/avm/eac_writings_base0/project.rb +33 -0
  40. data/lib/avm/eac_writings_base0/project_build.rb +117 -0
  41. data/lib/avm/eac_writings_base0/project_build/chapters_content.rb +47 -0
  42. data/lib/avm/eac_writings_base0/project_build/copy_files.rb +42 -0
  43. data/lib/avm/executables.rb +1 -1
  44. data/lib/avm/files/appendable.rb +55 -0
  45. data/lib/avm/files/appendable/file_content.rb +24 -0
  46. data/lib/avm/files/appendable/plain_directory.rb +25 -0
  47. data/lib/avm/files/appendable/resource_base.rb +13 -0
  48. data/lib/avm/files/appendable/tar_output_command.rb +26 -0
  49. data/lib/avm/files/appendable/templatized_directory.rb +28 -0
  50. data/lib/avm/files/appender.rb +11 -0
  51. data/lib/avm/files/deploy.rb +72 -0
  52. data/lib/avm/git/commit/deploy.rb +8 -61
  53. data/lib/avm/instances/application.rb +4 -0
  54. data/lib/avm/instances/base.rb +2 -1
  55. data/lib/avm/instances/base/auto_values.rb +2 -1
  56. data/lib/avm/instances/base/auto_values/access.rb +5 -4
  57. data/lib/avm/instances/base/auto_values/admin.rb +2 -2
  58. data/lib/avm/instances/base/auto_values/database.rb +1 -1
  59. data/lib/avm/instances/base/auto_values/filesystem.rb +6 -2
  60. data/lib/avm/instances/base/auto_values/mailer.rb +34 -0
  61. data/lib/avm/instances/base/auto_values/ruby.rb +1 -1
  62. data/lib/avm/instances/base/auto_values/system.rb +2 -2
  63. data/lib/avm/instances/entry.rb +7 -1
  64. data/lib/avm/instances/entry_keys.rb +42 -7
  65. data/lib/avm/instances/runner.rb +40 -0
  66. data/lib/avm/{stereotypes/postgresql.rb → postgresql.rb} +1 -3
  67. data/lib/avm/postgresql/instance.rb +63 -0
  68. data/lib/avm/postgresql/instance/data_unit.rb +39 -0
  69. data/lib/avm/postgresql/instance_with.rb +18 -0
  70. data/lib/avm/projects/stereotypes/git_subtree/publish.rb +2 -0
  71. data/lib/avm/projects/stereotypes/git_subtree/warp.rb +3 -0
  72. data/lib/avm/tools/runner.rb +3 -3
  73. data/lib/avm/tools/runner/eac_rails_base0.rb +5 -18
  74. data/lib/avm/tools/runner/eac_rails_base0/apache_path.rb +1 -1
  75. data/lib/avm/tools/runner/eac_rails_base0/bundle.rb +3 -3
  76. data/lib/avm/tools/runner/eac_rails_base0/rails_server.rb +7 -12
  77. data/lib/avm/tools/runner/eac_rails_base0/runner.rb +3 -3
  78. data/lib/avm/tools/runner/eac_redmine_base0.rb +5 -23
  79. data/lib/avm/tools/runner/eac_redmine_base0/core_update.rb +1 -1
  80. data/lib/avm/tools/runner/eac_redmine_base0/docker.rb +1 -1
  81. data/lib/avm/tools/runner/eac_redmine_base0/project_rename.rb +3 -3
  82. data/lib/avm/tools/runner/eac_wordpress_base0.rb +5 -24
  83. data/lib/avm/tools/runner/{eac_rails_base0/data.rb → eac_writings_base0.rb} +4 -4
  84. data/lib/avm/tools/runner/git/deploy.rb +1 -1
  85. data/lib/avm/tools/runner/instance.rb +28 -0
  86. data/lib/avm/tools/runner/instance/info.rb +44 -0
  87. data/lib/avm/tools/runner/local_project/eac_writings_base0.rb +35 -0
  88. data/lib/avm/tools/runner/local_project/eac_writings_base0/build_chapters.rb +48 -0
  89. data/lib/avm/tools/runner/local_project/eac_writings_base0/build_single.rb +37 -0
  90. data/lib/avm/tools/runner/local_project/eac_writings_base0/info.rb +36 -0
  91. data/lib/avm/tools/version.rb +1 -1
  92. data/template/avm/eac_rails_base0/deploy/config/envvars.d/email.yml.template +11 -0
  93. data/template/avm/{stereotypes/eac_ubuntu_base0 → eac_ubuntu_base0}/docker_image/Dockerfile +0 -0
  94. data/template/avm/{stereotypes/eac_wordpress_base0 → eac_wordpress_base0}/deploy/wp-config.php.template +0 -0
  95. data/template/avm/eac_writings_base0/commons/all.tex +5 -0
  96. data/template/avm/eac_writings_base0/commons/ebook.tex +11 -0
  97. data/template/avm/eac_writings_base0/commons/images.tex +11 -0
  98. data/template/avm/eac_writings_base0/commons/links.tex +2 -0
  99. data/template/avm/eac_writings_base0/commons/portuguese.tex +8 -0
  100. data/template/avm/eac_writings_base0/commons/source_code.tex +21 -0
  101. data/template/avm/eac_writings_base0/commons/source_code/java.tex +15 -0
  102. data/template/avm/eac_writings_base0/commons/utils.tex +6 -0
  103. data/template/avm/eac_writings_base0/deploy/index.html.template +9 -0
  104. data/vendor/eac_ruby_base0/lib/eac_ruby_base0/runner.rb +12 -0
  105. data/vendor/eac_ruby_base0/lib/eac_ruby_base0/version.rb +1 -1
  106. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/blank_not_blank.rb +19 -0
  107. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/configs/base.rb +43 -0
  108. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/configs/file.rb +12 -31
  109. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/configs.rb +4 -1
  110. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/fs/clearable_directory.rb +57 -0
  111. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/paths_hash.rb +21 -58
  112. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/paths_hash/entry_key_error.rb +8 -0
  113. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/paths_hash/node.rb +67 -0
  114. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/paths_hash/path_search.rb +39 -0
  115. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/struct.rb +4 -0
  116. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
  117. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/blank_not_blank_spec.rb +16 -0
  118. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/configs_spec.rb +15 -0
  119. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/paths_hash_spec.rb +52 -13
  120. metadata +72 -35
  121. data/lib/avm/git/commit/deploy/appended.rb +0 -37
  122. data/lib/avm/git/commit/deploy/appended/base.rb +0 -17
  123. data/lib/avm/git/commit/deploy/appended/directory.rb +0 -32
  124. data/lib/avm/git/commit/deploy/appended/file_content.rb +0 -28
  125. data/lib/avm/rails/runners/bundle.rb +0 -35
  126. data/lib/avm/rails/runners/runner.rb +0 -48
  127. data/lib/avm/stereotypes/eac_redmine_base0.rb +0 -11
  128. data/lib/avm/stereotypes/eac_wordpress_base0/apache_host.rb +0 -27
  129. data/lib/avm/stereotypes/eac_wordpress_base0/deploy.rb +0 -12
  130. data/lib/avm/stereotypes/eac_wordpress_base0/instance.rb +0 -26
  131. data/lib/avm/stereotypes/postgresql/instance.rb +0 -65
  132. data/lib/avm/stereotypes/postgresql/instance/data_unit.rb +0 -41
  133. data/lib/avm/stereotypes/postgresql/instance_with.rb +0 -20
  134. data/lib/avm/tools/runner/eac_rails_base0/apache_host.rb +0 -16
  135. data/lib/avm/tools/runner/eac_rails_base0/deploy.rb +0 -15
  136. data/lib/avm/tools/runner/eac_redmine_base0/bundle.rb +0 -14
  137. data/lib/avm/tools/runner/eac_redmine_base0/data.rb +0 -27
  138. data/lib/avm/tools/runner/eac_redmine_base0/data/dump.rb +0 -16
  139. data/lib/avm/tools/runner/eac_redmine_base0/deploy.rb +0 -15
  140. data/lib/avm/tools/runner/eac_redmine_base0/runner.rb +0 -14
  141. data/lib/avm/tools/runner/eac_wordpress_base0/apache_host.rb +0 -17
  142. data/lib/avm/tools/runner/eac_wordpress_base0/data.rb +0 -15
  143. data/lib/avm/tools/runner/eac_wordpress_base0/deploy.rb +0 -15
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'fileutils'
4
+ require 'pathname'
5
+
6
+ module EacRubyUtils
7
+ module Fs
8
+ class ClearableDirectory < ::Pathname
9
+ CLEARABLE_BASENAME = '.clearable_directory'
10
+
11
+ def clear
12
+ validate_clearable
13
+ directory? ? clear_directory : clear_no_directory
14
+ mkpath
15
+ ::FileUtils.touch(clearable_note_file.to_path)
16
+ self
17
+ end
18
+
19
+ def clearable?
20
+ clearable_negate_message ? true : false
21
+ end
22
+
23
+ def clearable_negate_message
24
+ return if !exist? || empty?
25
+ return "Path \"#{self}\" exists, is not empty and is not a directory" unless directory?
26
+ return if clearable_note_file.exist?
27
+
28
+ "Directory \"#{self}\" is not empty and does not have a #{CLEARABLE_BASENAME} file"
29
+ end
30
+
31
+ def clearable_note_file
32
+ join(CLEARABLE_BASENAME)
33
+ end
34
+
35
+ def validate_clearable
36
+ message = clearable_negate_message
37
+ raise message if message
38
+ end
39
+
40
+ private
41
+
42
+ def clear_directory
43
+ children.each do |child|
44
+ if child.directory?
45
+ child.rmtree
46
+ elsif child.file?
47
+ child.unlink
48
+ end
49
+ end
50
+ end
51
+
52
+ def clear_no_directory
53
+ ::FileUtils.rm_rf(to_path)
54
+ end
55
+ end
56
+ end
57
+ end
@@ -1,21 +1,25 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'active_support/core_ext/object'
4
- require 'eac_ruby_utils/patches/object/asserts'
3
+ require 'eac_ruby_utils/core_ext'
5
4
 
6
5
  module EacRubyUtils
7
6
  class PathsHash
7
+ require_sub __FILE__
8
+
8
9
  class << self
9
10
  def parse_entry_key(entry_key)
10
11
  r = entry_key.to_s.strip
11
- raise EntryKeyError, 'Entry key cannot start or end with dot' if
12
+ raise ::EacRubyUtils::PathsHash::EntryKeyError, 'Entry key cannot start or end with dot' if
12
13
  r.start_with?('.') || r.end_with?('.')
13
14
 
14
15
  r = r.split('.').map(&:strip)
15
- raise EntryKeyError, "Entry key \"#{entry_key}\" is empty" if r.empty?
16
+ if r.empty?
17
+ raise ::EacRubyUtils::PathsHash::EntryKeyError, "Entry key \"#{entry_key}\" is empty"
18
+ end
16
19
  return r.map(&:to_sym) unless r.any?(&:blank?)
17
20
 
18
- raise EntryKeyError, "Entry key \"#{entry_key}\" has at least one blank part"
21
+ raise ::EacRubyUtils::PathsHash::EntryKeyError,
22
+ "Entry key \"#{entry_key}\" has at least one blank part"
19
23
  end
20
24
  end
21
25
 
@@ -26,68 +30,27 @@ module EacRubyUtils
26
30
  end
27
31
 
28
32
  def [](entry_key)
29
- root.read_entry(self.class.parse_entry_key(entry_key), [])
33
+ root.read_entry(::EacRubyUtils::PathsHash::PathSearch.parse_entry_key(entry_key))
30
34
  end
31
35
 
32
36
  def []=(entry_key, entry_value)
33
- root.write_entry(self.class.parse_entry_key(entry_key), entry_value, [])
37
+ root.write_entry(
38
+ ::EacRubyUtils::PathsHash::PathSearch.parse_entry_key(entry_key), entry_value
39
+ )
34
40
  end
35
41
 
36
- delegate :to_h, to: :root
37
-
38
- private
39
-
40
- attr_reader :data
41
-
42
- class EntryKeyError < StandardError
42
+ def fetch(entry_key)
43
+ root.fetch(::EacRubyUtils::PathsHash::PathSearch.parse_entry_key(entry_key))
43
44
  end
44
45
 
45
- class Node
46
- def initialize(source_hash)
47
- source_hash.assert_argument(Hash, 'source_hash')
48
- @data = source_hash.map { |k, v| [k.to_sym, v.is_a?(Hash) ? Node.new(v) : v] }.to_h
49
- end
50
-
51
- def to_h
52
- data.map { |k, v| [k, v.is_a?(Node) ? v.to_h : v] }.to_h
53
- end
54
-
55
- def read_entry(path, current)
56
- validate_path(path, current)
57
- node_key = path.shift
58
- node = data[node_key]
59
- return (node.is_a?(Node) ? node.to_h : node) if path.empty?
60
- return nil if node.blank?
61
- return node.read_entry(path, current + [node_key]) if node.is_a?(Node)
62
-
63
- raise(EntryKeyError,
64
- "Path #{current.join(',')} is not a Node and path continues (#{current + path})")
65
- end
66
-
67
- def write_entry(path, value, current)
68
- validate_path(path, current)
69
- node_key = path.shift
70
- write_entry_value(path, node_key, value, current)
71
- end
72
-
73
- private
46
+ def key?(entry_key)
47
+ root.entry?(::EacRubyUtils::PathsHash::PathSearch.parse_entry_key(entry_key))
48
+ end
74
49
 
75
- def write_entry_value(path, node_key, value, current)
76
- if path.empty?
77
- data[node_key] = value.is_a?(Hash) ? Node.new(value) : value
78
- else
79
- data[node_key] = Node.new({}) unless data[node_key].is_a?(Node)
80
- data[node_key].write_entry(path, value, current + [node_key])
81
- end
82
- end
50
+ delegate :to_h, to: :root
83
51
 
84
- def validate_path(path, current)
85
- path.assert_argument(Array, 'path')
86
- current.assert_argument(Array, 'current')
87
- raise EntryKeyError, 'Path is empty' if path.empty?
88
- end
52
+ private
89
53
 
90
- attr_reader :data
91
- end
54
+ attr_reader :data
92
55
  end
93
56
  end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacRubyUtils
4
+ class PathsHash
5
+ class EntryKeyError < StandardError
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'eac_ruby_utils/paths_hash/entry_key_error'
5
+
6
+ module EacRubyUtils
7
+ class PathsHash
8
+ class Node
9
+ PATH_SEARCH_UNENDED_ERROR_MESSAGE = 'Path search is not a Node and is not ended'
10
+
11
+ def initialize(source_hash)
12
+ source_hash.assert_argument(Hash, 'source_hash')
13
+ @data = source_hash.map { |k, v| [k.to_sym, v.is_a?(Hash) ? Node.new(v) : v] }.to_h
14
+ end
15
+
16
+ def entry?(path_search)
17
+ return false unless data.key?(path_search.cursor)
18
+ return true if path_search.ended?
19
+ return data.fetch(path_search.cursor).entry?(path_search.succeeding) if
20
+ data.fetch(path_search.cursor).is_a?(Node)
21
+
22
+ false # Paths continue and there is not available nodes
23
+ end
24
+
25
+ def fetch(path_search)
26
+ if data.key?(path_search.cursor)
27
+ node = data.fetch(path_search.cursor)
28
+ return (node.is_a?(Node) ? node.to_h : node) if path_search.ended?
29
+ return nil if node.blank?
30
+ return node.fetch(path_search.succeeding) if node.is_a?(Node)
31
+ end
32
+
33
+ path_search.raise_error(PATH_SEARCH_UNENDED_ERROR_MESSAGE)
34
+ end
35
+
36
+ def to_h
37
+ data.map { |k, v| [k, v.is_a?(Node) ? v.to_h : v] }.to_h
38
+ end
39
+
40
+ def read_entry(path_search)
41
+ node = data[path_search.cursor]
42
+ return (node.is_a?(Node) ? node.to_h : node) if path_search.ended?
43
+ return nil if node.blank?
44
+ return node.read_entry(path_search.succeeding) if node.is_a?(Node)
45
+
46
+ path_search.raise_error(PATH_SEARCH_UNENDED_ERROR_MESSAGE)
47
+ end
48
+
49
+ def write_entry(path_search, value)
50
+ if path_search.ended?
51
+ data[path_search.cursor] = value.is_a?(Hash) ? self.class.new(value) : value
52
+ else
53
+ assert_data_node(path_search.cursor).write_entry(path_search.succeeding, value)
54
+ end
55
+ end
56
+
57
+ private
58
+
59
+ attr_reader :data
60
+
61
+ def assert_data_node(key)
62
+ data[key] = self.class.new({}) unless data[key].is_a?(Node)
63
+ data[key]
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacRubyUtils
4
+ class PathsHash
5
+ class PathSearch
6
+ class << self
7
+ def parse_entry_key(string)
8
+ new(::EacRubyUtils::PathsHash.parse_entry_key(string), [])
9
+ end
10
+ end
11
+
12
+ common_constructor :current, :previous do
13
+ self.current = current.assert_argument(Array, 'current').freeze
14
+ self.previous = previous.assert_argument(Array, 'previous')
15
+ raise ::EacRubyUtils::PathsHash::EntryKeyError, 'Current is empty' if current.empty?
16
+ end
17
+
18
+ def cursor
19
+ current.first
20
+ end
21
+
22
+ def ended?
23
+ current.count <= 1
24
+ end
25
+
26
+ def raise_error(message)
27
+ raise ::EacRubyUtils::PathsHash::EntryKeyError, "#{message} (#{self})"
28
+ end
29
+
30
+ def succeeding
31
+ self.class.new(current[1..-1], previous + [cursor])
32
+ end
33
+
34
+ def to_s
35
+ "#{self.class}[Current: #{current}, Previous: #{previous}]"
36
+ end
37
+ end
38
+ end
39
+ end
@@ -27,6 +27,10 @@ module EacRubyUtils
27
27
  property_method?(method_name) || super
28
28
  end
29
29
 
30
+ def slice_fetch(*keys)
31
+ self.class.new(keys.map { |key| [key, fetch(key)] }.to_h)
32
+ end
33
+
30
34
  def to_h
31
35
  data.dup
32
36
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacRubyUtils
4
- VERSION = '0.47.0'
4
+ VERSION = '0.49.0'
5
5
  end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/blank_not_blank'
4
+
5
+ RSpec.describe ::EacRubyUtils::BlankNotBlank do
6
+ let(:instance) { described_class.instance }
7
+
8
+ it do
9
+ expect { described_class.new }.to raise_error(::NoMethodError)
10
+ end
11
+
12
+ it { expect(instance).to be_present }
13
+ it { expect(instance).not_to be_blank }
14
+ it { expect(instance).to be_truthy }
15
+ it { expect(instance).to eq('') }
16
+ end
@@ -28,4 +28,19 @@ RSpec.describe ::EacRubyUtils::Configs do
28
28
 
29
29
  it { expect(::YAML.load_file(storage_path)).to eq(parent: { child: 'value1' }) }
30
30
  end
31
+
32
+ describe '#read' do
33
+ let(:present_key) { 'a.present.key' }
34
+ let(:blank_key) { 'a.blank.key' }
35
+
36
+ before do
37
+ instance[present_key] = 'A value'
38
+ instance[blank_key] = ''
39
+ instance.save
40
+ instance.load
41
+ end
42
+
43
+ it { expect(instance[present_key]).to be_present }
44
+ it { expect(instance[blank_key]).to be_present }
45
+ end
31
46
  end
@@ -3,20 +3,20 @@
3
3
  require 'eac_ruby_utils/paths_hash'
4
4
 
5
5
  RSpec.describe ::EacRubyUtils::PathsHash do
6
- describe '#[]' do
7
- let(:source_hash) do
8
- {
9
- parent: {
10
- child1: {
11
- child1_1: 'v1_1',
12
- child1_2: 'v1_2'
13
- },
14
- child2: 'v2'
15
- }
6
+ let(:source_hash) do
7
+ {
8
+ parent: {
9
+ child1: {
10
+ child1_1: 'v1_1',
11
+ child1_2: 'v1_2'
12
+ },
13
+ child2: 'v2'
16
14
  }
17
- end
18
- let(:instance) { described_class.new(source_hash) }
15
+ }
16
+ end
17
+ let(:instance) { described_class.new(source_hash) }
19
18
 
19
+ describe '#[]' do
20
20
  {
21
21
  'parent.child1.child1_1' => 'v1_1',
22
22
  'parent.child1.child1_2' => 'v1_2',
@@ -38,7 +38,7 @@ RSpec.describe ::EacRubyUtils::PathsHash do
38
38
  end
39
39
 
40
40
  describe '#[]=' do
41
- let(:instance) { described_class.new }
41
+ let(:source_hash) { {} }
42
42
 
43
43
  before do
44
44
  instance['a.b.c'] = '123'
@@ -46,4 +46,43 @@ RSpec.describe ::EacRubyUtils::PathsHash do
46
46
 
47
47
  it { expect(instance.to_h).to eq(a: { b: { c: '123' } }) }
48
48
  end
49
+
50
+ describe '#fetch' do
51
+ {
52
+ 'parent.child1.child1_1' => 'v1_1',
53
+ 'parent.child1.child1_2' => 'v1_2',
54
+ 'parent.child1.child1_2.no_exist' => ::EacRubyUtils::PathsHash::EntryKeyError,
55
+ 'parent.child1.child1_3' => ::EacRubyUtils::PathsHash::EntryKeyError,
56
+ 'parent.child2' => 'v2',
57
+ 'no_exist' => ::EacRubyUtils::PathsHash::EntryKeyError,
58
+ 'parent.child1' => {
59
+ child1_1: 'v1_1',
60
+ child1_2: 'v1_2'
61
+ }
62
+ }.each do |entry_key, expected_value|
63
+ if expected_value.is_a?(::Class) && expected_value < ::Exception
64
+ it "raise error #{expected_value}" do
65
+ expect { instance.fetch(entry_key) }.to raise_error(expected_value)
66
+ end
67
+ else
68
+ it "\#fetch return \"#{expected_value}\"" do
69
+ expect(instance.fetch(entry_key)).to eq(expected_value)
70
+ end
71
+ end
72
+ end
73
+ end
74
+
75
+ describe '#key?' do
76
+ {
77
+ 'parent.child1.child1_1' => true,
78
+ 'parent.child1.child1_2' => true,
79
+ 'parent.child1.child1_2.no_exist' => false,
80
+ 'parent.child1.child1_3' => false,
81
+ 'parent.child2' => true,
82
+ 'no_exist' => false,
83
+ 'parent.child1' => true
84
+ }.each do |entry_key, expected_value|
85
+ it { expect(instance.key?(entry_key)).to eq(expected_value) }
86
+ end
87
+ end
49
88
  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.71.0
4
+ version: 0.75.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: 2020-10-14 00:00:00.000000000 Z
11
+ date: 2020-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aranha-parsers
@@ -290,31 +290,69 @@ files:
290
290
  - lib/avm/docker/image.rb
291
291
  - lib/avm/docker/registry.rb
292
292
  - lib/avm/docker/runner.rb
293
+ - lib/avm/eac_rails_base0.rb
293
294
  - lib/avm/eac_rails_base0/apache_host.rb
294
295
  - lib/avm/eac_rails_base0/apache_path.rb
295
296
  - lib/avm/eac_rails_base0/deploy.rb
296
297
  - lib/avm/eac_rails_base0/instance.rb
298
+ - lib/avm/eac_rails_base1.rb
299
+ - lib/avm/eac_rails_base1/instance.rb
300
+ - lib/avm/eac_rails_base1/runner.rb
301
+ - lib/avm/eac_rails_base1/runner/bundle.rb
302
+ - lib/avm/eac_rails_base1/runner/code_runner.rb
303
+ - lib/avm/eac_rails_base1/runner_with/bundle.rb
304
+ - lib/avm/eac_redmine_base0.rb
297
305
  - lib/avm/eac_redmine_base0/core_update.rb
298
306
  - lib/avm/eac_redmine_base0/data_unit.rb
299
307
  - lib/avm/eac_redmine_base0/deploy.rb
300
308
  - lib/avm/eac_redmine_base0/instance.rb
309
+ - lib/avm/eac_ubuntu_base0.rb
301
310
  - lib/avm/eac_ubuntu_base0/apache.rb
302
311
  - lib/avm/eac_ubuntu_base0/apache/resource.rb
303
312
  - lib/avm/eac_ubuntu_base0/docker_image.rb
313
+ - lib/avm/eac_webapp_base0.rb
304
314
  - lib/avm/eac_webapp_base0/apache_host.rb
305
315
  - lib/avm/eac_webapp_base0/deploy.rb
306
316
  - lib/avm/eac_webapp_base0/deploy/appended_directories.rb
317
+ - lib/avm/eac_webapp_base0/deploy/build.rb
307
318
  - lib/avm/eac_webapp_base0/deploy/file_unit.rb
308
319
  - lib/avm/eac_webapp_base0/deploy/git_info.rb
309
320
  - lib/avm/eac_webapp_base0/deploy/version.rb
321
+ - lib/avm/eac_webapp_base0/deploy/write_on_target.rb
310
322
  - lib/avm/eac_webapp_base0/instance.rb
323
+ - lib/avm/eac_webapp_base0/runner.rb
311
324
  - lib/avm/eac_webapp_base0/runner/apache_host.rb
312
325
  - lib/avm/eac_webapp_base0/runner/data.rb
313
326
  - lib/avm/eac_webapp_base0/runner/data/dump.rb
314
327
  - lib/avm/eac_webapp_base0/runner/data/load.rb
315
328
  - lib/avm/eac_webapp_base0/runner/deploy.rb
329
+ - lib/avm/eac_wordpress_base0.rb
330
+ - lib/avm/eac_wordpress_base0/apache_host.rb
331
+ - lib/avm/eac_wordpress_base0/deploy.rb
332
+ - lib/avm/eac_wordpress_base0/instance.rb
333
+ - lib/avm/eac_writings_base0.rb
334
+ - lib/avm/eac_writings_base0/apache_host.rb
335
+ - lib/avm/eac_writings_base0/commons.rb
336
+ - lib/avm/eac_writings_base0/deploy.rb
337
+ - lib/avm/eac_writings_base0/file_build.rb
338
+ - lib/avm/eac_writings_base0/file_build/base_stereotype.rb
339
+ - lib/avm/eac_writings_base0/file_build/chapter_index.rb
340
+ - lib/avm/eac_writings_base0/file_build/tex_source.rb
341
+ - lib/avm/eac_writings_base0/instance.rb
342
+ - lib/avm/eac_writings_base0/project.rb
343
+ - lib/avm/eac_writings_base0/project_build.rb
344
+ - lib/avm/eac_writings_base0/project_build/chapters_content.rb
345
+ - lib/avm/eac_writings_base0/project_build/copy_files.rb
316
346
  - lib/avm/executables.rb
317
347
  - lib/avm/files.rb
348
+ - lib/avm/files/appendable.rb
349
+ - lib/avm/files/appendable/file_content.rb
350
+ - lib/avm/files/appendable/plain_directory.rb
351
+ - lib/avm/files/appendable/resource_base.rb
352
+ - lib/avm/files/appendable/tar_output_command.rb
353
+ - lib/avm/files/appendable/templatized_directory.rb
354
+ - lib/avm/files/appender.rb
355
+ - lib/avm/files/deploy.rb
318
356
  - lib/avm/files/formatter.rb
319
357
  - lib/avm/files/formatter/formats.rb
320
358
  - lib/avm/files/formatter/formats/base.rb
@@ -334,10 +372,6 @@ files:
334
372
  - lib/avm/git/commit.rb
335
373
  - lib/avm/git/commit/class_methods.rb
336
374
  - lib/avm/git/commit/deploy.rb
337
- - lib/avm/git/commit/deploy/appended.rb
338
- - lib/avm/git/commit/deploy/appended/base.rb
339
- - lib/avm/git/commit/deploy/appended/directory.rb
340
- - lib/avm/git/commit/deploy/appended/file_content.rb
341
375
  - lib/avm/git/commit/deploy_methods.rb
342
376
  - lib/avm/git/commit/diff_tree_line.rb
343
377
  - lib/avm/git/commit/file.rb
@@ -374,6 +408,7 @@ files:
374
408
  - lib/avm/instances/base/auto_values/data.rb
375
409
  - lib/avm/instances/base/auto_values/database.rb
376
410
  - lib/avm/instances/base/auto_values/filesystem.rb
411
+ - lib/avm/instances/base/auto_values/mailer.rb
377
412
  - lib/avm/instances/base/auto_values/ruby.rb
378
413
  - lib/avm/instances/base/auto_values/source.rb
379
414
  - lib/avm/instances/base/auto_values/system.rb
@@ -386,6 +421,7 @@ files:
386
421
  - lib/avm/instances/entries.rb
387
422
  - lib/avm/instances/entry.rb
388
423
  - lib/avm/instances/entry_keys.rb
424
+ - lib/avm/instances/runner.rb
389
425
  - lib/avm/launcher/context/instance_manager.rb
390
426
  - lib/avm/launcher/context/instance_manager/cached_instance.rb
391
427
  - lib/avm/launcher/context/instance_manager/cached_instances.rb
@@ -402,6 +438,10 @@ files:
402
438
  - lib/avm/patches/object/i18n.rb
403
439
  - lib/avm/patches/object/template.rb
404
440
  - lib/avm/path_string.rb
441
+ - lib/avm/postgresql.rb
442
+ - lib/avm/postgresql/instance.rb
443
+ - lib/avm/postgresql/instance/data_unit.rb
444
+ - lib/avm/postgresql/instance_with.rb
405
445
  - lib/avm/projects.rb
406
446
  - lib/avm/projects/stereotype.rb
407
447
  - lib/avm/projects/stereotypes.rb
@@ -425,10 +465,6 @@ files:
425
465
  - lib/avm/projects/stereotypes/ruby_gem/update.rb
426
466
  - lib/avm/projects/stereotypes/ruby_gem/version_bump.rb
427
467
  - lib/avm/rails.rb
428
- - lib/avm/rails/instance.rb
429
- - lib/avm/rails/runners.rb
430
- - lib/avm/rails/runners/bundle.rb
431
- - lib/avm/rails/runners/runner.rb
432
468
  - lib/avm/result.rb
433
469
  - lib/avm/ruby.rb
434
470
  - lib/avm/ruby/gems.rb
@@ -443,42 +479,20 @@ files:
443
479
  - lib/avm/self/instance/entry_keys.rb
444
480
  - lib/avm/self/root.rb
445
481
  - lib/avm/stereotypes.rb
446
- - lib/avm/stereotypes/eac_rails_base0.rb
447
- - lib/avm/stereotypes/eac_redmine_base0.rb
448
- - lib/avm/stereotypes/eac_ubuntu_base0.rb
449
- - lib/avm/stereotypes/eac_webapp_base0.rb
450
- - lib/avm/stereotypes/eac_wordpress_base0/apache_host.rb
451
- - lib/avm/stereotypes/eac_wordpress_base0/deploy.rb
452
- - lib/avm/stereotypes/eac_wordpress_base0/instance.rb
453
- - lib/avm/stereotypes/postgresql.rb
454
- - lib/avm/stereotypes/postgresql/instance.rb
455
- - lib/avm/stereotypes/postgresql/instance/data_unit.rb
456
- - lib/avm/stereotypes/postgresql/instance_with.rb
457
- - lib/avm/stereotypes/rails.rb
458
482
  - lib/avm/sync.rb
459
483
  - lib/avm/tools.rb
460
484
  - lib/avm/tools/runner.rb
461
485
  - lib/avm/tools/runner/eac_rails_base0.rb
462
- - lib/avm/tools/runner/eac_rails_base0/apache_host.rb
463
486
  - lib/avm/tools/runner/eac_rails_base0/apache_path.rb
464
487
  - lib/avm/tools/runner/eac_rails_base0/bundle.rb
465
- - lib/avm/tools/runner/eac_rails_base0/data.rb
466
- - lib/avm/tools/runner/eac_rails_base0/deploy.rb
467
488
  - lib/avm/tools/runner/eac_rails_base0/rails_server.rb
468
489
  - lib/avm/tools/runner/eac_rails_base0/runner.rb
469
490
  - lib/avm/tools/runner/eac_redmine_base0.rb
470
- - lib/avm/tools/runner/eac_redmine_base0/bundle.rb
471
491
  - lib/avm/tools/runner/eac_redmine_base0/core_update.rb
472
- - lib/avm/tools/runner/eac_redmine_base0/data.rb
473
- - lib/avm/tools/runner/eac_redmine_base0/data/dump.rb
474
- - lib/avm/tools/runner/eac_redmine_base0/deploy.rb
475
492
  - lib/avm/tools/runner/eac_redmine_base0/docker.rb
476
493
  - lib/avm/tools/runner/eac_redmine_base0/project_rename.rb
477
- - lib/avm/tools/runner/eac_redmine_base0/runner.rb
478
494
  - lib/avm/tools/runner/eac_wordpress_base0.rb
479
- - lib/avm/tools/runner/eac_wordpress_base0/apache_host.rb
480
- - lib/avm/tools/runner/eac_wordpress_base0/data.rb
481
- - lib/avm/tools/runner/eac_wordpress_base0/deploy.rb
495
+ - lib/avm/tools/runner/eac_writings_base0.rb
482
496
  - lib/avm/tools/runner/files.rb
483
497
  - lib/avm/tools/runner/files/format.rb
484
498
  - lib/avm/tools/runner/files/rotate.rb
@@ -493,11 +507,17 @@ files:
493
507
  - lib/avm/tools/runner/git/revisions_test.rb
494
508
  - lib/avm/tools/runner/git/subrepo.rb
495
509
  - lib/avm/tools/runner/git/subrepo/check.rb
510
+ - lib/avm/tools/runner/instance.rb
511
+ - lib/avm/tools/runner/instance/info.rb
496
512
  - lib/avm/tools/runner/launcher.rb
497
513
  - lib/avm/tools/runner/launcher/instances.rb
498
514
  - lib/avm/tools/runner/launcher/projects.rb
499
515
  - lib/avm/tools/runner/launcher/publish.rb
500
516
  - lib/avm/tools/runner/local_project.rb
517
+ - lib/avm/tools/runner/local_project/eac_writings_base0.rb
518
+ - lib/avm/tools/runner/local_project/eac_writings_base0/build_chapters.rb
519
+ - lib/avm/tools/runner/local_project/eac_writings_base0/build_single.rb
520
+ - lib/avm/tools/runner/local_project/eac_writings_base0/info.rb
501
521
  - lib/avm/tools/runner/local_project/info.rb
502
522
  - lib/avm/tools/runner/local_project/ruby.rb
503
523
  - lib/avm/tools/runner/local_project/ruby/bundler.rb
@@ -549,9 +569,21 @@ files:
549
569
  - lib/eac_launcher/version.rb
550
570
  - template/avm/eac_rails_base0/apache_path/default.conf
551
571
  - template/avm/eac_rails_base0/deploy/config/database.yml.template
572
+ - template/avm/eac_rails_base0/deploy/config/envvars.d/email.yml.template
552
573
  - template/avm/eac_redmine_base0/deploy/config/install.sh.template
553
574
  - template/avm/eac_redmine_base0/deploy/config/secrets.yml
575
+ - template/avm/eac_ubuntu_base0/docker_image/Dockerfile
554
576
  - template/avm/eac_webapp_base0/apache_host/no_ssl.conf
577
+ - template/avm/eac_wordpress_base0/deploy/wp-config.php.template
578
+ - template/avm/eac_writings_base0/commons/all.tex
579
+ - template/avm/eac_writings_base0/commons/ebook.tex
580
+ - template/avm/eac_writings_base0/commons/images.tex
581
+ - template/avm/eac_writings_base0/commons/links.tex
582
+ - template/avm/eac_writings_base0/commons/portuguese.tex
583
+ - template/avm/eac_writings_base0/commons/source_code.tex
584
+ - template/avm/eac_writings_base0/commons/source_code/java.tex
585
+ - template/avm/eac_writings_base0/commons/utils.tex
586
+ - template/avm/eac_writings_base0/deploy/index.html.template
555
587
  - template/avm/ruby/gems/generator/gemspec.template
556
588
  - template/avm/ruby/gems/generator/root_lib.template
557
589
  - template/avm/ruby/gems/generator/static/Gemfile
@@ -560,8 +592,6 @@ files:
560
592
  - template/avm/ruby/gems/generator/version.template
561
593
  - template/avm/self/docker_image/Dockerfile
562
594
  - template/avm/self/docker_image/entrypoint.sh
563
- - template/avm/stereotypes/eac_ubuntu_base0/docker_image/Dockerfile
564
- - template/avm/stereotypes/eac_wordpress_base0/deploy/wp-config.php.template
565
595
  - vendor/eac_cli/Gemfile
566
596
  - vendor/eac_cli/eac_cli.gemspec
567
597
  - vendor/eac_cli/lib/eac_cli.rb
@@ -855,11 +885,13 @@ files:
855
885
  - vendor/eac_ruby_utils/eac_ruby_utils.gemspec
856
886
  - vendor/eac_ruby_utils/lib/eac_ruby_utils.rb
857
887
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/arguments_consumer.rb
888
+ - vendor/eac_ruby_utils/lib/eac_ruby_utils/blank_not_blank.rb
858
889
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/boolean.rb
859
890
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/by_reference.rb
860
891
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/common_concern.rb
861
892
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/common_constructor.rb
862
893
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/configs.rb
894
+ - vendor/eac_ruby_utils/lib/eac_ruby_utils/configs/base.rb
863
895
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/configs/file.rb
864
896
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/console.rb
865
897
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/console/configs.rb
@@ -892,6 +924,7 @@ files:
892
924
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/ssh_env/terminal.rb
893
925
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/filesystem_cache.rb
894
926
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/fs.rb
927
+ - vendor/eac_ruby_utils/lib/eac_ruby_utils/fs/clearable_directory.rb
895
928
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/fs/extname.rb
896
929
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/fs/temp.rb
897
930
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/fs/temp/directory.rb
@@ -952,6 +985,9 @@ files:
952
985
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/time/default_time_zone_set.rb
953
986
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/time/local_time_zone.rb
954
987
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/paths_hash.rb
988
+ - vendor/eac_ruby_utils/lib/eac_ruby_utils/paths_hash/entry_key_error.rb
989
+ - vendor/eac_ruby_utils/lib/eac_ruby_utils/paths_hash/node.rb
990
+ - vendor/eac_ruby_utils/lib/eac_ruby_utils/paths_hash/path_search.rb
955
991
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/require_sub.rb
956
992
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec.rb
957
993
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/conditional.rb
@@ -975,6 +1011,7 @@ files:
975
1011
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/version.rb
976
1012
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/yaml.rb
977
1013
  - vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/arguments_consumer_spec.rb
1014
+ - vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/blank_not_blank_spec.rb
978
1015
  - vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/common_concern_spec.rb
979
1016
  - vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/common_constructor_spec.rb
980
1017
  - vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/configs_spec.rb