avm-tools 0.98.0 → 0.99.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. checksums.yaml +4 -4
  2. data/lib/avm/configs.rb +2 -2
  3. data/lib/avm/data/package/dump.rb +2 -2
  4. data/lib/avm/data/package/load.rb +1 -1
  5. data/lib/avm/data/unit.rb +1 -1
  6. data/lib/avm/docker/container.rb +2 -2
  7. data/lib/avm/docker/runner.rb +1 -1
  8. data/lib/avm/eac_redmine_base0/core_update.rb +1 -1
  9. data/lib/avm/eac_webapp_base0/runner/data/load.rb +1 -1
  10. data/lib/avm/eac_writings_base0/project_build.rb +1 -1
  11. data/lib/avm/files/appendable/templatized_directory.rb +1 -1
  12. data/lib/avm/files/formatter.rb +1 -1
  13. data/lib/avm/git/auto_commit/rules/manual.rb +1 -1
  14. data/lib/avm/git/file_auto_fixup.rb +1 -1
  15. data/lib/avm/git/issue/complete.rb +2 -2
  16. data/lib/avm/git/issue/deliver.rb +56 -0
  17. data/lib/avm/git/revision_test.rb +1 -1
  18. data/lib/avm/git/subrepo_check.rb +1 -1
  19. data/lib/avm/git/subrepo_checks.rb +1 -1
  20. data/lib/avm/instances/entries.rb +1 -1
  21. data/lib/avm/instances/entry.rb +1 -1
  22. data/lib/avm/launcher/context/instance_manager/cached_instance.rb +1 -1
  23. data/lib/avm/launcher/instances/base.rb +1 -1
  24. data/lib/avm/patches/object/template.rb +2 -2
  25. data/lib/avm/projects/stereotypes/git/update.rb +1 -1
  26. data/lib/avm/projects/stereotypes/git/update/subrepo.rb +1 -1
  27. data/lib/avm/projects/stereotypes/ruby_gem/publish.rb +2 -2
  28. data/lib/avm/projects/stereotypes/ruby_gem/update.rb +1 -1
  29. data/lib/avm/projects/stereotypes/ruby_gem/version_bump.rb +1 -1
  30. data/lib/avm/ruby/gems/generator.rb +3 -3
  31. data/lib/avm/ruby/rubocop.rb +1 -1
  32. data/lib/avm/tools/runner/git.rb +6 -2
  33. data/lib/avm/tools/runner/git/commit.rb +1 -1
  34. data/lib/avm/tools/runner/git/issue.rb +17 -13
  35. data/lib/avm/tools/version.rb +1 -1
  36. data/lib/eac_launcher/context.rb +2 -2
  37. data/lib/eac_launcher/git/publish_base.rb +1 -1
  38. data/lib/eac_launcher/ruby/gem/build.rb +2 -2
  39. data/vendor/avm-apps/lib/avm/apps/jobs/base.rb +1 -1
  40. data/vendor/avm-apps/lib/avm/apps/sources/configuration.rb +2 -2
  41. data/vendor/avm-apps/lib/avm/apps/sources/configuration/_locale.rb +1 -1
  42. data/vendor/avm-apps/lib/avm/apps/sources/configuration/_rubocop.rb +1 -1
  43. data/vendor/avm-apps/lib/avm/apps/sources/configuration/_tests.rb +1 -1
  44. data/vendor/avm-apps/lib/avm/apps/version.rb +1 -1
  45. data/vendor/avm-eac_asciidoctor_base0/avm-eac_asciidoctor_base0.gemspec +1 -0
  46. data/vendor/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/build.rb +1 -1
  47. data/vendor/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/build/file.rb +1 -1
  48. data/vendor/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/version.rb +1 -1
  49. data/vendor/eac_cli/eac_cli.gemspec +4 -1
  50. data/vendor/eac_cli/lib/eac_cli/default_runner.rb +1 -1
  51. data/vendor/eac_cli/lib/eac_cli/definition/help_formatter.rb +2 -2
  52. data/vendor/eac_cli/lib/eac_cli/docopt/doc_builder.rb +1 -1
  53. data/vendor/eac_cli/lib/eac_cli/docopt/doc_builder/alternative.rb +3 -3
  54. data/vendor/eac_cli/lib/eac_cli/docopt/runner_extension.rb +2 -2
  55. data/vendor/eac_cli/lib/eac_cli/docopt_runner.rb +43 -0
  56. data/vendor/eac_cli/lib/eac_cli/docopt_runner/_class_methods.rb +16 -0
  57. data/vendor/eac_cli/lib/eac_cli/docopt_runner/_doc.rb +23 -0
  58. data/vendor/eac_cli/lib/eac_cli/docopt_runner/_settings.rb +17 -0
  59. data/vendor/eac_cli/lib/eac_cli/docopt_runner/_subcommands.rb +152 -0
  60. data/vendor/eac_cli/lib/eac_cli/old_configs.rb +36 -0
  61. data/vendor/eac_cli/lib/eac_cli/old_configs/entry_reader.rb +80 -0
  62. data/vendor/eac_cli/lib/eac_cli/old_configs/password_entry_reader.rb +16 -0
  63. data/vendor/eac_cli/lib/eac_cli/old_configs/read_entry_options.rb +44 -0
  64. data/vendor/eac_cli/lib/eac_cli/old_configs/store_passwords_entry_reader.rb +25 -0
  65. data/vendor/eac_cli/lib/eac_cli/patches/module.rb +4 -0
  66. data/vendor/eac_cli/lib/eac_cli/patches/module/speaker.rb +10 -0
  67. data/vendor/eac_cli/lib/eac_cli/patches/object/runner_with.rb +1 -1
  68. data/vendor/eac_cli/lib/eac_cli/runner_with/subcommands.rb +5 -1
  69. data/vendor/eac_cli/lib/eac_cli/runner_with/subcommands/definition_concern.rb +10 -0
  70. data/vendor/eac_cli/lib/eac_cli/speaker.rb +131 -0
  71. data/vendor/eac_cli/lib/eac_cli/speaker/_class_methods.rb +37 -0
  72. data/vendor/eac_cli/lib/eac_cli/speaker/_constants.rb +12 -0
  73. data/vendor/eac_cli/lib/eac_cli/speaker/list.rb +61 -0
  74. data/vendor/eac_cli/lib/eac_cli/speaker/node.rb +24 -0
  75. data/vendor/eac_cli/lib/eac_cli/version.rb +1 -1
  76. data/vendor/eac_cli/spec/lib/eac_cli/docopt/runner_extension_spec.rb +1 -1
  77. data/vendor/{eac_ruby_utils/spec/lib/eac_ruby_utils/console → eac_cli/spec/lib/eac_cli}/docopt_runner_spec.rb +5 -5
  78. data/vendor/{eac_ruby_utils/spec/lib/eac_ruby_utils/console/configs_spec.rb → eac_cli/spec/lib/eac_cli/old_configs_spec.rb} +2 -2
  79. data/vendor/eac_cli/spec/lib/eac_cli/runner_spec.rb +1 -1
  80. data/vendor/{eac_ruby_utils/spec/lib/eac_ruby_utils/console → eac_cli/spec/lib/eac_cli}/speaker_spec.rb +2 -2
  81. data/vendor/eac_cli/spec/lib/module/speaker_spec.rb +13 -0
  82. data/vendor/eac_config/Gemfile +5 -0
  83. data/vendor/eac_config/eac_config.gemspec +19 -0
  84. data/vendor/eac_config/lib/eac_config.rb +7 -0
  85. data/vendor/eac_config/lib/eac_config/entry.rb +43 -0
  86. data/vendor/eac_config/lib/eac_config/entry_path.rb +41 -0
  87. data/vendor/eac_config/lib/eac_config/load_nodes_search.rb +39 -0
  88. data/vendor/eac_config/lib/eac_config/load_path.rb +36 -0
  89. data/vendor/eac_config/lib/eac_config/node.rb +53 -0
  90. data/vendor/eac_config/lib/eac_config/node_entry.rb +39 -0
  91. data/vendor/{eac_ruby_utils/lib/eac_ruby_utils/configs.rb → eac_config/lib/eac_config/old_configs.rb} +5 -5
  92. data/vendor/{eac_ruby_utils/lib/eac_ruby_utils/configs → eac_config/lib/eac_config/old_configs}/base.rb +5 -5
  93. data/vendor/{eac_ruby_utils/lib/eac_ruby_utils/configs → eac_config/lib/eac_config/old_configs}/file.rb +4 -4
  94. data/vendor/{eac_ruby_utils/lib/eac_ruby_utils → eac_config/lib/eac_config}/paths_hash.rb +8 -8
  95. data/vendor/{eac_ruby_utils/lib/eac_ruby_utils → eac_config/lib/eac_config}/paths_hash/entry_key_error.rb +1 -1
  96. data/vendor/{eac_ruby_utils/lib/eac_ruby_utils → eac_config/lib/eac_config}/paths_hash/node.rb +2 -2
  97. data/vendor/{eac_ruby_utils/lib/eac_ruby_utils → eac_config/lib/eac_config}/paths_hash/path_search.rb +4 -4
  98. data/vendor/eac_config/lib/eac_config/version.rb +5 -0
  99. data/vendor/eac_config/lib/eac_config/yaml_file_node.rb +41 -0
  100. data/vendor/eac_config/spec/lib/eac_config/entry_path_spec.rb +30 -0
  101. data/vendor/{eac_ruby_utils/spec/lib/eac_ruby_utils/configs_spec.rb → eac_config/spec/lib/eac_config/old_configs_spec.rb} +2 -2
  102. data/vendor/{eac_ruby_utils/spec/lib/eac_ruby_utils → eac_config/spec/lib/eac_config}/paths_hash_spec.rb +6 -6
  103. data/vendor/eac_config/spec/lib/eac_config/yaml_file_node_spec.rb +52 -0
  104. data/vendor/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1.yaml +4 -0
  105. data/vendor/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1_1.yaml +2 -0
  106. data/vendor/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1_2.yaml +3 -0
  107. data/vendor/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1_2/storage1_2_1.yaml +2 -0
  108. data/vendor/eac_config/spec/rubocop_spec.rb +3 -0
  109. data/vendor/eac_config/spec/spec_helper.rb +17 -0
  110. data/vendor/eac_docker/eac_docker.gemspec +2 -1
  111. data/vendor/eac_docker/lib/eac_docker/images/templatized.rb +1 -0
  112. data/vendor/eac_docker/lib/eac_docker/version.rb +1 -1
  113. data/vendor/eac_docker/spec/lib/eac_docker/images/templatized_spec.rb +2 -1
  114. data/vendor/eac_ruby_base0/eac_ruby_base0.gemspec +1 -1
  115. data/vendor/eac_ruby_base0/lib/eac_ruby_base0/jobs_runner.rb +2 -2
  116. data/vendor/eac_ruby_base0/lib/eac_ruby_base0/runner.rb +2 -2
  117. data/vendor/eac_ruby_base0/lib/eac_ruby_base0/version.rb +1 -1
  118. data/vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/multiple.rb +1 -1
  119. data/vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/multiple/decorated_gem.rb +1 -1
  120. data/vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/version.rb +1 -1
  121. data/vendor/eac_ruby_utils/eac_ruby_utils.gemspec +0 -2
  122. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/command.rb +10 -5
  123. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/common_concern.rb +0 -1
  124. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/conditional.rb +1 -4
  125. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
  126. data/vendor/eac_templates/Gemfile +5 -0
  127. data/vendor/eac_templates/eac_templates.gemspec +19 -0
  128. data/vendor/eac_templates/lib/eac_templates.rb +7 -0
  129. data/vendor/eac_templates/lib/eac_templates/directory.rb +108 -0
  130. data/vendor/eac_templates/lib/eac_templates/file.rb +48 -0
  131. data/vendor/eac_templates/lib/eac_templates/patches/module/template.rb +10 -0
  132. data/vendor/{eac_ruby_utils/lib/eac_ruby_utils → eac_templates/lib/eac_templates}/patches/object/template.rb +1 -1
  133. data/vendor/eac_templates/lib/eac_templates/searcher.rb +53 -0
  134. data/vendor/eac_templates/lib/eac_templates/variable_not_found_error.rb +5 -0
  135. data/vendor/eac_templates/lib/eac_templates/variable_providers.rb +23 -0
  136. data/vendor/eac_templates/lib/eac_templates/variable_providers/base.rb +21 -0
  137. data/vendor/eac_templates/lib/eac_templates/variable_providers/entries_reader.rb +23 -0
  138. data/vendor/eac_templates/lib/eac_templates/variable_providers/generic.rb +23 -0
  139. data/vendor/eac_templates/lib/eac_templates/variable_providers/hash.rb +27 -0
  140. data/vendor/eac_templates/lib/eac_templates/version.rb +5 -0
  141. data/vendor/{eac_ruby_utils/spec/lib/eac_ruby_utils/templates → eac_templates/spec/lib/eac_templates}/file_spec.rb +4 -4
  142. data/vendor/{eac_ruby_utils/spec/lib/eac_ruby_utils/templates → eac_templates/spec/lib/eac_templates}/file_spec_files/expected_content +0 -0
  143. data/vendor/{eac_ruby_utils/spec/lib/eac_ruby_utils/templates → eac_templates/spec/lib/eac_templates}/file_spec_files/source.template +0 -0
  144. data/vendor/{eac_ruby_utils/spec/lib/eac_ruby_utils/templates → eac_templates/spec/lib/eac_templates}/searcher_spec.rb +5 -5
  145. data/vendor/{eac_ruby_utils/spec/lib/eac_ruby_utils/templates → eac_templates/spec/lib/eac_templates}/searcher_spec_files/path1/subdir1/file1.template +0 -0
  146. data/vendor/{eac_ruby_utils/spec/lib/eac_ruby_utils/templates → eac_templates/spec/lib/eac_templates}/searcher_spec_files/path1/subdir1/file2 +0 -0
  147. data/vendor/{eac_ruby_utils/spec/lib/eac_ruby_utils/templates → eac_templates/spec/lib/eac_templates}/searcher_spec_files/path2/subdir1/file3.template +0 -0
  148. data/vendor/eac_templates/spec/lib/object/template_spec.rb +23 -0
  149. data/vendor/eac_templates/spec/lib/object/template_spec_files/path/my_stub_with_template +1 -0
  150. data/vendor/eac_templates/spec/rubocop_spec.rb +3 -0
  151. data/vendor/eac_templates/spec/spec_helper.rb +102 -0
  152. metadata +90 -71
  153. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console.rb +0 -5
  154. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/configs.rb +0 -38
  155. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/configs/entry_reader.rb +0 -81
  156. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/configs/password_entry_reader.rb +0 -18
  157. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/configs/read_entry_options.rb +0 -46
  158. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/configs/store_passwords_entry_reader.rb +0 -27
  159. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/docopt_runner.rb +0 -45
  160. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/docopt_runner/_class_methods.rb +0 -18
  161. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/docopt_runner/_doc.rb +0 -25
  162. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/docopt_runner/_settings.rb +0 -19
  163. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/docopt_runner/_subcommands.rb +0 -154
  164. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/speaker.rb +0 -133
  165. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/speaker/_class_methods.rb +0 -39
  166. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/speaker/_constants.rb +0 -14
  167. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/speaker/list.rb +0 -63
  168. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/speaker/node.rb +0 -26
  169. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/console_speaker.rb +0 -10
  170. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/template.rb +0 -10
  171. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/templates.rb +0 -9
  172. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/directory.rb +0 -110
  173. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/file.rb +0 -50
  174. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/searcher.rb +0 -55
  175. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/variable_not_found_error.rb +0 -7
  176. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/variable_providers.rb +0 -25
  177. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/variable_providers/base.rb +0 -23
  178. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/variable_providers/entries_reader.rb +0 -25
  179. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/variable_providers/generic.rb +0 -25
  180. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/variable_providers/hash.rb +0 -29
  181. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/module/console_speaker_spec.rb +0 -13
  182. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/object/template_spec.rb +0 -23
