eac_tools 0.40.0 → 0.42.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +29 -29
  3. data/lib/eac_tools/version.rb +1 -1
  4. data/sub/avm/avm.gemspec +4 -4
  5. data/sub/avm/lib/avm/applications/base.rb +24 -3
  6. data/sub/avm/lib/avm/entries/entry.rb +5 -0
  7. data/sub/avm/lib/avm/instances/base.rb +5 -12
  8. data/sub/avm/lib/avm/instances/ids.rb +30 -0
  9. data/sub/avm/lib/avm/rspec/setup.rb +8 -0
  10. data/sub/avm/lib/avm/sources/base/instance.rb +2 -14
  11. data/sub/avm/lib/avm/version.rb +1 -1
  12. data/sub/avm/spec/spec_helper.rb +1 -1
  13. data/sub/avm-eac_asciidoctor_base0/avm-eac_asciidoctor_base0.gemspec +3 -2
  14. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/base.rb +18 -0
  15. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/header_macro_value.rb +59 -0
  16. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/pre_process_line.rb +50 -0
  17. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document.rb +84 -0
  18. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/{sources → instances}/build.rb +15 -16
  19. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/deploy.rb +4 -4
  20. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/source_generators/base.rb +0 -3
  21. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/base.rb +7 -1
  22. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/build.rb +7 -5
  23. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/version.rb +1 -1
  24. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build/document_spec.rb +32 -0
  25. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build/document_spec_files/pre_processed_root_body.adoc +15 -0
  26. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec.rb +44 -0
  27. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/doc1.html +1 -0
  28. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/doc2/doc2_1.html +1 -0
  29. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/doc2.html +1 -0
  30. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/index.html +1 -0
  31. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/source_generators/base_spec_files/no_options/{index.adoc → content/body.adoc} +1 -0
  32. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/sources/base_spec.rb +14 -0
  33. data/sub/avm-eac_asciidoctor_base0/spec/spec_helper.rb +1 -0
  34. data/sub/avm-eac_asciidoctor_base0/template/avm/eac_asciidoctor_base0/source_generators/base/{index.adoc → content/body.adoc} +1 -0
  35. data/sub/avm-eac_ruby_base1/avm-eac_ruby_base1.gemspec +2 -2
  36. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/dependencies.rb +27 -0
  37. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/gemfile_lock.rb +27 -0
  38. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/options.rb +30 -0
  39. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/version_builder.rb +52 -0
  40. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base.rb +1 -66
  41. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/version.rb +1 -1
  42. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec.rb +2 -1
  43. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/deploy/scm.rb +3 -1
  44. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/version.rb +1 -1
  45. data/sub/avm-git/avm-git.gemspec +1 -1
  46. data/sub/avm-git/lib/avm/git/version.rb +1 -1
  47. data/sub/avm-git/lib/avm/git.rb +0 -2
  48. data/sub/eac_cli/eac_cli.gemspec +2 -2
  49. data/sub/eac_cli/lib/eac_cli/config/entry.rb +4 -0
  50. data/sub/eac_cli/lib/eac_cli/version.rb +1 -1
  51. data/sub/eac_config/eac_config.gemspec +2 -2
  52. data/sub/eac_config/lib/eac_config/entry/not_found_error.rb +13 -0
  53. data/sub/eac_config/lib/eac_config/entry.rb +7 -0
  54. data/sub/eac_config/lib/eac_config/version.rb +1 -1
  55. data/sub/eac_fs/lib/eac_fs/comparator/build.rb +57 -0
  56. data/sub/eac_fs/lib/eac_fs/comparator.rb +1 -37
  57. data/sub/eac_fs/lib/eac_fs/version.rb +1 -1
  58. data/sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup.rb +9 -0
  59. data/sub/eac_ruby_utils/lib/eac_ruby_utils/settings_provider/setting_value.rb +15 -6
  60. data/sub/eac_ruby_utils/lib/eac_ruby_utils/settings_provider.rb +5 -1
  61. data/sub/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
  62. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/settings_provider_spec.rb +9 -2
  63. metadata +32 -28
  64. 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: 670556104ec1defb09cd69efb0d5f94f4711a72fed2c549f94dd488af490b798
