eac_tools 0.39.0 → 0.41.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 (44) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +26 -25
  3. data/lib/eac_tools/version.rb +1 -1
  4. data/sub/avm/avm.gemspec +1 -1
  5. data/sub/avm/lib/avm/rspec/setup/source_generator.rb +22 -0
  6. data/sub/avm/lib/avm/rspec/setup.rb +4 -4
  7. data/sub/avm/lib/avm/rspec/shared_examples/avm_source_generated.rb +23 -0
  8. data/sub/avm/lib/avm/version.rb +1 -1
  9. data/sub/avm-eac_asciidoctor_base0/avm-eac_asciidoctor_base0.gemspec +4 -3
  10. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/deploy.rb +1 -1
  11. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/source_generators/base.rb +28 -0
  12. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/source_generators.rb +11 -0
  13. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/base.rb +7 -1
  14. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/build/document.rb +84 -0
  15. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/build.rb +9 -15
  16. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/build.rb +2 -2
  17. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/version.rb +1 -1
  18. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/source_generators/base_spec.rb +8 -0
  19. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/source_generators/base_spec_files/no_options/content/body.adoc +9 -0
  20. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/sources/build_spec.rb +32 -0
  21. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/sources/build_spec_files/doc1.html +1 -0
  22. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/sources/build_spec_files/doc2/doc2_1.html +1 -0
  23. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/sources/build_spec_files/doc2.html +1 -0
  24. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/sources/build_spec_files/index.html +1 -0
  25. data/sub/avm-eac_asciidoctor_base0/spec/spec_helper.rb +4 -0
  26. data/sub/avm-eac_asciidoctor_base0/template/avm/eac_asciidoctor_base0/source_generators/base/content/body.adoc +9 -0
  27. data/sub/avm-eac_ruby_base1/avm-eac_ruby_base1.gemspec +3 -3
  28. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/version.rb +1 -1
  29. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec.rb +8 -52
  30. data/sub/avm-eac_webapp_base0/avm-eac_webapp_base0.gemspec +4 -3
  31. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/deploy/scm.rb +3 -1
  32. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/deploy.rb +0 -1
  33. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/version.rb +1 -1
  34. data/sub/avm-git/avm-git.gemspec +1 -1
  35. data/sub/avm-git/lib/avm/git/version.rb +1 -1
  36. data/sub/avm-git/lib/avm/git.rb +0 -2
  37. data/sub/eac_fs/eac_fs.gemspec +3 -3
  38. data/sub/eac_fs/lib/eac_fs/comparator/build.rb +57 -0
  39. data/sub/eac_fs/lib/eac_fs/comparator/rename_file.rb +15 -0
  40. data/sub/eac_fs/lib/eac_fs/comparator.rb +18 -0
  41. data/sub/eac_fs/lib/eac_fs/version.rb +1 -1
  42. metadata +30 -16
  43. data/sub/avm/lib/avm/rspec/source_generator.rb +0 -16
  44. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/build/file.rb +0 -30
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d1d34a9bc1557787991919d4ec774433919c492c615358bbe55bbe39068f3cef
4
- data.tar.gz: c8cf8dbc1417d808ca55a0651b160d2c013292fa073aab923a4f1b184b236a9e
3
+ metadata.gz: b4a759c572f8acfb951cb1952ae3b1b1800bac5dada73d1907e8e8e2df9fa9e5
4
+ data.tar.gz: 4c5804436ac869605af3be470557cee27131fbe0be2d6f2191f778210d7c60cd
5
5
  SHA512:
6
- metadata.gz: 0d0fa178c202a85807f5d92d62931b2983e485e25b275ace4215220f864c4870f5503eea2c0ca11bbf3ca4f682c4a44c7e736d8aa2a969fc213742d4388f62bc
7
- data.tar.gz: d8f84b5fd9025491c75d98c9e93d993dfe956facf8b8a868888fb81c8bf57fa63636f812b99f3a95ff2882b532ba5103ec56bd882740e6bcced10aea12f75388
6
+ metadata.gz: dbe1a9779ef9fa3a6d11c4d47bd47d9a5812d7af616669ff01a503233c563f15d64ca857b3536ea89e3b767d28c8ea13f56b0615c4183cf965729433bffd0310
7
+ data.tar.gz: a2f36c26ff611a47052fcf57a31a9644c408160ae27dc637d0ebdbd8c3477fe564dcc56bc7ce38076d3be7ef6e6a6619cd1aab7e70db4fe19b3da55e20dbff04
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- eac_tools (0.39.0)
5
- avm (~> 0.53)
6
- avm-eac_asciidoctor_base0 (~> 0.7, >= 0.7.1)
4
+ eac_tools (0.41.0)
5
+ avm (~> 0.54)
6
+ avm-eac_asciidoctor_base0 (~> 0.9)
7
7
  avm-eac_generic_base0 (~> 0.8)
8
8
  avm-eac_latex_base0 (~> 0.3)
9
9
  avm-eac_php_base0 (~> 0.3)
@@ -11,8 +11,8 @@ PATH
11
11
  avm-eac_rails_base1 (~> 0.7)