@@ -14,7 +14,7 @@ Gem::Specification.new do |s|
14
14
 
15
15
  s.add_dependency 'eac_cli', '~> 0.15', '>= 0.15.1'
16
16
  s.add_dependency 'eac_ruby_gems_utils', '~> 0.8'
17
- s.add_dependency 'eac_ruby_utils', '~> 0.60'
17
+ s.add_dependency 'eac_ruby_utils', '~> 0.64'
18
18
 
19
19
  s.add_development_dependency 'eac_ruby_gem_support', '~> 0.2'
20
20
  end
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'eac_ruby_utils/console/speaker'
3
+ require 'eac_cli/speaker'
4
4
  require 'eac_ruby_utils/settings_provider'
5
5
 
6
6
  module EacRubyBase0
7
7
  module JobsRunner
8
8
  common_concern do
9
- include ::EacRubyUtils::Console::Speaker
9
+ include ::EacCli::Speaker
10
10
  include ::EacRubyUtils::SettingsProvider
11
11
  end
12
12
 
@@ -7,7 +7,7 @@ require 'eac_ruby_utils/core_ext'
7
7
  module EacRubyBase0
8
8
  module Runner
9
9
  require_sub __FILE__
10
- enable_console_speaker
10
+ enable_speaker
11
11
  common_concern do
