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
@@ -1,133 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'colorize'
4
- require 'io/console'
5
- require 'eac_ruby_utils/patches/hash/options_consumer'
6
- require 'eac_ruby_utils/require_sub'
7
- ::EacRubyUtils.require_sub __FILE__
8
-
9
- module EacRubyUtils
10
- module Console
11
- # https://github.com/fazibear/colorize
12
- module Speaker
13
- def on_speaker_node(&block)
14
- ::EacRubyUtils::Console::Speaker.on_node(&block)
15
- end
16
-
17
- def puts(string = '')
18
- string.to_s.each_line do |line|
19
- current_node.stderr.puts(current_node.stderr_line_prefix.to_s + line)
20
- end
21
- end
22
-
23
- def out(string = '')
24
- current_node.stdout.write(string.to_s)
25
- end
26
-
27
- def fatal_error(string)
28
- puts "ERROR: #{string}".white.on_red
29
- Kernel.exit 1 # rubocop:disable Rails/Exit
30
- end
31
-
32
- def title(string)
33
- string = string.to_s
34
- puts(('-' * (8 + string.length)).green)
35
- puts("--- #{string} ---".green)
36
- puts(('-' * (8 + string.length)).green)
37
- puts
38
- end
39
-
40
- def info(string)
41
- puts string.to_s.white
42
- end
43
-
44
- def infom(string)
45
- puts string.to_s.light_yellow
46
- end
47
-
48
- def warn(string)
49
- puts string.to_s.yellow
50
- end
51
-
52
- # Options:
53
- # +bool+ ([Boolean], default: +false+): requires a answer "yes" or "no".
54
- # +list+ ([Hash] or [Array], default: +nil+): requires a answer from a list.
55
- # +noecho+ ([Boolean], default: +false+): does not output answer.
56
- def request_input(question, options = {})
57
- bool, list, noecho = options.to_options_consumer.consume_all(:bool, :list, :noecho)
58
- if list
59
- request_from_list(question, list, noecho)
60
- elsif bool
61
- request_from_bool(question, noecho)
62
- else
63
- request_string(question, noecho)
64
- end
65
- end
66
-
67
- def infov(*args)
68
- r = []
69
- args.each_with_index do |v, i|
70
- if i.even?
71
- r << "#{v}: ".cyan
72
- else
73
- r.last << v.to_s
74
- end
75
- end
76
- puts r.join(', ')
77
- end
78
-
79
- def success(string)
80
- puts string.to_s.green
81
- end
82
-
83
- private
84
-
85
- def list_value(list, input)
86
- values = list_values(list)
87
- return input, true unless values
88
- return input, false unless values.include?(input)
89
- end
90
-
91
- def list_values(list)
92
- if list.is_a?(::Hash)
93
- list.keys.map(&:to_s)
94
- elsif list.is_a?(::Array)
95
- list.map(&:to_s)
96
- end
97
- end
98
-
99
- def request_from_bool(question, noecho)
100
- request_from_list(question, { yes: true, y: true, no: false, n: false }, noecho)
101
- end
102
-
103
- def request_from_list(question, list, noecho)
104
- list = ::EacRubyUtils::Console::Speaker::List.build(list)
105
- loop do
106
- input = request_string("#{question} [#{list.valid_labels.join('/')}]", noecho)
107
- return list.build_value(input) if list.valid_value?(input)
108
-
109
- warn "Invalid input: \"#{input}\" (Valid: #{list.valid_labels.join(', ')})"
110
- end
111
- end
112
-
113
- def request_string(question, noecho)
114
- current_node.stderr.write "#{question}: ".to_s.yellow
115
- noecho ? request_string_noecho : request_string_echo
116
- end
117
-
118
- def request_string_noecho
119
- r = current_node.stdin.noecho(&:gets).chomp.strip
120
- current_node.stderr.write("\n")
121
- r
122
- end
123
-
124
- def request_string_echo
125
- current_node.stdin.gets.chomp.strip
126
- end
127
-
128
- def current_node
129
- ::EacRubyUtils::Console::Speaker.current_node
130
- end
131
- end
132
- end
133
- end
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/console/speaker/node'
4
-
5
- module EacRubyUtils
6
- module Console
7
- module Speaker
8
- class << self
9
- def current_node
10
- nodes_stack.last
11
- end
12
-
13
- def on_node(&block)
14
- push
15
- yield(*(block.arity.zero? ? [] : [current_node]))
16
- ensure
17
- pop
18
- end
19
-
20
- def push
21
- nodes_stack << ::EacRubyUtils::Console::Speaker::Node.new
22
- current_node
23
- end
24
-
25
- def pop
26
- return nodes_stack.pop if nodes_stack.count > 1
27
-
28
- raise "Cannot remove first node (nodes_stack.count: #{nodes_stack.count})"
29
- end
30
-
31
- private
32
-
33
- def nodes_stack
34
- @nodes_stack ||= [::EacRubyUtils::Console::Speaker::Node.new]
35
- end
36
- end
37
- end
38
- end
39
- end
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/by_reference'
4
-
5
- module EacRubyUtils
6
- module Console
7
- # https://github.com/fazibear/colorize
8
- module Speaker
9
- STDERR = ::EacRubyUtils::ByReference.new { $stderr }
10
- STDIN = ::EacRubyUtils::ByReference.new { $stdin }
11
- STDOUT = ::EacRubyUtils::ByReference.new { $stdout }
12
- end
13
- end
14
- end
@@ -1,63 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'active_support/hash_with_indifferent_access'
4
- require 'ostruct'
5
-
6
- module EacRubyUtils
7
- module Console
8
- module Speaker
9
- class List
10
- class << self
11
- def build(list)
12
- return List.new(hash_to_values(list)) if list.is_a?(::Hash)
13
- return List.new(array_to_values(list)) if list.is_a?(::Array)
14
-
15
- raise "Invalid list: #{list} (#{list.class})"
16
- end
17
-
18
- private
19
-
20
- def hash_to_values(list)
21
- list.map { |key, value| ::OpenStruct.new(key: key, label: key, value: value) }
22
- end
23
-
24
- def array_to_values(list)
25
- list.map { |value| ::OpenStruct.new(key: value, label: value, value: value) }
26
- end
27
- end
28
-
29
- attr_reader :values
30
-
31
- def initialize(values)
32
- @values = values.map do |v|
33
- ::OpenStruct.new(key: to_key(v.key), label: to_label(v.label), value: v.value)
34
- end
35
- end
36
-
37
- def valid_labels
38
- values.map(&:label)
39
- end
40
-
41
- def valid_value?(value)
42
- values.any? { |v| v.key == to_key(value) }
43
- end
44
-
45
- def to_key(value)
46
- to_label(value).downcase
47
- end
48
-
49
- def to_label(value)
50
- value.to_s.strip
51
- end
52
-
53
- def build_value(value)
54
- key = to_key(value)
55
- values.each do |v|
56
- return v.value if v.key == key
57
- end
58
- raise "Value not found: \"#{value}\" (#{values})"
59
- end
60
- end
61
- end
62
- end
63
- end
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/patches/object/if_present'
4
- require 'eac_ruby_utils/console/speaker/_constants'
5
-
6
- module EacRubyUtils
7
- module Console
8
- module Speaker
9
- class Node
10
- attr_accessor :stdin, :stdout, :stderr, :stderr_line_prefix
11
-
12
- def initialize(parent = nil)
13
- self.stdin = parent.if_present(::EacRubyUtils::Console::Speaker::STDIN, &:stdin)
14
- self.stdout = parent.if_present(::EacRubyUtils::Console::Speaker::STDOUT, &:stdout)
15
- self.stderr = parent.if_present(::EacRubyUtils::Console::Speaker::STDERR, &:stderr)
16
- self.stderr_line_prefix = parent.if_present('', &:stderr_line_prefix)
17
- end
18
-
19
- def configure
20
- yield(self)
21
- self
22
- end
23
- end
24
- end
25
- end
26
- end
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/patch'
4
- require 'eac_ruby_utils/console/speaker'
5
-
6
- class Module
7
- def enable_console_speaker
8
- ::EacRubyUtils.patch(self, ::EacRubyUtils::Console::Speaker)
9
- end
10
- end
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'active_support/core_ext/string/inflections'
4
- require 'eac_ruby_utils/templates/searcher'
5
-
6
- class Module
7
- def template
8
- @template ||= ::EacRubyUtils::Templates::Searcher.default.template(name.underscore)
9
- end
10
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/require_sub'
4
-
5
- module Avm
6
- module Templates
7
- ::EacRubyUtils.require_sub(__FILE__)
8
- end
9
- end
@@ -1,110 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/templates/file'
4
-
5
- module EacRubyUtils
6
- module Templates
7
- class Directory
8
- TEMPLATE_EXTNAME = '.template'
9
-
10
- attr_reader :path
11
-
12
- def initialize(path)
13
- @path = path.is_a?(::Pathname) ? path : ::Pathname.new(path.to_s)
14
- end
15
-
16
- def apply(variables_source, directory)
17
- TemplateNode.new(self, '.', directory, variables_source).apply
18
- end
19
-
20
- def child(subpath)
21
- child_path = ::File.join(path, subpath)
22
- return ::EacRubyUtils::Templates::File.new(child_path) if ::File.file?(child_path)
23
- return ::EacRubyUtils::Templates::Directory.new(child_path) if ::File.directory?(child_path)
24
-
25
- raise "Child \"#{subpath}\" from \"#{path}\" not found"
26
- end
27
-
28
- def children
29
- path.children.map do |path_child|
30
- child(path_child.basename.to_path)
31
- end
32
- end
33
-
34
- private
35
-
36
- def apply_fs_object(source_relative, target)
37
- if ::File.directory?(source_absolute(source_relative))
38
- apply_directory(source_relative, target)
39
- elsif ::File.file?(source_absolute(source_relative))
40
- end
41
- end
42
-
43
- def source_absolute(source_relative)
44
- ::File.expand_path(source_relative, path)
45
- end
46
-
47
- class TemplateNode
48
- attr_reader :source_directory, :source_relative, :target_root_directory, :variables_source
49
-
50
- def initialize(source_directory, source_relative, target_root_directory, variables_source)
51
- @source_directory = source_directory
52
- @source_relative = source_relative
53
- @target_root_directory = target_root_directory
54
- @variables_source = variables_source
55
- end
56
-
57
- def apply
58
- if file?
59
- apply_file
60
- elsif directory?
61
- apply_directory
62
- else
63
- raise "Unknown filesystem type: #{source_absolute}"
64
- end
65
- end
66
-
67
- private
68
-
69
- def apply_directory
70
- ::FileUtils.mkdir_p(target_absolute)
71
- Dir.entries(source_absolute).each do |entry|
72
- child(entry).apply unless %w[. ..].include?(entry)
73
- end
74
- end
75
-
76
- def apply_file
77
- if ::File.extname(source_absolute) == TEMPLATE_EXTNAME
78
- ::EacRubyUtils::Templates::File.new(source_absolute).apply_to_file(
79
- variables_source, target_absolute
80
- )
81
- else
82
- ::FileUtils.cp(source_absolute, target_absolute)
83
- end
84
- end
85
-
86
- def child(entry)
87
- TemplateNode.new(source_directory, ::File.join(source_relative, entry),
88
- target_root_directory, variables_source)
89
- end
90
-
91
- def file?
92
- ::File.file?(source_absolute)
93
- end
94
-
95
- def directory?
96
- ::File.directory?(source_absolute)
97
- end
98
-
99
- def source_absolute
100
- ::File.expand_path(source_relative, source_directory.path)
101
- end
102
-
103
- def target_absolute
104
- ::File.expand_path(source_relative, target_root_directory)
105
- .gsub(/#{::Regexp.quote(TEMPLATE_EXTNAME)}\z/, '')
106
- end
107
- end
108
- end
109
- end
110
- end
@@ -1,50 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/core_ext'
4
- require 'eac_ruby_utils/templates/variable_providers'
5
-
6
- module EacRubyUtils
7
- module Templates
8
- class File
9
- VARIABLE_DELIMITER = ::Regexp.quote('%%')
10
- VARIABLE_PATTERN = /#{VARIABLE_DELIMITER}([a-z0-9\._]*)#{VARIABLE_DELIMITER}/i.freeze
11
-
12
- enable_simple_cache
13
- common_constructor :path do
14
- self.path = path.to_pathname
15
- end
16
-
17
- # +variables_provider+ A [Hash] or object which responds to +read_entry(entry_name)+.
18
- def apply(variables_source)
19
- variables_provider = ::EacRubyUtils::Templates::VariableProviders.build(variables_source)
20
- variables.inject(content) do |a, e|
21
- a.gsub(variable_pattern(e), variables_provider.variable_value(e).to_s)
22
- end
23
- end
24
-
25
- def apply_to_file(variables_source, output_file_path)
26
- output_file_path.to_pathname.write(apply(variables_source))
27
- end
28
-
29
- private
30
-
31
- def variables_uncached
32
- content.scan(VARIABLE_PATTERN).map(&:first).map do |name|
33
- sanitize_variable_name(name)
34
- end.to_set
35
- end
36
-
37
- def content_uncached
38
- path.read
39
- end
40
-
41
- def sanitize_variable_name(variable_name)
42
- variable_name.to_s.downcase
43
- end
44
-
45
- def variable_pattern(name)
46
- /#{VARIABLE_DELIMITER}#{::Regexp.quote(name)}#{VARIABLE_DELIMITER}/i
47
- end
48
- end
49
- end
50
- end