12
12
  avm-eac_redmine_base0 (~> 0.16)
13
13
  avm-eac_redmine_plugin_base0 (~> 0.3)
14
- avm-eac_ruby_base1 (~> 0.26, >= 0.26.1)
15
- avm-eac_webapp_base0 (~> 0.12)
14
+ avm-eac_ruby_base1 (~> 0.26, >= 0.26.2)
15
+ avm-eac_webapp_base0 (~> 0.12, >= 0.12.2)
16
16
  avm-eac_wordpress_base0 (~> 0.2, >= 0.2.1)
17
17
  avm-tools (~> 0.142, >= 0.142.4)
18
18
  eac_ruby_utils (~> 0.106, >= 0.106.1)
@@ -33,10 +33,10 @@ PATH
33
33
  PATH
34
34
  remote: sub/avm-eac_asciidoctor_base0
35
35
  specs:
36
- avm-eac_asciidoctor_base0 (0.7.1)
37
- asciidoctor (~> 2.0, >= 2.0.17)
38
- avm-eac_webapp_base0 (~> 0.9)
39
- eac_ruby_utils (~> 0.104)
36
+ avm-eac_asciidoctor_base0 (0.9.0)
37
+ asciidoctor (~> 2.0, >= 2.0.18)
38
+ avm-eac_webapp_base0 (~> 0.12, >= 0.12.2)
39
+ eac_ruby_utils (~> 0.106, >= 0.106.1)
40
40
  os (~> 1.1, >= 1.1.4)
41
41
  rouge (~> 3.30)
42
42
 
@@ -108,20 +108,21 @@ PATH
108
108
  PATH
109
109
  remote: sub/avm-eac_ruby_base1
110
110
  specs:
111
- avm-eac_ruby_base1 (0.26.1)
112
- avm (~> 0.52)
113
- avm-eac_generic_base0 (~> 0.7)
114
- eac_ruby_utils (~> 0.106)
111
+ avm-eac_ruby_base1 (0.26.2)
112
+ avm (~> 0.54)
113
+ avm-eac_generic_base0 (~> 0.8)
114
+ eac_ruby_utils (~> 0.106, >= 0.106.1)
115
115
 
116
116
  PATH
117
117
  remote: sub/avm-eac_webapp_base0
118
118
  specs:
119
- avm-eac_webapp_base0 (0.12.0)
120
- avm (~> 0.52)
121
- avm-eac_generic_base0 (~> 0.7)
119
+ avm-eac_webapp_base0 (0.12.2)
120
+ avm (~> 0.54)
121
+ avm-eac_generic_base0 (~> 0.8)
122
122
  avm-eac_postgresql_base0 (~> 0.2)
123
123
  avm-eac_ubuntu_base0 (~> 0.3)
124
- eac_ruby_utils (~> 0.106)
124
+ avm-files (~> 0.6)
125
+ eac_ruby_utils (~> 0.106, >= 0.106.1)
125
126
 
126
127
  PATH
127
128
  remote: sub/avm-eac_wordpress_base0
@@ -144,8 +145,8 @@ PATH
144
145
  PATH
145
146
  remote: sub/avm-git
146
147
  specs:
147
- avm-git (0.9.0)
148
- avm (~> 0.53)
148
+ avm-git (0.10.0)
149
+ avm (~> 0.54)
149
150
  avm-files (~> 0.6)
150
151
  eac_git (~> 0.13)
151
152
  eac_ruby_utils (~> 0.106, >= 0.106.1)
@@ -172,12 +173,12 @@ PATH
172
173
  PATH
173
174
  remote: sub/avm
174
175
  specs:
175
- avm (0.53.0)
176
+ avm (0.54.0)
176
177
  aranha-parsers (~> 0.14, >= 0.14.4)
177
178
  eac_cli (~> 0.28)
178
179
  eac_config (~> 0.11, >= 0.11.1)
179
180
  eac_docker (~> 0.5)
180
- eac_fs (~> 0.12, >= 0.12.3)
181
+ eac_fs (~> 0.13)
181
182
  eac_git (~> 0.13)
182
183
  eac_ruby_utils (~> 0.106, >= 0.106.1)
183
184
  eac_templates (~> 0.3, >= 0.3.2)
@@ -210,10 +211,10 @@ PATH
210
211
  PATH
211
212
  remote: sub/eac_fs
212
213
  specs:
213
- eac_fs (0.12.3)
214
- content-type
215
- eac_ruby_utils (~> 0.70)
216
- ruby-filemagic
214
+ eac_fs (0.14.0)
215
+ content-type (~> 0.0, >= 0.0.2)
216
+ eac_ruby_utils (~> 0.106, >= 0.106.1)
217
+ ruby-filemagic (~> 0.7, >= 0.7.3)
217
218
 
218
219
  PATH
219
220
  remote: sub/eac_git
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacTools
4
- VERSION = '0.39.0'
4
+ VERSION = '0.41.0'
5
5
  end
data/sub/avm/avm.gemspec CHANGED
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
16
16
  s.add_dependency 'eac_cli', '~> 0.28'
17
17
  s.add_dependency 'eac_config', '~> 0.11', '>= 0.11.1'