12
12
  include ::EacCli::RunnerWith::Help
13
13
  include ::EacCli::RunnerWith::Subcommands
@@ -42,7 +42,7 @@ module EacRubyBase0
42
42
  end
43
43
 
44
44
  class FailIfRequestInput
45
- enable_console_speaker
45
+ enable_speaker
46
46
 
47
47
  %w[gets noecho].each do |method|
48
48
  define_method(method) do
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacRubyBase0
4
- VERSION = '0.7.1'
4
+ VERSION = '0.7.2'
5
5
  end
@@ -8,7 +8,7 @@ module EacRubyGemsUtils
8
8
  module Tests
9
9
  class Multiple
10
10
  require_sub __FILE__
11
- enable_console_speaker
11
+ enable_speaker
12
12
  enable_simple_cache
13
13
  common_constructor :gems, :options, default: [{}]
14
14
  set_callback :initialize, :after, :run
@@ -4,7 +4,7 @@ module EacRubyGemsUtils
4
4
  module Tests
5
5
  class Multiple
6
6
  class DecoratedGem < ::SimpleDelegator
7
- enable_console_speaker
7
+ enable_speaker
8
8
 
9
9
  def prepare
10
10
  return unless gemfile_path.exist?
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacRubyGemsUtils
4
- VERSION = '0.9.2'
4
+ VERSION = '0.9.3'
5
5
  end