4
- data.tar.gz: ecc472e01168e199c0624a36e11978cc4b1d76c9dd4d8dd921ad2abefea8b8b4
3
+ metadata.gz: 0cc7fffb0a2dc335ea8d9bb791d3aac22b783dbf2556d7812ece97708fee0be9
4
+ data.tar.gz: 23081d70c8762bca09ee9389b361f3b0fed45f30a09c7649f9caaf28948559f3
5
5
  SHA512:
6
- metadata.gz: 1eb9a269c7e030fe373164ff7f9f96fed54d85a60e86df00953c723661e531a7fe944b41cede66c5788ef8f6df0bc1cc5f794703de80b33926cf130d3e362823
7
- data.tar.gz: de3f8c4948584be737ce7d9718ee557d2eb3f49cc91d2469c45b87d057cf48c41fadc1d37ae86a1353d1223d268c626420f1c7b866a5b241173f70b89750b5f3
6
+ metadata.gz: 10510fc8717ce648a96da24ca0796ac2bc0f4b57424dc7efad470b86cd71585b3fbf8dd9df03818a6b4f2d739accc8f7758925d65f9bbfdf04dec360bf82fca4
7
+ data.tar.gz: 17442df47bb3b1944d1ce2a4b0b976aaf36edb54e6c13aad74655fc32295159caa5e31835a08b2853ea63b4db2f5311f6823af588ec2b649ca3d27f4a1dd0ea0
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- eac_tools (0.40.0)
5
- avm (~> 0.54)
6
- avm-eac_asciidoctor_base0 (~> 0.8)
4
+ eac_tools (0.42.0)
5
+ avm (~> 0.55)
6
+ avm-eac_asciidoctor_base0 (~> 0.10)
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,11 +11,11 @@ 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.2)
15
- avm-eac_webapp_base0 (~> 0.12, >= 0.12.1)
14
+ avm-eac_ruby_base1 (~> 0.27)
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
- eac_ruby_utils (~> 0.106, >= 0.106.1)
18
+ eac_ruby_utils (~> 0.107)
19
19
 
20
20
  PATH
21
21
  remote: sub/aranha-parsers
@@ -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.8.0)
36
+ avm-eac_asciidoctor_base0 (0.10.0)
37
37
  asciidoctor (~> 2.0, >= 2.0.18)
38
- avm-eac_webapp_base0 (~> 0.12, >= 0.12.1)
39
- eac_ruby_utils (~> 0.106, >= 0.106.1)
38
+ avm-eac_webapp_base0 (~> 0.12, >= 0.12.2)
39
+ eac_ruby_utils (~> 0.107)
40
40
  os (~> 1.1, >= 1.1.4)
41
41
  rouge (~> 3.30)
42
42
 
@@ -108,15 +108,15 @@ PATH
108
108
  PATH
109
109
  remote: sub/avm-eac_ruby_base1
110
110
  specs:
111
- avm-eac_ruby_base1 (0.26.2)
112
- avm (~> 0.54)
111
+ avm-eac_ruby_base1 (0.27.0)
112
+ avm (~> 0.55)
113
113
  avm-eac_generic_base0 (~> 0.8)
114
- eac_ruby_utils (~> 0.106, >= 0.106.1)
114
+ eac_ruby_utils (~> 0.107)
115
115
 
116
116
  PATH
117
117
  remote: sub/avm-eac_webapp_base0
118
118
  specs:
119
- avm-eac_webapp_base0 (0.12.1)
119
+ avm-eac_webapp_base0 (0.12.2)
120
120
  avm (~> 0.54)
121
121
  avm-eac_generic_base0 (~> 0.8)
122
122
  avm-eac_postgresql_base0 (~> 0.2)
@@ -145,8 +145,8 @@ PATH
145
145
  PATH
146
146
  remote: sub/avm-git
147
147
  specs:
148
- avm-git (0.9.0)
149
- avm (~> 0.53)
148
+ avm-git (0.10.0)
149
+ avm (~> 0.54)
150
150
  avm-files (~> 0.6)
151
151
  eac_git (~> 0.13)
152
152
  eac_ruby_utils (~> 0.106, >= 0.106.1)
@@ -173,14 +173,14 @@ PATH
173
173
  PATH