18
18
  s.add_dependency 'eac_docker', '~> 0.5'
19
- s.add_dependency 'eac_fs', '~> 0.12', '>= 0.12.3'
19
+ s.add_dependency 'eac_fs', '~> 0.13'
20
20
  s.add_dependency 'eac_git', '~> 0.13'
21
21
  s.add_dependency 'eac_ruby_utils', '~> 0.106', '>= 0.106.1'
22
22
  s.add_dependency 'eac_templates', '~> 0.3', '>= 0.3.2'
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Rspec
7
+ module Setup
8
+ module SourceGenerator
9
+ DEFAULT_TARGET_BASENAME = 'generated_app'
10
+
11
+ # @return [Avm::Sources::Base]
12
+ def avm_source(stereotype_name, options = {})
13
+ options = options.dup
14
+ target_basename ||= options.delete(:target_basename) || DEFAULT_TARGET_BASENAME
15
+ target_path ||= options.delete(:target_path) || temp_dir.join(target_basename)
16
+ ::Avm::Registry.source_generators.detect(stereotype_name, target_path, options).perform
17
+ ::Avm::Registry.sources.detect(target_path)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,19 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'avm/rspec/source_generator'
3
+ require 'avm/rspec/setup/source_generator'
4
4
  require 'eac_ruby_utils/core_ext'
5
5
 
6
6
  module Avm
7
7
  module Rspec
8
8
  module Setup
9
9
  require_sub __FILE__
10
- EXAMPLES = %w[avm_file_formats_with_fixtures entries_values in_avm_registry
11
- not_in_avm_registry].freeze
10
+ EXAMPLES = %w[avm_file_formats_with_fixtures avm_source_generated entries_values
11
+ in_avm_registry not_in_avm_registry].freeze
12
12
 
13
13
  def self.extended(obj)
14
14
  obj.setup_examples
15
15
  obj.rspec_config.include(::Avm::Rspec::Setup::Launcher)
16
- obj.rspec_config.include(::Avm::Rspec::SourceGenerator)
16
+ obj.rspec_config.include(::Avm::Rspec::Setup::SourceGenerator)
17
17
  end
18
18
 
19
19
  def setup_examples
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_fs/comparator'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ ::RSpec.shared_examples 'avm_source_generated' do |spec_file, stereotype, options = {}|
7
+ fixtures_dir = ::Pathname.new('base_spec_files').expand_path(::File.dirname(spec_file))
8
+
9
+ fixtures_dir.children.select(&:directory?).each do |target_dir|
10
+ context "when target is \"#{target_dir.basename}\"" do
11
+ let(:source) { avm_source(stereotype, options.merge(target_basename: target_dir.basename)) }
12
+
13
+ it do
14
+ expect(fs_comparator.build(source.path)).to eq(fs_comparator.build(target_dir))
15
+ end
16
+ end
17
+ end
18
+
19
+ # @return [EacFs::Comparato]
20
+ def fs_comparator
21
+ ::EacFs::Comparator.new.rename_file('.gitignore', '_gitignore')
22
+ end
23
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Avm
4
- VERSION = '0.53.0'
4
+ VERSION = '0.54.0'
5
5
  end
@@ -12,11 +12,12 @@ Gem::Specification.new do |s|
12
12
 
13
13
  s.files = Dir['{lib,template}/**/*']
14
14
 
15
- s.add_dependency 'asciidoctor', '~> 2.0', '>= 2.0.17'
16
- s.add_dependency 'avm-eac_webapp_base0', '~> 0.9'
17
- s.add_dependency 'eac_ruby_utils', '~> 0.104'
15
+ s.add_dependency 'asciidoctor', '~> 2.0', '>= 2.0.18'
16
+ s.add_dependency 'avm-eac_webapp_base0', '~> 0.12', '>= 0.12.2'
17
+ s.add_dependency 'eac_ruby_utils', '~> 0.106', '>= 0.106.1'
18
18
  s.add_dependency 'os', '~> 1.1', '>= 1.1.4'
19
19
  s.add_dependency 'rouge', '~> 3.30'
20
20
 
21
+ s.add_development_dependency 'eac_fs', '~> 0.14'
21
22
  s.add_development_dependency 'eac_ruby_gem_support', '~> 0.2'
22
23
  end
@@ -12,7 +12,7 @@ module Avm
12
12
  ::Avm::EacAsciidoctorBase0::Sources::Build.new(
13
13
  project,
14
14
  ::Avm::EacAsciidoctorBase0::Sources::Build::OPTION_TARGET_DIRECTORY => build_dir
15
- ).run
15
+ ).perform
16
16
  end
17
17
 
18
18
  private
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/source_generators/base'
4
+ require 'eac_templates/core_ext'
5
+ require 'eac_ruby_utils/core_ext'
6
+
7
+ module Avm
8
+ module EacAsciidoctorBase0
9
+ module SourceGenerators
10
+ class Base < ::Avm::SourceGenerators::Base
11
+ OPTIONS = {}.freeze
12
+
13
+ enable_speaker
14
+ enable_simple_cache
15
+
16
+ class << self
17
+ def option_list
18
+ OPTIONS.inject(super) { |a, e| a.option(*e) }
19
+ end
20
+ end
21
+
22
+ def perform
23
+ template.apply(self, target_path)
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module EacAsciidoctorBase0
7
+ module SourceGenerators
8
+ require_sub __FILE__
9
+ end
10
+ end
11
+ end
@@ -8,7 +8,13 @@ module Avm
8
8
  module EacAsciidoctorBase0