@@ -17,8 +17,6 @@ Gem::Specification.new do |s|
17
17
 
18
18
  s.add_dependency 'activesupport', '>= 4.0'
19
19
  s.add_dependency 'addressable', '~> 2.6'
20
- s.add_dependency 'colorize', '~> 0.8.1'
21
- s.add_dependency 'docopt', '~> 0.6.1'
22
20
  s.add_dependency 'filesize'
23
21
  s.add_dependency 'net-ssh', '~> 4.2'
24
22
  s.add_development_dependency 'eac_ruby_gem_support', '~> 0.2'
@@ -10,7 +10,6 @@ module EacRubyUtils
10
10
  module Envs
11
11
  class Command
12
12
  require_sub __FILE__, include_modules: true
13
- enable_console_speaker
14
13
 
15
14
  def initialize(env, command, extra_options = {})
16
15
  @env = env
@@ -61,17 +60,17 @@ module EacRubyUtils
61
60
 
62
61
  def execute(options = {})
63
62
  c = command(options)
64
- puts "BEFORE: #{c}".light_red if debug?
63
+ debug_print("BEFORE: #{c}")
65
64
  t1 = Time.now
66
65
  r = ::EacRubyUtils::Envs::Process.new(c).to_h
67
66
  i = Time.now - t1