174
174
  remote: sub/avm
175
175
  specs:
176
- avm (0.54.0)
176
+ avm (0.55.0)
177
177
  aranha-parsers (~> 0.14, >= 0.14.4)
178
- eac_cli (~> 0.28)
179
- eac_config (~> 0.11, >= 0.11.1)
178
+ eac_cli (~> 0.29)
179
+ eac_config (~> 0.12)
180
180
  eac_docker (~> 0.5)
181
- eac_fs (~> 0.13)
181
+ eac_fs (~> 0.14)
182
182
  eac_git (~> 0.13)
183
- eac_ruby_utils (~> 0.106, >= 0.106.1)
183
+ eac_ruby_utils (~> 0.107)
184
184
  eac_templates (~> 0.3, >= 0.3.2)
185
185
  filesize (~> 0.2)
186
186
  htmlbeautifier (~> 1.4, >= 1.4.2)
@@ -189,17 +189,17 @@ PATH
189
189
  PATH
190
190
  remote: sub/eac_cli
191
191
  specs:
192
- eac_cli (0.28.0)
192
+ eac_cli (0.29.0)
193
193
  colorize (~> 0.8, >= 0.8.1)
194
- eac_config (~> 0.11, >= 0.11.1)
195
- eac_ruby_utils (~> 0.103)
194
+ eac_config (~> 0.12)
195
+ eac_ruby_utils (~> 0.107)
196
196
 
197
197
  PATH
198
198
  remote: sub/eac_config
199
199
  specs:
200
- eac_config (0.11.1)
201
- addressable (~> 2.8)
202
- eac_ruby_utils (~> 0.102)
200
+ eac_config (0.12.0)
201
+ addressable (~> 2.8, >= 2.8.1)
202
+ eac_ruby_utils (~> 0.107)
203
203
 
204
204
  PATH
205
205
  remote: sub/eac_docker
@@ -211,7 +211,7 @@ PATH
211
211
  PATH
212
212
  remote: sub/eac_fs
213
213
  specs:
214
- eac_fs (0.13.0)
214
+ eac_fs (0.14.0)
215
215
  content-type (~> 0.0, >= 0.0.2)
216
216
  eac_ruby_utils (~> 0.106, >= 0.106.1)
217
217
  ruby-filemagic (~> 0.7, >= 0.7.3)
@@ -235,7 +235,7 @@ PATH
235
235
  PATH
236
236
  remote: sub/eac_ruby_utils
237
237
  specs:
238
- eac_ruby_utils (0.106.1)
238
+ eac_ruby_utils (0.107.0)
239
239
  activesupport (>= 4, < 7)
240
240
  addressable (~> 2.8, >= 2.8.1)
241
241
  bundler
@@ -370,7 +370,7 @@ GEM
370
370
  tzinfo (2.0.5)
371
371
  concurrent-ruby (~> 1.0)
372
372
  unicode-display_width (1.6.1)
373
- zeitwerk (2.6.1)
373
+ zeitwerk (2.6.4)
374
374
  zlib (2.1.1)
375
375
 
376
376
  PLATFORMS
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacTools
4
- VERSION = '0.40.0'
4
+ VERSION = '0.42.0'
5
5
  end
data/sub/avm/avm.gemspec CHANGED
@@ -13,12 +13,12 @@ Gem::Specification.new do |s|
13
13
  s.files = Dir['{lib}/**/*']
14
14
 
15
15
  s.add_dependency 'aranha-parsers', '~> 0.14', '>= 0.14.4'
16
- s.add_dependency 'eac_cli', '~> 0.28'
17
- s.add_dependency 'eac_config', '~> 0.11', '>= 0.11.1'
16
+ s.add_dependency 'eac_cli', '~> 0.29'
17
+ s.add_dependency 'eac_config', '~> 0.12'
18
18
  s.add_dependency 'eac_docker', '~> 0.5'
19
- s.add_dependency 'eac_fs', '~> 0.13'
19
+ s.add_dependency 'eac_fs', '~> 0.14'
20
20
  s.add_dependency 'eac_git', '~> 0.13'
21
- s.add_dependency 'eac_ruby_utils', '~> 0.106', '>= 0.106.1'
21
+ s.add_dependency 'eac_ruby_utils', '~> 0.107'
22
22
  s.add_dependency 'eac_templates', '~> 0.3', '>= 0.3.2'