9
9
  module Sources
10
10
  class Base < ::Avm::EacWebappBase0::Sources::Base
11
- MAIN_FILE_SUBPATH = ::Pathname.new('index.adoc')
11
+ CONTENT_DIRECTORY_SUBPATH = ::Pathname.new('content')
12
+ CONTENT_DOCUMENT_BASENAME = ::Pathname.new('body.adoc')
13
+ MAIN_FILE_SUBPATH = CONTENT_DIRECTORY_SUBPATH.join(CONTENT_DOCUMENT_BASENAME)
14
+
15
+ def content_directory
16
+ path.join(CONTENT_DIRECTORY_SUBPATH)
17
+ end
12
18
 
13
19
  def valid?
14
20
  path.join(MAIN_FILE_SUBPATH).file?
@@ -0,0 +1,84 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'asciidoctor'
4
+
5
+ module Avm
6
+ module EacAsciidoctorBase0
7
+ module Sources
8
+ class Build
9
+ class Document
10
+ ROOT_BODY_TARGET_BASENAME = 'index'
11
+
12
+ enable_simple_cache
13
+ enable_speaker
14
+ common_constructor :build, :parent_document, :basename
15
+
16
+ # Absolute path to the Asciidoctor file.
17
+ #
18
+ # @return [Pathname]
19
+ def body_source_path
20
+ root_source_path.join(
21
+ ::Avm::EacAsciidoctorBase0::Sources::Base::CONTENT_DOCUMENT_BASENAME
22
+ )
23
+ end
24
+
25
+ # Absolute path to the output of Asciidoctor's source file.
26
+ #
27
+ # @return [Pathname]
28
+ def body_target_path
29
+ build.target_directory.join(
30
+ parent_document.present? ? subpath : ROOT_BODY_TARGET_BASENAME
31
+ ).basename_sub('.*') { |b| "#{b}.html" }
32
+ end
33
+
34
+ def mydebug
35
+ root_source_path.print_debug(title: 'Document')
36
+ children.count.print_debug(label: 'children.count')
37
+ body_source_path.print_debug(label: 'body_source')
38
+ body_source_path.file?.print_debug(label: 'body_source.file?')
39
+ body_target_path.print_debug(label: 'body_target')
40
+ end
41
+
42
+ def perform
43
+ perform_self
44
+ perform_children
45
+ end
46
+
47
+ def perform_self
48
+ infov 'Building', root_source_path
49
+ ::Asciidoctor.convert_file(
50
+ body_source_path.to_path,
51
+ to_file: body_target_path.to_path, safe: :unsafe, mkdirs: true
52
+ )
53
+ end
54
+
55
+ def perform_children
56
+ children.each(&:perform)
57
+ end
58
+
59
+ def tree_documents_count
60
+ children.inject(1) { |a, e| a + e.tree_documents_count }
61
+ end
62
+
63
+ # Absolute path to the document's source root.
64
+ #
65
+ # @return [Pathname]
66
+ def root_source_path
67
+ build.source.content_directory.join(subpath)
68
+ end
69
+
70
+ def subpath
71
+ parent_document.if_present('.'.to_pathname) { |pd| pd.subpath.join(basename) }
72
+ end
73
+
74
+ private
75
+
76
+ def children_uncached
77
+ root_source_path.children.select(&:directory?)
78
+ .map { |path| self.class.new(build, self, path.basename) }
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
@@ -12,20 +12,24 @@ module Avm
12
12
  enable_simple_cache
13
13
  enable_listable
14
14
  lists.add_symbol :option, :target_directory
15
- common_constructor :project, :options, default: [{}] do
15
+ common_constructor :source, :options, default: [{}] do
16
16
  self.options = self.class.lists.option.hash_keys_validate!(options.symbolize_keys)
17
17
  end
18
18
 
19
19
  SOURCE_EXTNAMES = %w[.adoc .asc].freeze
20
20
 
21
- def run
22
- infov 'Files to build', source_files.count
21
+ def perform
22
+ infov 'Files to build', root_document.tree_documents_count
23
23
  target_directory.clear
24
- source_files.each(&:run)
24
+ root_document.perform
25
25
  end
26
26
 
27
27
  def default_target_directory
28
- project.path.join('build')
28
+ source.path.join('build')
29
+ end
30
+
31
+ def root_document
32
+ ::Avm::EacAsciidoctorBase0::Sources::Build::Document.new(self, nil, nil)
29
33
  end
30
34
 
31
35
  def target_directory
@@ -33,16 +37,6 @@ module Avm
33
37
  options[OPTION_TARGET_DIRECTORY] || default_target_directory
34
38
  )
35
39
  end
