eac_tools 0.39.0 → 0.41.0

Sign up to get free protection for your applications and to get access to all the features.
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