68
- puts "AFTER [#{i}]: #{c}".light_red if debug?
67
+ debug_print("AFTER [#{i}]: #{c}")
69
68
  r
70
69
  end
71
70
 
72
71
  def spawn(options = {})
73
72
  c = command(options)
74
- puts "SPAWN: #{c}".light_red if debug?
73
+ debug_print("SPAWN: #{c}")
75
74
  ::EacRubyUtils::Envs::Spawn.new(c)
76
75
  end
77
76
 
@@ -83,7 +82,7 @@ module EacRubyUtils
83
82
 
84
83
  def system(options = {})
85
84
  c = command(options)
86
- puts c.light_red if debug?
85
+ debug_print(c)
87
86
  Kernel.system(c)
88
87
  end
89
88
 
@@ -109,6 +108,12 @@ module EacRubyUtils
109
108
  ENV['DEBUG'].to_s.strip != ''
110
109
  end
111
110
 
111
+ # Print a message if debugging is enabled.
112
+ def debug_print(message)
113
+ message = message.to_s
114
+ puts message.if_respond(:light_red, message) if debug?
115
+ end
116
+
112
117
  def append_command_options(command, options)
113
118
  command = options[:input].command + ' | ' + command if options[:input]
114
119
  if options[:input_file]
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'eac_ruby_utils/common_concern'
4
- require 'eac_ruby_utils/console/speaker'
5
4
 