36
-
37
- def source_files_uncached
38
- r = []
39
- project.path.children.each do |child|
40
- next unless SOURCE_EXTNAMES.include?(child.extname)
41
-
42
- r << ::Avm::EacAsciidoctorBase0::Sources::Build::File.new(self, child.basename)
43
- end
44
- r
45
- end
46
40
  end
47
41
  end
48
42
  end
@@ -17,7 +17,7 @@ module Avm
17
17
 
18
18
  def run
19
19
  start_banner
20
- build.run
20
+ build.perform
21
21
  open
22
22
  end
23
23
 
@@ -40,7 +40,7 @@ module Avm
40
40
  end
41
41
 
42
42
  def open_path
43
- build.source_files.first.target_path
43
+ build.root_document.body_target_path
44
44
  end
45
45
 
46
46
  def start_banner
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module EacAsciidoctorBase0
5
- VERSION = '0.7.1'
5
+ VERSION = '0.9.0'
6
6
  end
7
7
  end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_asciidoctor_base0/source_generators/base'
4
+ require 'avm/source_generators/runner'
5
+
6
+ RSpec.describe ::Avm::EacAsciidoctorBase0::SourceGenerators::Base do
7
+ include_examples 'avm_source_generated', __FILE__, 'EacAsciidoctorBase0'
8
+ end
@@ -0,0 +1,9 @@
1
+ = EacAsciidoctorBase0 Generated Source =
2
+
3
+ == First Section
4
+
5
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean sapien.
6
+
7
+ == Second Section
8
+
9
+ Nam faucibus quis dui at laoreet. Pellentesque ut sapien est.
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_asciidoctor_base0/sources/base'
4
+ require 'avm/eac_asciidoctor_base0/sources/build'
5
+ require 'eac_fs/comparator'
6
+
7
+ ::RSpec.describe ::Avm::EacAsciidoctorBase0::Sources::Build do
8
+ let(:fixtures_dir) { __dir__.to_pathname.join('build_spec_files') }
9
+ let(:fs_comparator) { ::EacFs::Comparator.new.truncate_file('*.html') }
10
+ let(:instance) { described_class.new(source) }
11
+ let(:source) { avm_source('EacAsciidoctorBase0') }
12
+ let(:target_dir) { fixtures_dir }
13
+ let(:main_document) do
14
+ source.path.join(::Avm::EacAsciidoctorBase0::Sources::Base::MAIN_FILE_SUBPATH)
15
+ end
16
+
17
+ before do
18
+ %w[doc1 doc2 doc2/doc2_1].each do |subpath|
19
+ target_dir = source.content_directory.join(subpath)
20
+ target_dir.mkpath
21
+ ::FileUtils.cp(
22
+ main_document,
23
+ target_dir.join(::Avm::EacAsciidoctorBase0::Sources::Base::CONTENT_DOCUMENT_BASENAME)
24
+ )
25
+ end
26
+ instance.perform
27
+ end
28
+
29
+ it do
30
+ expect(fs_comparator.build(instance.target_directory)).to eq(fs_comparator.build(target_dir))
31
+ end
32
+ end
@@ -2,3 +2,7 @@
2
2
 
3
3
  require 'eac_ruby_utils/rspec/default_setup'
4
4
  ::EacRubyUtils::Rspec.default_setup_create(::File.expand_path('..', __dir__))
5
+
6
+ require 'eac_ruby_utils/speaker'
7
+ require 'eac_ruby_utils/rspec/stub_speaker'
8
+ ::EacRubyUtils::Speaker.context.push(::EacRubyUtils::Rspec::StubSpeaker.new)
@@ -0,0 +1,9 @@
1
+ = EacAsciidoctorBase0 Generated Source =
2
+
3
+ == First Section
4
+
5
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean sapien.
6
+
7
+ == Second Section
8
+
9
+ Nam faucibus quis dui at laoreet. Pellentesque ut sapien est.
@@ -12,9 +12,9 @@ Gem::Specification.new do |s|
12
12
 
13
13
  s.files = Dir['{lib,locale,template}/**/*']
14
14
 
15
- s.add_dependency 'avm', '~> 0.52'
16
- s.add_dependency 'avm-eac_generic_base0', '~> 0.7'
17
- s.add_dependency 'eac_ruby_utils', '~> 0.106'
15
+ s.add_dependency 'avm', '~> 0.54'
16
+ s.add_dependency 'avm-eac_generic_base0', '~> 0.8'
17
+ s.add_dependency 'eac_ruby_utils', '~> 0.106', '>= 0.106.1'
18
18
 
19
19
  s.add_development_dependency 'aranha-parsers', '~> 0.14', '>= 0.14.1'
20
20
  s.add_development_dependency 'eac_ruby_gem_support', '~> 0.5.1'
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module EacRubyBase1
5
- VERSION = '0.26.1'
5
+ VERSION = '0.26.2'
6
6
  end
7
7
  end
@@ -4,59 +4,15 @@ require 'avm/eac_ruby_base1/source_generators/base'
4
4
  require 'avm/source_generators/runner'
5
5
 
6
6
  RSpec.describe ::Avm::EacRubyBase1::SourceGenerators::Base do