23
23
  s.add_dependency 'filesize', '~> 0.2'
24
24
  s.add_dependency 'htmlbeautifier', '~> 1.4', '>= 1.4.2'
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'avm/entries/base'
4
+ require 'avm/instances/ids'
4
5
  require 'avm/registry'
5
6
  require 'eac_ruby_utils/core_ext'
6
7
 
@@ -22,23 +23,43 @@ module Avm
22
23
  end
23
24
 
24
25
  def instance(suffix)
25
- ::Avm::Instances::Base.new(self, suffix)
26
+ stereotype.instance_class.new(self, suffix)
26
27
  end
27
28
 
28
29
  def name
29
30
  entry(::Avm::Instances::EntryKeys::NAME).read
30
31
  end
31
32
 
33
+ # @return [String]
34
+ def local_instance_id
35
+ ::Avm::Instances::Ids.build(id, local_instance_suffix)
36
+ end
37
+
38
+ # @return [Pathname]
39
+ def local_source_path
40
+ local_source_path_entry.value!.to_pathname
41
+ end
42
+
43
+ # @return [EacConfig::Entry]
44
+ def local_source_path_entry
45
+ ::EacConfig::Node.context.current.entry([local_instance_id, 'install', 'path'])
46
+ end
47
+
48
+ # @return [String]
49
+ def local_instance_suffix
50
+ LOCAL_INSTANCE_SUFFIX
51
+ end
52
+
32
53
  private
33
54
 
34
55
  # @return [Avm::Instances::Base]
35
56
  def local_instance_uncached
36
- instance(LOCAL_INSTANCE_SUFFIX)
57
+ instance(local_instance_suffix)
37
58
  end
38
59
 
39
60
  # @return [Avm::Sources::Base]
40
61
  def local_source_uncached
41
- ::Avm::Registry.sources.detect(local_instance.install_path)
62
+ ::Avm::Registry.sources.detect(local_source_path)
42
63
  end
43
64
  end
44
65
  end
@@ -46,6 +46,11 @@ module Avm
46
46
  optional_value || read
47
47
  end
48
48
 
49
+ def value!
50
+ optional_value.if_present { |v| return v }
51
+ context_entry.value!
52
+ end
53
+
49
54
  def write(value)
50
55
  context_entry.value = value
51
56
  end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'avm/instances/ids'
3
4
  require 'avm/with/application_stereotype'
4
5
  require 'avm/with/extra_subcommands'
5
6
  require 'eac_ruby_utils/require_sub'
@@ -23,18 +24,9 @@ module Avm
23
24
 
24
25
  class << self
25
26
  def by_id(id)
26
- application_id, suffix = parse_id(id)
27
+ parsed_id = ::Avm::Instances::Ids.parse!(id)
27
28
  require 'avm/applications/base'
28
- new(::Avm::Applications::Base.new(application_id), suffix)
29
- end
30
-
31
- private
32
-
33
- def parse_id(id)
34
- m = ID_PATTERN.match(id)
35
- return [m[1], m[2]] if m
36
-
37
- raise "ID Pattern no matched: \"#{id}\""
29
+ new(::Avm::Applications::Base.new(parsed_id.application_id), parsed_id.instance_suffix)
38
30
  end
39
31
  end
40
32
 
@@ -42,8 +34,9 @@ module Avm
42
34
  self.suffix = suffix.to_s
43
35
  end
44
36
 
37
+ # @return [String]
45
38
  def id
46
- "#{application.id}_#{suffix}"
39
+ ::Avm::Instances::Ids.build(application.id, suffix)
47
40
  end
48
41
 
49
42
  def to_s
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Instances
7
+ module Ids
8
+ ID_PARTS_SEPARATOR = '_'
9
+ ID_PATTERN = /\A([a-z0-9]+(?:\-[a-z0-9]+)*)_(.+)\z/.freeze
10
+ ID_PARSER = ID_PATTERN.to_parser do |m|
11
+ ::Struct.new(:application_id, :instance_suffix).new(m[1], m[2])
12
+ end
13
+
14
+ class << self
15
+ # @param application_id [String]
16
+ # @param instance_suffix [String]
17
+ # @return [String]
18
+ def build(application_id, instance_suffix)
19
+ [application_id, instance_suffix].join(ID_PARTS_SEPARATOR)
20
+ end
21
+
22
+ # @param id [String]
23
+ # @return [String]
24
+ def parse!(id)
25
+ ID_PARSER.parse!(id)
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -21,6 +21,14 @@ module Avm
21
21
  require "avm/rspec/shared_examples/#{example}"
