eac_templates 0.6.0 → 0.7.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.
- checksums.yaml +4 -4
- data/lib/eac_templates/abstract/directory.rb +1 -1
- data/lib/eac_templates/abstract/fs_object.rb +2 -2
- data/lib/eac_templates/abstract/with_directory_file_methods.rb +35 -12
- data/lib/eac_templates/{abstract/not_found_error.rb → errors/not_found.rb} +2 -2
- data/lib/eac_templates/errors/type_mismatch.rb +8 -0
- data/lib/eac_templates/errors.rb +9 -0
- data/lib/eac_templates/modules/ancestor/directory.rb +21 -1
- data/lib/eac_templates/modules/ancestor/file.rb +48 -0
- data/lib/eac_templates/modules/ancestor/fs_object.rb +0 -2
- data/lib/eac_templates/modules/ancestor.rb +1 -1
- data/lib/eac_templates/modules/base/directory.rb +34 -6
- data/lib/eac_templates/modules/base/file.rb +5 -1
- data/lib/eac_templates/modules/base/fs_object.rb +0 -2
- data/lib/eac_templates/modules/base.rb +36 -9
- data/lib/eac_templates/sources/fs_object.rb +1 -1
- data/lib/eac_templates/sources/set.rb +2 -2
- data/lib/eac_templates/variables/directory.rb +2 -2
- data/lib/eac_templates/version.rb +1 -1
- metadata +19 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6760f4ce4cf38f54efeecca766e9c0871e8c25b2243f08a538456732c5f5ff83
|
4
|
+
data.tar.gz: 4bc5d3c58bf1a5e99f8bd577a75588caef089aad7d3f10d94d2659d1986a8baf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c15346833718e092f413eed81e1370bcbc61595ad0a935c985be8ecb37589b10941a6b2e952c7ab06a55c8bb590caaa60bf31801153307e107c07bc3060f5898
|
7
|
+
data.tar.gz: fa8ce19ec361c461f8d3182477bec458566cca407c21d647da4255b6dd06b86c60d75c4bfd29086633bad4084ed4915bd11487675fe3ed05e9ce9fed8bcc1532
|
@@ -12,7 +12,7 @@ module EacTemplates
|
|
12
12
|
delegate(*::EacTemplates::InterfaceMethods::DIRECTORY - %i[child chidren], to: :applier)
|
13
13
|
|
14
14
|
# @param basename [Pathname]
|
15
|
-
# @return [EacTemplates::Abstract::FsObject
|
15
|
+
# @return [EacTemplates::Abstract::FsObject]
|
16
16
|
def build_child(child_basename, child_type)
|
17
17
|
child_basename = child_basename.to_pathname
|
18
18
|
child_type = type_list.value_validate!(child_type)
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'eac_ruby_utils/core_ext'
|
4
4
|
require 'eac_templates/abstract/fs_object_by_pathname'
|
5
|
-
require 'eac_templates/
|
5
|
+
require 'eac_templates/errors/not_found'
|
6
6
|
|
7
7
|
module EacTemplates
|
8
8
|
module Abstract
|
@@ -72,7 +72,7 @@ module EacTemplates
|
|
72
72
|
end
|
73
73
|
|
74
74
|
def raise_not_found(message)
|
75
|
-
raise ::EacTemplates::
|
75
|
+
raise ::EacTemplates::Errors::NotFound, message
|
76
76
|
end
|
77
77
|
|
78
78
|
# @return [EacTemplates::Sources::Set]
|
@@ -1,10 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'eac_templates/
|
3
|
+
require 'eac_templates/errors/not_found'
|
4
4
|
|
5
5
|
module EacTemplates
|
6
6
|
module Abstract
|
7
7
|
module WithDirectoryFileMethods
|
8
|
+
common_concern do
|
9
|
+
enable_simple_cache
|
10
|
+
end
|
11
|
+
|
8
12
|
def build_fs_object(type)
|
9
13
|
fs_object_class(type).by_subpath(self, nil, subpath, source_set: source_set)
|
10
14
|
end
|
@@ -15,14 +19,24 @@ module EacTemplates
|
|
15
19
|
subpath.if_present(child_basename) { |v| v.join(child_basename) }.to_pathname
|
16
20
|
end
|
17
21
|
|
18
|
-
# @return [
|
19
|
-
def directory
|
20
|
-
|
22
|
+
# @return [Boolean]
|
23
|
+
def directory?
|
24
|
+
directory.found?
|
21
25
|
end
|
22
26
|
|
23
|
-
# @return [
|
24
|
-
def file
|
25
|
-
|
27
|
+
# @return [Boolean]
|
28
|
+
def file?
|
29
|
+
file.found?
|
30
|
+
end
|
31
|
+
|
32
|
+
# @return [Boolean]
|
33
|
+
def file_template?
|
34
|
+
file? && file.template?
|
35
|
+
end
|
36
|
+
|
37
|
+
# @return [Boolean]
|
38
|
+
def found?
|
39
|
+
directory? || file?
|
26
40
|
end
|
27
41
|
|
28
42
|
# @param type [Symbol]
|
@@ -33,13 +47,22 @@ module EacTemplates
|
|
33
47
|
|
34
48
|
# @return [EacTemplates::Abstract::Directory, EacTemplates::Abstract::File]
|
35
49
|
def sub_fs_object
|
36
|
-
|
37
|
-
return
|
50
|
+
return file if file.found?
|
51
|
+
return directory if directory.found?
|
52
|
+
|
53
|
+
raise ::EacTemplates::Errors::NotFound, "No template found: #{self}"
|
54
|
+
end
|
38
55
|
|
39
|
-
|
40
|
-
return directory_search if directory_search.found?
|
56
|
+
private
|
41
57
|
|
42
|
-
|
58
|
+
# @return [EacTemplates::Abstract::Directory]
|
59
|
+
def directory_uncached
|
60
|
+
build_fs_object(:directory)
|
61
|
+
end
|
62
|
+
|
63
|
+
# @return [EacTemplates::Abstract::File]
|
64
|
+
def file_uncached
|
65
|
+
build_fs_object(:file)
|
43
66
|
end
|
44
67
|
end
|
45
68
|
end
|
@@ -10,7 +10,27 @@ module EacTemplates
|
|
10
10
|
class Ancestor
|
11
11
|
class Directory < ::EacTemplates::Abstract::Directory
|
12
12
|
include ::EacTemplates::Modules::Ancestor::FsObject
|
13
|
-
delegate :
|
13
|
+
delegate :found?, :path, to: :source_object
|
14
|
+
|
15
|
+
# @return [Hash<Pathname, Symbol>]
|
16
|
+
def children_basenames
|
17
|
+
source_object.children_basenames.to_h { |k, v| parse_child_basename(k, v) }
|
18
|
+
end
|
19
|
+
|
20
|
+
protected
|
21
|
+
|
22
|
+
# @param basename [Pathname]
|
23
|
+
# @param type [Symbol]
|
24
|
+
# @return [Array]
|
25
|
+
def parse_child_basename(basename, type)
|
26
|
+
return [basename, type] unless type == :file
|
27
|
+
|
28
|
+
new_basename = ::EacTemplates::Modules::Ancestor::File.parse_basename(basename)
|
29
|
+
|
30
|
+
return [basename, type] if new_basename == basename
|
31
|
+
|
32
|
+
[new_basename, :file_template]
|
33
|
+
end
|
14
34
|
end
|
15
35
|
end
|
16
36
|
end
|
@@ -10,6 +10,54 @@ module EacTemplates
|
|
10
10
|
class Ancestor
|
11
11
|
class File < ::EacTemplates::Abstract::File
|
12
12
|
include ::EacTemplates::Modules::Ancestor::FsObject
|
13
|
+
|
14
|
+
TEMPLATE_EXTNAME_PATTERN =
|
15
|
+
/#{::Regexp.quote(::EacTemplates::Variables::FsObject::TEMPLATE_EXTNAME)}\z/.freeze
|
16
|
+
|
17
|
+
class << self
|
18
|
+
def parse_basename(basename)
|
19
|
+
basename.if_present do |v|
|
20
|
+
v.to_pathname
|
21
|
+
.to_path
|
22
|
+
.gsub(TEMPLATE_EXTNAME_PATTERN, '')
|
23
|
+
.to_pathname
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# @return [Boolean]
|
29
|
+
def found?
|
30
|
+
source_object.found? || template?
|
31
|
+
end
|
32
|
+
|
33
|
+
# @return [Pathname]
|
34
|
+
def path
|
35
|
+
template? ? template_source_object.path : source_object.path
|
36
|
+
end
|
37
|
+
|
38
|
+
# @return [Pathname]
|
39
|
+
def basename
|
40
|
+
self.class.parse_basename(super)
|
41
|
+
end
|
42
|
+
|
43
|
+
# @return [Boolean]
|
44
|
+
def template?
|
45
|
+
template_source_object.found?
|
46
|
+
end
|
47
|
+
|
48
|
+
protected
|
49
|
+
|
50
|
+
# @return [EacTemplates::Sources::File]
|
51
|
+
def template_source_object_uncached
|
52
|
+
owner.source_set.send(type, template_source_object_path_for_search)
|
53
|
+
end
|
54
|
+
|
55
|
+
# @return [Pathname]
|
56
|
+
def template_source_object_path_for_search
|
57
|
+
path_for_search.basename_sub do |b|
|
58
|
+
"#{b}#{::EacTemplates::Variables::FsObject::TEMPLATE_EXTNAME}"
|
59
|
+
end
|
60
|
+
end
|
13
61
|
end
|
14
62
|
end
|
15
63
|
end
|
@@ -19,7 +19,7 @@ module EacTemplates
|
|
19
19
|
|
20
20
|
common_constructor :base, :ancestor
|
21
21
|
delegate :subpath, :source_set, to: :base
|
22
|
-
delegate(*::EacTemplates::InterfaceMethods::ALL, to: :sub_fs_object)
|
22
|
+
delegate(*::EacTemplates::InterfaceMethods::ALL + [:children_basenames], to: :sub_fs_object)
|
23
23
|
|
24
24
|
def ancestor_path_for_search
|
25
25
|
self.class.path_for_search(ancestor)
|
@@ -10,15 +10,28 @@ module EacTemplates
|
|
10
10
|
class Base
|
11
11
|
class Directory < ::EacTemplates::Abstract::Directory
|
12
12
|
include ::EacTemplates::Modules::Base::FsObject
|
13
|
-
delegate(*(EacTemplates::InterfaceMethods::DIRECTORY - %i[children]),
|
13
|
+
delegate(*(EacTemplates::InterfaceMethods::DIRECTORY - %i[apply child children]),
|
14
|
+
to: :self_ancestor)
|
14
15
|
|
15
|
-
# @param
|
16
|
-
# @
|
17
|
-
|
16
|
+
# @param variables_source [Object]
|
17
|
+
# @param target_path [Pathname]
|
18
|
+
def apply(variables_source, target_path)
|
19
|
+
target_path = target_path.to_pathname
|
20
|
+
target_path.mkpath
|
21
|
+
children.each do |child|
|
22
|
+
child_apply(child, variables_source, target_path.join(child.basename))
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# @!method build_child(child_basename, child_type)
|
27
|
+
# @param child_basename [Pathname]
|
28
|
+
# @param child_type [Symbol]
|
29
|
+
# @return [EacTemplates::Modules::Base]
|
30
|
+
delegate :build_child, to: :owner
|
18
31
|
|
19
32
|
# @return [Hash<Pathname, Symbol>]
|
20
33
|
def children_basenames
|
21
|
-
owner.ancestors.each_with_object({}) do |e, a|
|
34
|
+
owner.ancestors.select(&:directory?).each_with_object({}) do |e, a|
|
22
35
|
ancestor_children_names(e, a)
|
23
36
|
end
|
24
37
|
end
|
@@ -34,10 +47,25 @@ module EacTemplates
|
|
34
47
|
# @param result [Hash<Pathname, Symbol>]
|
35
48
|
# @return [void]
|
36
49
|
def ancestor_children_names(ancestor, result)
|
37
|
-
ancestor.
|
50
|
+
ancestor.children_basenames.each do |path, type|
|
38
51
|
result[path] = type
|
39
52
|
end
|
40
53
|
end
|
54
|
+
|
55
|
+
# @param child [EacTemplates::Modules::Base]
|
56
|
+
# # @param variables_source [Object]
|
57
|
+
# @param target_path [Pathname]
|
58
|
+
def child_apply(child, variables_source, target_path)
|
59
|
+
if child.directory?
|
60
|
+
child.apply(variables_source, target_path)
|
61
|
+
elsif child.file_template?
|
62
|
+
child.apply_to_file(variables_source, target_path)
|
63
|
+
elsif child.file?
|
64
|
+
::FileUtils.cp(child.path, target_path)
|
65
|
+
else
|
66
|
+
ibr
|
67
|
+
end
|
68
|
+
end
|
41
69
|
end
|
42
70
|
end
|
43
71
|
end
|
@@ -10,7 +10,11 @@ module EacTemplates
|
|
10
10
|
class Base
|
11
11
|
class File < ::EacTemplates::Abstract::File
|
12
12
|
include ::EacTemplates::Modules::Base::FsObject
|
13
|
-
delegate(*EacTemplates::InterfaceMethods::FILE, to: :ancestor_found)
|
13
|
+
delegate(*EacTemplates::InterfaceMethods::FILE + [:template?], to: :ancestor_found)
|
14
|
+
|
15
|
+
def basename
|
16
|
+
ancestor_found.if_present(&:basename)
|
17
|
+
end
|
14
18
|
|
15
19
|
def found?
|
16
20
|
ancestor_found.present?
|
@@ -5,6 +5,7 @@ require 'eac_templates/interface_methods'
|
|
5
5
|
require 'eac_templates/abstract/with_directory_file_methods'
|
6
6
|
require 'eac_templates/modules/ancestor'
|
7
7
|
require 'eac_templates/sources/set'
|
8
|
+
require 'eac_templates/errors/type_mismatch'
|
8
9
|
|
9
10
|
module EacTemplates
|
10
11
|
module Modules
|
@@ -18,19 +19,20 @@ module EacTemplates
|
|
18
19
|
end
|
19
20
|
delegate(*::EacTemplates::InterfaceMethods::ONLY_DIRECTORY, to: :directory)
|
20
21
|
delegate(*::EacTemplates::InterfaceMethods::ONLY_FILE, to: :file)
|
21
|
-
delegate(*::EacTemplates::InterfaceMethods::COMMON, :
|
22
|
-
to: :sub_fs_object)
|
22
|
+
delegate(*::EacTemplates::InterfaceMethods::COMMON, :basename, :path_for_search,
|
23
|
+
:source_object, :type, to: :sub_fs_object)
|
23
24
|
|
24
|
-
# @param
|
25
|
-
# @
|
26
|
-
|
25
|
+
# @param child_basename [Pathname]
|
26
|
+
# @param child_type [Symbol]
|
27
|
+
# @return [EacTemplates::Modules::Base]
|
28
|
+
def build_child(child_basename, child_type)
|
27
29
|
r = ::EacTemplates::Modules::Base.new(
|
28
|
-
the_module, subpath: child_subpath(
|
30
|
+
the_module, subpath: child_subpath(child_basename), source_set: source_set
|
29
31
|
)
|
30
|
-
return r if r.found?
|
32
|
+
return r.validate_type(child_type) if r.found?
|
31
33
|
|
32
|
-
raise ::EacTemplates::
|
33
|
-
"No child for #{self} found with basename \"#{
|
34
|
+
raise ::EacTemplates::Errors::NotFound,
|
35
|
+
"No child for #{self} found with basename \"#{child_basename}\""
|
34
36
|
end
|
35
37
|
|
36
38
|
# @return [Boolean]
|
@@ -48,6 +50,21 @@ module EacTemplates
|
|
48
50
|
options[OPTION_SUBPATH].if_present(&:to_pathname)
|
49
51
|
end
|
50
52
|
|
53
|
+
# @return [String]
|
54
|
+
def to_s
|
55
|
+
"#{self.class}[#{the_module.name}#\"#{subpath}\"]"
|
56
|
+
end
|
57
|
+
|
58
|
+
# @param required_type [Symbol]
|
59
|
+
# @return [self]
|
60
|
+
# @raise [EacTemplates::Errors::TypeMismatch]
|
61
|
+
def validate_type(required_type)
|
62
|
+
return self if valid_type?(required_type)
|
63
|
+
|
64
|
+
raise ::EacTemplates::Errors::TypeMismatch, "A #{required_type} type was expected, but a " \
|
65
|
+
"#{type} was builded"
|
66
|
+
end
|
67
|
+
|
51
68
|
private
|
52
69
|
|
53
70
|
# @return [Enumerable<EacTemplates::Modules::Ancestor>]
|
@@ -60,6 +77,16 @@ module EacTemplates
|
|
60
77
|
ancestors.find { |a| a.ancestor == the_module } || ibr
|
61
78
|
end
|
62
79
|
|
80
|
+
# @return [Boolean]
|
81
|
+
def valid_type?(required_type)
|
82
|
+
file_types = %i[file file_template]
|
83
|
+
if file_types.include?(required_type)
|
84
|
+
file_types.include?(type)
|
85
|
+
else
|
86
|
+
type == required_type
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
63
90
|
require_sub __FILE__
|
64
91
|
end
|
65
92
|
end
|
@@ -4,7 +4,7 @@ require 'active_support/core_ext/object/blank'
|
|
4
4
|
require 'eac_templates/sources/directory'
|
5
5
|
require 'eac_templates/sources/file'
|
6
6
|
require 'eac_templates/sources/internal_set'
|
7
|
-
require 'eac_templates/
|
7
|
+
require 'eac_templates/errors/not_found'
|
8
8
|
|
9
9
|
module EacTemplates
|
10
10
|
module Sources
|
@@ -47,7 +47,7 @@ module EacTemplates
|
|
47
47
|
private
|
48
48
|
|
49
49
|
def raise_template_not_found(subpath)
|
50
|
-
raise ::EacTemplates::
|
50
|
+
raise ::EacTemplates::Errors::NotFound,
|
51
51
|
'Template not found for subpath ' \
|
52
52
|
"\"#{subpath}\" (Included paths: #{included_paths.to_a.join(::File::PATH_SEPARATOR)})"
|
53
53
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'eac_templates/
|
3
|
+
require 'eac_templates/errors/not_found'
|
4
4
|
require 'eac_templates/abstract/directory'
|
5
5
|
require 'eac_templates/variables/file'
|
6
6
|
require 'eac_templates/variables/fs_object'
|
@@ -22,7 +22,7 @@ module EacTemplates
|
|
22
22
|
return ::EacTemplates::Variables::File.new(child_path) if ::File.file?(child_path)
|
23
23
|
return ::EacTemplates::Variables::Directory.new(child_path) if ::File.directory?(child_path)
|
24
24
|
|
25
|
-
raise ::EacTemplates::
|
25
|
+
raise ::EacTemplates::Errors::NotFound,
|
26
26
|
"Child \"#{subpath}\" from \"#{path}\" not found"
|
27
27
|
end
|
28
28
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eac_templates
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.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: 2024-05-
|
11
|
+
date: 2024-05-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: eac_config
|
@@ -44,6 +44,20 @@ dependencies:
|
|
44
44
|
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '0.122'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: eac_fs
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0.17'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0.17'
|
47
61
|
- !ruby/object:Gem::Dependency
|
48
62
|
name: eac_ruby_gem_support
|
49
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -69,9 +83,11 @@ files:
|
|
69
83
|
- lib/eac_templates/abstract/file.rb
|
70
84
|
- lib/eac_templates/abstract/fs_object.rb
|
71
85
|
- lib/eac_templates/abstract/fs_object_by_pathname.rb
|
72
|
-
- lib/eac_templates/abstract/not_found_error.rb
|
73
86
|
- lib/eac_templates/abstract/with_directory_file_methods.rb
|
74
87
|
- lib/eac_templates/core_ext.rb
|
88
|
+
- lib/eac_templates/errors.rb
|
89
|
+
- lib/eac_templates/errors/not_found.rb
|
90
|
+
- lib/eac_templates/errors/type_mismatch.rb
|
75
91
|
- lib/eac_templates/interface_methods.rb
|
76
92
|
- lib/eac_templates/modules.rb
|
77
93
|
- lib/eac_templates/modules/ancestor.rb
|