7
- let(:targets_root) { ::Pathname.new('base_spec_files').expand_path(__dir__) }
7
+ include_examples 'avm_source_generated', __FILE__, 'EacRubyBase1',
8
+ {
9
+ 'eac-ruby-utils-version' => '0.35.0',
10
+ 'eac-ruby-gem-support-version' => '0.2.0'
11
+ }
8
12
 
9
- %w[mygem dashed-mygem].each do |gem_name|
10
- context "when runner is executed for #{gem_name}" do
11
- let(:stereotype) { 'EacRubyBase1' }
12
- let(:target_dir) { targets_root.join(gem_name) }
13
- let(:temp_dir) { ::EacRubyUtils::Fs::Temp.directory }
14
- let(:gem_path) { temp_dir.join(gem_name) }
15
- let(:argv) do
16
- %w[--option eac-ruby-utils-version:0.35.0 --option eac-ruby-gem-support-version:0.2.0] +
17
- [stereotype, gem_path.to_path]
18
- end
13
+ alias_method :fs_comparator_super, :fs_comparator
19
14
 
20
- before do
21
- ::Avm::SourceGenerators::Runner.run(argv: argv)
22
- end
23
-
24
- after do
25
- temp_dir.remove
26
- end
27
-
28
- it do
29
- expect(directory_to_h(gem_path)).to eq(directory_to_h(target_dir))
30
- end
31
- end
32
- end
33
-
34
- def directory_to_h(dir)
35
- dir.children.map do |child|
36
- [fs_object_basename(child), fs_object_to_h(child)]
37
- end.to_h
38
- end
39
-
40
- # @return [String]
41
- def fs_object_basename(obj)
42
- r = obj.basename.to_path
43
- r = '.gitignore' if r == '_gitignore'
44
- r
45
- end
46
-
47
- def fs_object_to_h(obj)
48
- if obj.file?
49
- file_to_h(obj)
50
- elsif obj.directory?
51
- directory_to_h(obj)
52
- else
53
- raise "Unknown filesystem object \"#{obj}\""
54
- end
55
- end
56
-
57
- def file_to_h(file)
58
- return "TRUNCATED\n" if file.basename.to_path == 'Gemfile.lock'
59
-
60
- file.read
15
+ def fs_comparator
16
+ fs_comparator_super.truncate_file('Gemfile.lock')
61
17
  end
62
18
  end
@@ -12,11 +12,12 @@ Gem::Specification.new do |s|
12
12
 
13
13
  s.files = Dir['{lib,template}/**/*']
14
14
 
15
- s.add_dependency 'avm', '~> 0.52'
16
- s.add_dependency 'avm-eac_generic_base0', '~> 0.7'
15
+ s.add_dependency 'avm', '~> 0.54'
16
+ s.add_dependency 'avm-eac_generic_base0', '~> 0.8'
17
17
  s.add_dependency 'avm-eac_postgresql_base0', '~> 0.2'
18
18
  s.add_dependency 'avm-eac_ubuntu_base0', '~> 0.3'
19
- s.add_dependency 'eac_ruby_utils', '~> 0.106'
19
+ s.add_dependency 'avm-files', '~> 0.6'
20
+ s.add_dependency 'eac_ruby_utils', '~> 0.106', '>= 0.106.1'
20
21
 
21
22
  s.add_development_dependency 'eac_ruby_gem_support', '~> 0.2'
22
23
  end
@@ -5,6 +5,8 @@ module Avm
5
5
  module Instances
6
6
  class Deploy
7
7
  module Scm
8
+ DEFAULT_REMOTE_NAME = 'origin'
9
+
8
10
  def commit_reference_uncached
9
11
  git_fetch
10
12
  r = git.rev_parse(git_reference_found)
@@ -35,7 +37,7 @@ module Avm
35
37
  end
36
38
 
37
39
  def git_remote_name
38
- ::Avm::Git::DEFAULT_REMOTE_NAME
40
+ DEFAULT_REMOTE_NAME
39
41
  end
40
42
 
41
43
  def git_repository_path
@@ -2,7 +2,6 @@
2
2
 
3
3
  require 'active_support/callbacks'
4
4
  require 'avm/entries/jobs/base'
5
- require 'avm/git'
6
5
  require 'eac_ruby_utils/core_ext'
7
6
  require 'eac_templates/core_ext'
8
7
  require 'net/http'
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module EacWebappBase0
5
- VERSION = '0.12.0'
5
+ VERSION = '0.12.2'
6
6
  end
7
7
  end
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
12
12
 
13
13
  s.files = Dir['{lib}/**/*']
14
14
 
15
- s.add_dependency 'avm', '~> 0.53'
15
+ s.add_dependency 'avm', '~> 0.54'
16
16
  s.add_dependency 'avm-files', '~> 0.6'
17
17
  s.add_dependency 'eac_git', '~> 0.13'
18
18
  s.add_dependency 'eac_ruby_utils', '~> 0.106', '>= 0.106.1'
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module Git
5
- VERSION = '0.9.0'
5
+ VERSION = '0.10.0'
6
6
  end
7
7
  end
@@ -5,7 +5,5 @@ require 'eac_ruby_utils/core_ext'
5
5
  module Avm
6
6
  module Git