22
22
  end
23
23
  end
24
+
25
+ # @return [self]
26
+ def stub_avm_contexts
27
+ stub_eac_config_node
28
+ stub_eac_speaker
29
+
30
+ self
31
+ end
24
32
  end
25
33
  end
26
34
  end
@@ -7,20 +7,8 @@ module Avm
7
7
  module Sources
8
8
  class Base
9
9
  module Instance
10
- DEFAULT_INSTANCE_SUFFIX = 'dev'
11
-
12
- def instance_suffix
13
- DEFAULT_INSTANCE_SUFFIX
14
- end
15
-
16
- private
17
-
18
- def application_uncached
19
- ::Avm::Applications::Base.new(path.basename)
20
- end
21
-
22
- def instance_uncached
23
- ::Avm::Instances::Base.new(application, DEFAULT_INSTANCE_SUFFIX)
10
+ def instance
11
+ application.local_instance
24
12
  end
25
13
  end
26
14
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Avm
4
- VERSION = '0.54.0'
4
+ VERSION = '0.55.0'
5
5
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'eac_ruby_utils/rspec/default_setup'
4
- ::EacRubyUtils::Rspec.default_setup_create(::File.expand_path('..', __dir__))
4
+ ::EacRubyUtils::Rspec.default_setup_create(::File.expand_path('..', __dir__)).stub_avm_contexts
@@ -13,10 +13,11 @@ Gem::Specification.new do |s|
13
13
  s.files = Dir['{lib,template}/**/*']
14
14
 
15
15
  s.add_dependency 'asciidoctor', '~> 2.0', '>= 2.0.18'
16
- s.add_dependency 'avm-eac_webapp_base0', '~> 0.12', '>= 0.12.1'
17
- s.add_dependency 'eac_ruby_utils', '~> 0.106', '>= 0.106.1'
16
+ s.add_dependency 'avm-eac_webapp_base0', '~> 0.12', '>= 0.12.2'
17
+ s.add_dependency 'eac_ruby_utils', '~> 0.107'
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
@@ -10,6 +10,24 @@ module Avm
10
10
  module Instances
11
11
  class Base < ::Avm::EacWebappBase0::Instances::Base
12
12
  FILES_UNITS = {}.freeze
13
+ AUTHOR_EMAIL_ENTRY_PATH = 'install.email'
14
+ AUTHOR_NAME_ENTRY_PATH = 'install.name'
15
+ AUTHOR_NAME_INITIALS_ENTRY_PATH = 'install.name_initials'
16
+
17
+ # @return [String]
18
+ def author_email
19
+ entry(AUTHOR_EMAIL_ENTRY_PATH).value!
20
+ end
21
+
22
+ # @return [String]
23
+ def author_name
24
+ entry(AUTHOR_NAME_ENTRY_PATH).value!
25
+ end
26
+
27
+ # @return [String]
28
+ def author_name_initials
29
+ entry(AUTHOR_NAME_INITIALS_ENTRY_PATH).value!
30
+ end
13
31
  end
14
32
  end
15
33
  end