6
5
  class Module
7
6
  def common_concern(&after_callback)
@@ -1,13 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'active_support/core_ext/object/blank'
4
- require 'eac_ruby_utils/console/speaker'
5
4
 
6
5
  module EacRubyUtils
7
6
  module Rspec
8
7
  class Conditional
9
- include ::EacRubyUtils::Console::Speaker
10
-
11
8
  def self.default
12
9
  @default ||= new
13
10
  end
@@ -24,7 +21,7 @@ module EacRubyUtils
24
21
  tags.each do |tag, condition|
25
22
  message = condition.call
26
23
  if message.present?
27
- warn("Excluded tag: #{tag}: #{message}")
24
+ puts("[WARN] Excluded tag: #{tag}: #{message}")
28
25
  rspec_config.filter_run_excluding tag
29
26
  end
30
27
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacRubyUtils
4
- VERSION = '0.63.0'
4
+ VERSION = '0.64.0'
5
5
  end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gemspec
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.push File.expand_path('lib', __dir__)
4
+
5
+ require 'eac_templates/version'
6
+
7
+ Gem::Specification.new do |s|
8
+ s.name = 'eac_templates'
9
+ s.version = EacTemplates::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 'eac_config', '~> 0.3'
16
+ s.add_dependency 'eac_ruby_utils', '~> 0.64'
17
+
18
+ s.add_development_dependency 'eac_ruby_gem_support', '~> 0.2'
19
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EacTemplates
6
+ require_sub __FILE__
7
+ end
@@ -0,0 +1,108 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_templates/file'
4
+
5
+ module EacTemplates
6
+ class Directory
7
+ TEMPLATE_EXTNAME = '.template'
8
+
9
+ attr_reader :path
10
+
11
+ def initialize(path)
12
+ @path = path.is_a?(::Pathname) ? path : ::Pathname.new(path.to_s)
13
+ end
14
+
15
+ def apply(variables_source, directory)
16
+ TemplateNode.new(self, '.', directory, variables_source).apply
17
+ end
18
+
19
+ def child(subpath)
20
+ child_path = ::File.join(path, subpath)
21
+ return ::EacTemplates::File.new(child_path) if ::File.file?(child_path)
22
+ return ::EacTemplates::Directory.new(child_path) if ::File.directory?(child_path)
23
+
24
+ raise "Child \"#{subpath}\" from \"#{path}\" not found"
25
+ end
26
+
27
+ def children
28
+ path.children.map do |path_child|
29
+ child(path_child.basename.to_path)
30
+ end
31
+ end
32
+
33
+ private
34
+
35
+ def apply_fs_object(source_relative, target)
36
+ if ::File.directory?(source_absolute(source_relative))
37
+ apply_directory(source_relative, target)
38
+ elsif ::File.file?(source_absolute(source_relative))
39
+ end
40
+ end
41
+
42
+ def source_absolute(source_relative)
43
+ ::File.expand_path(source_relative, path)
44
+ end
45
+
46
+ class TemplateNode
47
+ attr_reader :source_directory, :source_relative, :target_root_directory, :variables_source
48
+
49
+ def initialize(source_directory, source_relative, target_root_directory, variables_source)
50
+ @source_directory = source_directory
51
+ @source_relative = source_relative
52
+ @target_root_directory = target_root_directory
53
+ @variables_source = variables_source
54
+ end
55
+
56
+ def apply
57
+ if file?
58
+ apply_file
59
+ elsif directory?
60
+ apply_directory
61
+ else
62
+ raise "Unknown filesystem type: #{source_absolute}"
63
+ end
64
+ end
65
+
66
+ private
67
+
68
+ def apply_directory
69
+ ::FileUtils.mkdir_p(target_absolute)
70
+ Dir.entries(source_absolute).each do |entry|
71
+ child(entry).apply unless %w[. ..].include?(entry)
72
+ end
73
+ end
74
+
75
+ def apply_file
76
+ if ::File.extname(source_absolute) == TEMPLATE_EXTNAME
77
+ ::EacTemplates::File.new(source_absolute).apply_to_file(
78
+ variables_source, target_absolute
79
+ )
80
+ else
81
+ ::FileUtils.cp(source_absolute, target_absolute)
82
+ end
83
+ end
84
+
85
+ def child(entry)
86
+ TemplateNode.new(source_directory, ::File.join(source_relative, entry),
87
+ target_root_directory, variables_source)
88
+ end
89
+
90
+ def file?
91
+ ::File.file?(source_absolute)
92
+ end
93
+
94
+ def directory?
95
+ ::File.directory?(source_absolute)
96
+ end
97
+
98
+ def source_absolute
99
+ ::File.expand_path(source_relative, source_directory.path)
100
+ end
101
+
102
+ def target_absolute
103
+ ::File.expand_path(source_relative, target_root_directory)
104
+ .gsub(/#{::Regexp.quote(TEMPLATE_EXTNAME)}\z/, '')
105
+ end
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'eac_templates/variable_providers'
5
+
6
+ module EacTemplates
7
+ class File
8
+ VARIABLE_DELIMITER = ::Regexp.quote('%%')
9
+ VARIABLE_PATTERN = /#{VARIABLE_DELIMITER}([a-z0-9\._]*)#{VARIABLE_DELIMITER}/i.freeze
10
+
11
+ enable_simple_cache
12
+ common_constructor :path do
13
+ self.path = path.to_pathname
14
+ end
15
+
16
+ # +variables_provider+ A [Hash] or object which responds to +read_entry(entry_name)+.
17
+ def apply(variables_source)
18
+ variables_provider = ::EacTemplates::VariableProviders.build(variables_source)
19
+ variables.inject(content) do |a, e|
20
+ a.gsub(variable_pattern(e), variables_provider.variable_value(e).to_s)
21
+ end
22
+ end
23
+
24
+ def apply_to_file(variables_source, output_file_path)
25
+ output_file_path.to_pathname.write(apply(variables_source))
26
+ end
27
+
28
+ private
29
+
30
+ def variables_uncached
31
+ content.scan(VARIABLE_PATTERN).map(&:first).map do |name|
32
+ sanitize_variable_name(name)
33
+ end.to_set
34
+ end
35
+
36
+ def content_uncached
37
+ path.read
38
+ end
39
+
40
+ def sanitize_variable_name(variable_name)
41
+ variable_name.to_s.downcase
42
+ end
43
+
44
+ def variable_pattern(name)
45
+ /#{VARIABLE_DELIMITER}#{::Regexp.quote(name)}#{VARIABLE_DELIMITER}/i
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/core_ext/string/inflections'
4
+ require 'eac_templates/searcher'
5
+
6
+ class Module
7
+ def template
8
+ @template ||= ::EacTemplates::Searcher.default.template(name.underscore)
9
+ end
10
+ end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'eac_ruby_utils/patches/module/template'
3
+ require 'eac_templates/patches/module/template'
4
4
 
5
5
  class Object
6
6
  def template
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/core_ext/object/blank'
4
+ require 'eac_templates/directory'
5
+ require 'eac_templates/file'
6
+
7
+ module EacTemplates
8
+ class Searcher
9
+ class << self
10
+ def default
11
+ @default ||= new
12
+ end
13
+ end
14
+
15
+ def template(subpath, required = true)
16
+ path = template_path(subpath)
17
+ if path.blank?
18
+ return nil unless required
19
+
20
+ raise_template_not_found(subpath)
21
+ end
22
+ return ::EacTemplates::File.new(path) if ::File.file?(path)
23
+ return ::EacTemplates::Directory.new(path) if ::File.directory?(path)
24
+
25
+ raise 'Invalid branching'
26
+ end
27
+
28
+ # @return The absolute path of template if found, +nil+ otherwise.
29
+ def template_path(subpath)
30
+ included_paths.each do |included_path|
31
+ r = search_template_in_included_path(included_path, subpath)
32
+ return r if r
33
+ end
34
+ nil
35
+ end
36
+
37
+ def included_paths
38
+ @included_paths ||= ::Set.new
39
+ end
40
+
41
+ private
42
+
43
+ def raise_template_not_found(subpath)
44
+ raise "Template not found for subpath \"#{subpath}\"" \
45
+ " (Included paths: #{included_paths.to_a.join(::File::PATH_SEPARATOR)})"
46
+ end
47
+
48
+ def search_template_in_included_path(included_path, subpath)
49
+ path = ::File.join(included_path, subpath)
50
+ ::File.exist?(path) ? path : nil
51
+ end
52
+ end
53
+ end