7
7
  require_sub __FILE__
8
-
9
- DEFAULT_REMOTE_NAME = 'origin'
10
8
  end
11
9
  end
@@ -12,9 +12,9 @@ Gem::Specification.new do |s|
12
12
 
13
13
  s.files = Dir['{lib}/**/*']
14
14
 
15
- s.add_dependency 'content-type'
16
- s.add_dependency 'eac_ruby_utils', '~> 0.70'
17
- s.add_dependency 'ruby-filemagic'
15
+ s.add_dependency 'content-type', '~> 0.0', '>= 0.0.2'
16
+ s.add_dependency 'eac_ruby_utils', '~> 0.106', '>= 0.106.1'
17
+ s.add_dependency 'ruby-filemagic', '~> 0.7', '>= 0.7.3'
18
18
 
19
19
  s.add_development_dependency 'eac_ruby_gem_support', '~> 0.5.1'
20
20
  end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EacFs
6
+ class Comparator
7
+ class Build
8
+ TRUNCATE_FILE_CONTENT = "__TRUNCATED__\n"
9
+
10
+ enable_method_class
11
+ common_constructor :comparator, :root
12
+ delegate :rename_files, :truncate_files, to: :comparator
13
+
14
+ # @return [Hash]
15
+ def result
16
+ build(root)
17
+ end
18
+
19
+ private
20
+
21
+ def build(obj)
22
+ if obj.file?
23
+ build_file(obj)
24
+ elsif obj.directory?
25
+ build_directory(obj)
26
+ else
27
+ raise "Unknown filesystem object \"#{obj}\""
28
+ end
29
+ end
30
+
31
+ # @param dir [Pathname]
32
+ # @return [Hash]
33
+ def build_directory(dir)
34
+ dir.children.map do |child|
35
+ [fs_object_basename(child), build(child)]
36
+ end.to_h
37
+ end
38
+
39
+ # @param file [Pathname]
40
+ # @return [Hash]
41
+ def build_file(file)
42
+ truncate_file?(file) ? TRUNCATE_FILE_CONTENT : file.read
43
+ end
44
+
45
+ # @return [String]
46
+ def fs_object_basename(obj)
47
+ rename_files.inject(obj.basename.to_path) { |a, e| e.apply(a) }
48
+ end
49
+
50
+ def truncate_file?(file)
51
+ truncate_files.any? do |pattern|
52
+ file.basename.fnmatch?(pattern)
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EacFs
6
+ class Comparator
7
+ class RenameFile
8
+ common_constructor :from, :to
9
+
10
+ def apply(basename)
11
+ basename == from ? to : basename
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EacFs
6
+ class Comparator
7
+ require_sub __FILE__, require_dependency: true
8
+
9
+ enable_immutable
10
+ immutable_accessor :rename_file, :truncate_file, type: :array
11
+
12
+ alias rename_file_push rename_file
13
+
14
+ def rename_file(from, to)
15
+ rename_file_push(::EacFs::Comparator::RenameFile.new(from, to))
16
+ end
17
+ end
18
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacFs
4
- VERSION = '0.12.3'
4
+ VERSION = '0.14.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eac_tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.39.0
4
+ version: 0.41.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Put here the authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-28 00:00:00.000000000 Z
11
+ date: 2022-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: avm
@@ -16,34 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.53'
19
+ version: '0.54'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.53'
26
+ version: '0.54'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: avm-eac_asciidoctor_base0
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.7'
34
- - - ">="
35
- - !ruby/object:Gem::Version
36
- version: 0.7.1
33
+ version: '0.9'
37
34
  type: :runtime
38
35
  prerelease: false
39
36
  version_requirements: !ruby/object:Gem::Requirement
40
37
  requirements:
41
38
  - - "~>"
42
39
  - !ruby/object:Gem::Version
43
- version: '0.7'
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: 0.7.1
40
+ version: '0.9'
47
41
  - !ruby/object:Gem::Dependency
48
42
  name: avm-eac_generic_base0
49
43
  requirement: !ruby/object:Gem::Requirement
@@ -157,7 +151,7 @@ dependencies:
157
151
  version: '0.26'
158
152
  - - ">="
159
153
  - !ruby/object:Gem::Version
160
- version: 0.26.1
154
+ version: 0.26.2
161
155
  type: :runtime
162
156
  prerelease: false
163
157
  version_requirements: !ruby/object:Gem::Requirement
@@ -167,7 +161,7 @@ dependencies:
167
161
  version: '0.26'
168
162
  - - ">="
169
163
  - !ruby/object:Gem::Version
170
- version: 0.26.1
164
+ version: 0.26.2
171
165
  - !ruby/object:Gem::Dependency
172
166
  name: avm-eac_webapp_base0
173
167
  requirement: !ruby/object:Gem::Requirement
@@ -175,6 +169,9 @@ dependencies:
175
169
  - - "~>"
176
170
  - !ruby/object:Gem::Version
177
171
  version: '0.12'
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: 0.12.2
178
175
  type: :runtime
179
176
  prerelease: false
180
177
  version_requirements: !ruby/object:Gem::Requirement
@@ -182,6 +179,9 @@ dependencies:
182
179
  - - "~>"