@@ -0,0 +1,59 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module EacAsciidoctorBase0
7
+ module Instances
8
+ class Build
9
+ class Document
10
+ class HeaderMacroValue
11
+ enable_method_class
12
+ enable_settings_provider
13
+ enable_simple_cache
14
+ common_constructor :document
15
+
16
+ delegate :build, to: :document
17
+ delegate :instance, to: :build
18
+ delegate :author_email, :author_name, to: :instance
19
+
20
+ ATTRIBUTES = ['Author Initials', 'toc', 'icons', 'numbered', 'website'].freeze
21
+ TOC = 'left'
22
+ ICONS = ''
23
+ NUMBERED = ''
24
+
25
+ def attributes_lines
26
+ ATTRIBUTES.map do |attr|
27
+ [":#{attr}:", attribute_value(attr)].reject(&:blank?).join(' ')
28
+ end
29
+ end
30
+
31
+ def attribute_value(attr)
32
+ setting_value(attr.variableize)
33
+ end
34
+
35
+ def author_initials
36
+ instance.author_name_initials
37
+ end
38
+
39
+ def author_line
40
+ "#{author_name} <#{author_email}>"
41
+ end
42
+
43
+ def result
44
+ result_lines.join("\n")
45
+ end
46
+
47
+ def result_lines
48
+ [author_line] + attributes_lines
49
+ end
50
+
51
+ def website
52
+ instance.web_url
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module EacAsciidoctorBase0
7
+ module Instances
8
+ class Build
9
+ class Document
10
+ class PreProcessLine
11
+ enable_method_class
12
+ enable_simple_cache
13
+
14
+ MACRO_PARSER = %r{\A\s*//\#(\S+.*)}.to_parser do |m|
15
+ m[1]
16
+ end
17
+
18
+ common_constructor :document, :line
19
+
20
+ def result
21
+ if macro?
22
+ macro_value
23
+ else
24
+ line
25
+ end
26
+ end
27
+
28
+ def macro?
29
+ macro_name.present?
30
+ end
31
+
32
+ def macro_parser
33
+ MACRO_PARSER
34
+ end
35
+
36
+ def macro_value
37
+ document.send("#{macro_name}_macro_value")
38
+ end
39
+
40
+ private
41
+
42
+ def macro_name_uncached
43
+ macro_parser.parse(line)
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,84 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'asciidoctor'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Avm
7
+ module EacAsciidoctorBase0
8
+ module Instances
9
+ class Build
10
+ class Document
11
+ require_sub __FILE__
12
+
13
+ ROOT_BODY_TARGET_BASENAME = 'index'
14
+
15
+ enable_simple_cache
16
+ enable_speaker
17
+ common_constructor :build, :parent_document, :basename
18
+
19
+ # Absolute path to the Asciidoctor file.
20
+ #
21
+ # @return [Pathname]
22
+ def body_source_path
23
+ root_source_path.join(
24
+ ::Avm::EacAsciidoctorBase0::Sources::Base::CONTENT_DOCUMENT_BASENAME
25
+ )
26
+ end
27
+
28
+ # Absolute path to the output of Asciidoctor's source file.
29
+ #
30
+ # @return [Pathname]
31
+ def body_target_path
32
+ build.target_directory.join(
33
+ parent_document.present? ? subpath : ROOT_BODY_TARGET_BASENAME
34
+ ).basename_sub('.*') { |b| "#{b}.html" }
35
+ end
36
+
37
+ def perform
38
+ perform_self
39
+ perform_children
40
+ end
41
+
42
+ def perform_self
43
+ infov 'Building', root_source_path
44
+ ::Asciidoctor.convert(
45
+ pre_processed_body_source_content,
46
+ to_file: body_target_path.to_path, safe: :unsafe, mkdirs: true
47
+ )
48
+ end
49
+
50
+ def perform_children
51
+ children.each(&:perform)
52
+ end
53
+
54
+ # @return [String]
55
+ def pre_processed_body_source_content
56
+ body_source_path.read.each_line.map { |line| pre_process_line(line.rstrip) + "\n" }.join
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
@@ -5,27 +5,36 @@ require 'eac_ruby_utils/fs/clearable_directory'
5
5
 
6
6
  module Avm
7
7
  module EacAsciidoctorBase0
8
- module Sources
8
+ module Instances
9
9
  class Build
10
10
  require_sub __FILE__
11
11
  enable_speaker
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 :instance, :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::Instances::Build::Document.new(self, nil, nil)
33
+ end
34
+
35
+ # @return [Avm::EacAsciidoctorBase0::Sources::Base]
36
+ def source
37
+ instance.application.local_source
29
38
  end
30
39
 
31
40
  def target_directory
@@ -33,16 +42,6 @@ module Avm
33
42
  options[OPTION_TARGET_DIRECTORY] || default_target_directory
34
43
  )
35
44
  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
45
  end
47
46
  end
48
47
  end