183
180
  - !ruby/object:Gem::Version
184
181
  version: '0.12'
182
+ - - ">="
183
+ - !ruby/object:Gem::Version
184
+ version: 0.12.2
185
185
  - !ruby/object:Gem::Dependency
186
186
  name: avm-eac_wordpress_base0
187
187
  requirement: !ruby/object:Gem::Requirement
@@ -320,16 +320,26 @@ files:
320
320
  - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/deploy.rb
321
321
  - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/runners.rb
322
322
  - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/runners/base.rb
323
+ - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/source_generators.rb
324
+ - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/source_generators/base.rb
323
325
  - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources.rb
324
326
  - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/base.rb
325
327
  - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/build.rb
326
- - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/build/file.rb
328
+ - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/build/document.rb
327
329
  - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners.rb
328
330
  - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/build.rb
329
331
  - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/version.rb
332
+ - sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/source_generators/base_spec.rb
333
+ - sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/source_generators/base_spec_files/no_options/content/body.adoc
330
334
  - sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/sources/base_spec.rb
335
+ - sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/sources/build_spec.rb
336
+ - sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/sources/build_spec_files/doc1.html
337
+ - sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/sources/build_spec_files/doc2.html
338
+ - sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/sources/build_spec_files/doc2/doc2_1.html
339
+ - sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/sources/build_spec_files/index.html
331
340
  - sub/avm-eac_asciidoctor_base0/spec/rubocop_spec.rb
332
341
  - sub/avm-eac_asciidoctor_base0/spec/spec_helper.rb
342
+ - sub/avm-eac_asciidoctor_base0/template/avm/eac_asciidoctor_base0/source_generators/base/content/body.adoc
333
343
  - sub/avm-eac_generic_base0/Gemfile
334
344
  - sub/avm-eac_generic_base0/avm-eac_generic_base0.gemspec
335
345
  - sub/avm-eac_generic_base0/lib/avm/eac_generic_base0.rb
@@ -1044,11 +1054,12 @@ files:
1044
1054
  - sub/avm/lib/avm/rspec.rb
1045
1055
  - sub/avm/lib/avm/rspec/setup.rb
1046
1056
  - sub/avm/lib/avm/rspec/setup/launcher.rb
1057
+ - sub/avm/lib/avm/rspec/setup/source_generator.rb
1047
1058
  - sub/avm/lib/avm/rspec/shared_examples/avm_file_formats_with_fixtures.rb
1059
+ - sub/avm/lib/avm/rspec/shared_examples/avm_source_generated.rb
1048
1060
  - sub/avm/lib/avm/rspec/shared_examples/entries_values.rb
1049
1061
  - sub/avm/lib/avm/rspec/shared_examples/in_avm_registry.rb
1050
1062
  - sub/avm/lib/avm/rspec/shared_examples/not_in_avm_registry.rb
1051
- - sub/avm/lib/avm/rspec/source_generator.rb
1052
1063
  - sub/avm/lib/avm/runners/base.rb
1053
1064
  - sub/avm/lib/avm/scms/base.rb
1054
1065
  - sub/avm/lib/avm/scms/commit.rb
@@ -1223,6 +1234,9 @@ files:
1223
1234
  - sub/eac_fs/eac_fs.gemspec
1224
1235
  - sub/eac_fs/lib/eac_fs.rb
1225
1236
  - sub/eac_fs/lib/eac_fs/cached_download.rb
1237
+ - sub/eac_fs/lib/eac_fs/comparator.rb
1238
+ - sub/eac_fs/lib/eac_fs/comparator/build.rb
1239
+ - sub/eac_fs/lib/eac_fs/comparator/rename_file.rb
1226
1240
  - sub/eac_fs/lib/eac_fs/contexts.rb
1227
1241
  - sub/eac_fs/lib/eac_fs/file_info.rb
1228
1242
  - sub/eac_fs/lib/eac_fs/logs.rb
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/core_ext'
4
-
5
- module Avm
6
- module Rspec
7
- module SourceGenerator
8
- # @return [Avm::Sources::Base]
9
- def avm_source(stereotype_name, options = {})
10
- target_path ||= options.delete(:target_path) || temp_dir.join('generated_app')
11
- ::Avm::Registry.source_generators.detect(stereotype_name, target_path, options).perform
12
- ::Avm::Registry.sources.detect(target_path)
13
- end
14
- end
15
- end
16
- end
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'asciidoctor'
4
-
5
- module Avm
6
- module EacAsciidoctorBase0
7
- module Sources
8
- class Build
9
- class File
10
- enable_speaker
11
- common_constructor :build, :subpath
12
-
13
- def run
14
- infov 'Building', subpath
15
- ::Asciidoctor.convert_file source_path.to_path,
16
- to_file: target_path.to_path, safe: :unsafe, mkdirs: true
17
- end
18
-
19
- def source_path
20
- build.project.path.join(subpath)
21
- end
22
-
23
- def target_path
24
- build.target_directory.join(subpath).basename_sub('.*') { |b| "#{b}.html" }
25
- end
26
- end
27
- end
28
- end
29
- end
30
- end