rggen-core 0.25.0 → 0.27.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/LICENSE +1 -1
- data/README.md +3 -2
- data/lib/rggen/core/base/component_factory.rb +1 -1
- data/lib/rggen/core/builder/builder.rb +5 -10
- data/lib/rggen/core/builder/component_registry.rb +1 -1
- data/lib/rggen/core/builder/feature_registry.rb +31 -37
- data/lib/rggen/core/builder/input_component_registry.rb +10 -33
- data/lib/rggen/core/builder/layer.rb +2 -4
- data/lib/rggen/core/builder/list_feature_entry.rb +8 -4
- data/lib/rggen/core/builder/loader_registry.rb +7 -4
- data/lib/rggen/core/builder/plugin_manager.rb +76 -56
- data/lib/rggen/core/builder/plugin_spec.rb +19 -17
- data/lib/rggen/core/dsl.rb +4 -4
- data/lib/rggen/core/facets.rb +1 -0
- data/lib/rggen/core/input_base/input_data.rb +1 -3
- data/lib/rggen/core/input_base/loader.rb +3 -5
- data/lib/rggen/core/input_base/yaml_loader.rb +6 -15
- data/lib/rggen/core/options.rb +2 -2
- data/lib/rggen/core/output_base/file_writer.rb +1 -1
- data/lib/rggen/core/register_map/hash_loader.rb +5 -4
- data/lib/rggen/core/version.rb +1 -1
- data/lib/rggen/core.rb +0 -1
- metadata +7 -7
- data/lib/rggen/core/plugin.rb +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 87457243bd057e719ca35386df5b23f6c0cc72a86029e93998b51d8436f0b184
|
4
|
+
data.tar.gz: 96a4fd969fd9399e3a1bffdbc9319315bcd9a4df1f45827eb31517eb942bb489
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ab5f4642ecd2d47c88dfffe5432733c7c91320dace927c84d537cdc12be2e54ab70cf9e4ee32f47bd03f7ec044090f13e1b4a4efab6fa1f2549f6e99d3f05d5d
|
7
|
+
data.tar.gz: 1faf35891545834a2ba9df954b15d818c65ea6910859c4987c8e587d495dcfd167fbbb0a5a9206d060fca16c817a004474d721298ac0f6fa9eecbef2dccb04dc
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -37,14 +37,15 @@ $ gem install rggen-core
|
|
37
37
|
|
38
38
|
Feedbacks, bug reports, questions and etc. are wellcome! You can post them by using following ways:
|
39
39
|
|
40
|
-
* [GitHub Issue Tracker](https://github.com/rggen/rggen
|
40
|
+
* [GitHub Issue Tracker](https://github.com/rggen/rggen/issues)
|
41
|
+
* [GitHub Discussions](https://github.com/rggen/rggen/discussions)
|
41
42
|
* [Chat Room](https://gitter.im/rggen/rggen)
|
42
43
|
* [Mailing List](https://groups.google.com/d/forum/rggen)
|
43
44
|
* [Mail](mailto:rggen@googlegroups.com)
|
44
45
|
|
45
46
|
## Copyright & License
|
46
47
|
|
47
|
-
Copyright © 2017-
|
48
|
+
Copyright © 2017-2022 Taichi Ishitani. RgGen::Core is licensed under the [MIT License](https://opensource.org/licenses/MIT), see [LICENSE](LICENSE) for futher details.
|
48
49
|
|
49
50
|
## Code of Conduct
|
50
51
|
|
@@ -24,11 +24,10 @@ module RgGen
|
|
24
24
|
|
25
25
|
[
|
26
26
|
:register_loader, :register_loaders,
|
27
|
-
:
|
27
|
+
:setup_loader, :define_value_extractor
|
28
28
|
].each do |method_name|
|
29
29
|
define_method(method_name) do |component, *args, &block|
|
30
|
-
@component_registries[:input][component]
|
31
|
-
.__send__(__method__, *args, &block)
|
30
|
+
@component_registries[:input][component].__send__(__method__, *args, &block)
|
32
31
|
end
|
33
32
|
end
|
34
33
|
|
@@ -61,12 +60,8 @@ module RgGen
|
|
61
60
|
@layers[layer].enable(*args)
|
62
61
|
end
|
63
62
|
|
64
|
-
def
|
65
|
-
@layers.each_value(&:
|
66
|
-
end
|
67
|
-
|
68
|
-
def disable(layer, *args)
|
69
|
-
@layers.key?(layer) && @layers[layer].disable(*args)
|
63
|
+
def enable_all
|
64
|
+
@layers.each_value(&:enable_all)
|
70
65
|
end
|
71
66
|
|
72
67
|
def build_factory(type, component)
|
@@ -94,7 +89,7 @@ module RgGen
|
|
94
89
|
|
95
90
|
def_delegator :plugin_manager, :load_plugin
|
96
91
|
def_delegator :plugin_manager, :load_plugins
|
97
|
-
def_delegator :plugin_manager, :
|
92
|
+
def_delegator :plugin_manager, :setup_plugin
|
98
93
|
|
99
94
|
private
|
100
95
|
|
@@ -28,68 +28,61 @@ module RgGen
|
|
28
28
|
|
29
29
|
def enable(feature_or_list_names, feature_names = nil)
|
30
30
|
if feature_names
|
31
|
-
|
32
|
-
|
31
|
+
list_name = feature_or_list_names
|
32
|
+
(@enabled_features[list_name] ||= []).merge!(Array(feature_names))
|
33
33
|
else
|
34
34
|
Array(feature_or_list_names).each do |name|
|
35
|
-
@enabled_features[name]
|
35
|
+
@enabled_features.key?(name) || (@enabled_features[name] = nil)
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
-
def
|
41
|
-
|
42
|
-
@enabled_features[list_name] || []
|
43
|
-
else
|
44
|
-
@enabled_features.keys
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def disable(feature_or_list_names = nil, feature_names = nil)
|
49
|
-
if feature_names
|
50
|
-
@enabled_features[feature_or_list_names]
|
51
|
-
&.delete_if { |key, _| Array(feature_names).include?(key) }
|
52
|
-
elsif feature_or_list_names
|
53
|
-
Array(feature_or_list_names)
|
54
|
-
.each(&@enabled_features.method(:delete))
|
55
|
-
else
|
56
|
-
@enabled_features.clear
|
57
|
-
end
|
40
|
+
def enable_all
|
41
|
+
@enabled_features.clear
|
58
42
|
end
|
59
43
|
|
60
44
|
def delete(feature_or_list_names = nil, feature_names = nil)
|
61
45
|
if feature_names
|
62
46
|
@feature_entries[feature_or_list_names]&.delete(feature_names)
|
63
47
|
elsif feature_or_list_names
|
64
|
-
Array(feature_or_list_names)
|
65
|
-
.each(&@feature_entries.method(:delete))
|
48
|
+
Array(feature_or_list_names).each(&@feature_entries.method(:delete))
|
66
49
|
else
|
67
50
|
@feature_entries.clear
|
68
51
|
end
|
69
52
|
end
|
70
53
|
|
71
54
|
def simple_feature?(feature_name)
|
72
|
-
|
55
|
+
@feature_entries[feature_name]&.match_entry_type?(:simple) || false
|
73
56
|
end
|
74
57
|
|
75
58
|
def list_feature?(list_name, feature_name = nil)
|
76
|
-
return false unless
|
59
|
+
return false unless @feature_entries[list_name]&.match_entry_type?(:list)
|
77
60
|
return true unless feature_name
|
78
|
-
|
61
|
+
@feature_entries[list_name].feature?(feature_name)
|
79
62
|
end
|
80
63
|
|
81
64
|
def feature?(feature_or_list_name, feature_name = nil)
|
82
65
|
if feature_name
|
83
66
|
list_feature?(feature_or_list_name, feature_name)
|
84
67
|
else
|
85
|
-
simple_feature?(feature_or_list_name) ||
|
86
|
-
|
68
|
+
simple_feature?(feature_or_list_name) || list_feature?(feature_or_list_name)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def enabled_features(list_name = nil)
|
73
|
+
if list_name
|
74
|
+
enabled_list_features(list_name)
|
75
|
+
else
|
76
|
+
@enabled_features.empty? && @feature_entries.keys ||
|
77
|
+
@enabled_features.keys & @feature_entries.keys
|
87
78
|
end
|
88
79
|
end
|
89
80
|
|
90
81
|
def build_factories
|
82
|
+
target_features =
|
83
|
+
(@enabled_features.empty? && @feature_entries || @enabled_features).keys
|
91
84
|
@feature_entries
|
92
|
-
.slice(
|
85
|
+
.slice(*target_features)
|
93
86
|
.transform_values(&method(:build_factory))
|
94
87
|
end
|
95
88
|
|
@@ -105,16 +98,17 @@ module RgGen
|
|
105
98
|
@feature_entries[name] = entry
|
106
99
|
end
|
107
100
|
|
108
|
-
def
|
109
|
-
return
|
110
|
-
|
111
|
-
@enabled_features
|
101
|
+
def enabled_list_features(list_name)
|
102
|
+
return [] unless enabled_list?(list_name)
|
103
|
+
features = @feature_entries[list_name].features
|
104
|
+
(@enabled_features[list_name] || features) & features
|
112
105
|
end
|
113
106
|
|
114
|
-
def
|
115
|
-
return false unless
|
116
|
-
|
117
|
-
@enabled_features
|
107
|
+
def enabled_list?(list_name)
|
108
|
+
return false unless list_feature?(list_name)
|
109
|
+
return true if @enabled_features.empty?
|
110
|
+
return true if @enabled_features.key?(list_name)
|
111
|
+
false
|
118
112
|
end
|
119
113
|
|
120
114
|
def build_factory(entry)
|
@@ -6,45 +6,26 @@ module RgGen
|
|
6
6
|
class InputComponentRegistry < ComponentRegistry
|
7
7
|
def initialize(name, builder)
|
8
8
|
super
|
9
|
-
@loader_registries =
|
9
|
+
@loader_registries = Hash.new do |h, k|
|
10
|
+
h[k] = LoaderRegistry.new
|
11
|
+
end
|
10
12
|
end
|
11
13
|
|
12
14
|
def register_loader(loader_type, loader)
|
13
|
-
|
15
|
+
@loader_registries[loader_type].register_loader(loader)
|
14
16
|
end
|
15
17
|
|
16
18
|
def register_loaders(loader_type, loaders)
|
17
|
-
|
19
|
+
@loader_registries[loader_type].register_loaders(loaders)
|
18
20
|
end
|
19
21
|
|
20
|
-
def
|
21
|
-
|
22
|
-
if value
|
23
|
-
[layers_or_value, value]
|
24
|
-
else
|
25
|
-
[nil, layers_or_value]
|
26
|
-
end
|
27
|
-
loader_registry(loader_type).define_value_extractor(layers, value, &body)
|
28
|
-
end
|
29
|
-
|
30
|
-
def ignore_value(loader_type, layers_or_value, value = nil)
|
31
|
-
layers, value =
|
32
|
-
if value
|
33
|
-
[layers_or_value, value]
|
34
|
-
else
|
35
|
-
[nil, layers_or_value]
|
36
|
-
end
|
37
|
-
loader_registry(loader_type).ignore_value(layers, value)
|
22
|
+
def setup_loader(loader_type)
|
23
|
+
block_given? && yield(@loader_registries[loader_type])
|
38
24
|
end
|
39
25
|
|
40
|
-
def
|
41
|
-
|
42
|
-
|
43
|
-
[layers_or_values, values]
|
44
|
-
else
|
45
|
-
[nil, layers_or_values]
|
46
|
-
end
|
47
|
-
loader_registry(loader_type).ignore_values(layers, values)
|
26
|
+
def define_value_extractor(loader_type, layers_or_value, value = nil, &body)
|
27
|
+
@loader_registries[loader_type]
|
28
|
+
.define_value_extractor(layers_or_value, value, &body)
|
48
29
|
end
|
49
30
|
|
50
31
|
def build_factory
|
@@ -55,10 +36,6 @@ module RgGen
|
|
55
36
|
|
56
37
|
private
|
57
38
|
|
58
|
-
def loader_registry(loader_type)
|
59
|
-
@loader_registries[loader_type] ||= LoaderRegistry.new
|
60
|
-
end
|
61
|
-
|
62
39
|
def build_loaders
|
63
40
|
@loader_registries.values.flat_map(&:create_loaders)
|
64
41
|
end
|
@@ -90,10 +90,8 @@ module RgGen
|
|
90
90
|
end
|
91
91
|
end
|
92
92
|
|
93
|
-
def
|
94
|
-
@feature_registries.each_value
|
95
|
-
registry.disable(*[feature_or_list_names, feature_names].compact)
|
96
|
-
end
|
93
|
+
def enable_all
|
94
|
+
@feature_registries.each_value(&:enable_all)
|
97
95
|
end
|
98
96
|
|
99
97
|
def delete(feature_or_list_names = nil, feature_names = nil)
|
@@ -32,9 +32,9 @@ module RgGen
|
|
32
32
|
|
33
33
|
alias_method :factory, :define_factory
|
34
34
|
|
35
|
-
def build_factory(
|
35
|
+
def build_factory(targets)
|
36
36
|
@factory.new(@name) do |f|
|
37
|
-
f.target_features(target_features(
|
37
|
+
f.target_features(target_features(targets))
|
38
38
|
f.target_feature(@default_feature)
|
39
39
|
end
|
40
40
|
end
|
@@ -77,6 +77,10 @@ module RgGen
|
|
77
77
|
@features.key?(feature)
|
78
78
|
end
|
79
79
|
|
80
|
+
def features
|
81
|
+
@features.keys
|
82
|
+
end
|
83
|
+
|
80
84
|
private
|
81
85
|
|
82
86
|
def attach_shared_context(context)
|
@@ -85,8 +89,8 @@ module RgGen
|
|
85
89
|
end
|
86
90
|
end
|
87
91
|
|
88
|
-
def target_features(
|
89
|
-
@features.slice(*
|
92
|
+
def target_features(targets)
|
93
|
+
targets && @features.slice(*targets) || @features
|
90
94
|
end
|
91
95
|
end
|
92
96
|
end
|
@@ -11,22 +11,25 @@ module RgGen
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def register_loader(loader)
|
14
|
-
|
14
|
+
@loaders << loader
|
15
15
|
end
|
16
16
|
|
17
17
|
def register_loaders(loaders)
|
18
18
|
@loaders.concat(Array(loaders))
|
19
19
|
end
|
20
20
|
|
21
|
-
def define_value_extractor(
|
21
|
+
def define_value_extractor(layers_or_value, value = nil, &body)
|
22
|
+
value, layers = [value, layers_or_value].compact
|
22
23
|
@extractors << create_extractor(layers, value, &body)
|
23
24
|
end
|
24
25
|
|
25
|
-
def ignore_value(
|
26
|
+
def ignore_value(layers_or_value, value = nil)
|
27
|
+
value, layers = [value, layers_or_value].compact
|
26
28
|
ignore_values(layers, [value])
|
27
29
|
end
|
28
30
|
|
29
|
-
def ignore_values(
|
31
|
+
def ignore_values(layers_or_values, values = nil)
|
32
|
+
values, layers = [values, layers_or_values].compact
|
30
33
|
[layers].flatten.each do |layer|
|
31
34
|
(@ignore_values[layer] ||= []).concat(Array(values))
|
32
35
|
end
|
@@ -3,22 +3,65 @@
|
|
3
3
|
module RgGen
|
4
4
|
module Core
|
5
5
|
module Builder
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
DEFAULT_PLUGSINS = 'rggen/default'
|
7
|
+
|
8
|
+
class PluginInfo
|
9
|
+
attr_reader :path
|
10
|
+
attr_reader :gemname
|
11
|
+
attr_reader :version
|
12
|
+
|
13
|
+
def self.parse(path_or_name, version)
|
14
|
+
info = new
|
15
|
+
info.parse(path_or_name.to_s.strip, version)
|
16
|
+
info
|
10
17
|
end
|
11
18
|
|
12
|
-
def
|
13
|
-
@
|
19
|
+
def parse(path_or_name, version)
|
20
|
+
@name, @path, @gemname, @version =
|
21
|
+
if plugin_path?(path_or_name)
|
22
|
+
[nil, path_or_name, *find_gemspec_by_path(path_or_name)]
|
23
|
+
else
|
24
|
+
[
|
25
|
+
path_or_name, get_plugin_path(path_or_name),
|
26
|
+
get_gemname(path_or_name), version
|
27
|
+
]
|
28
|
+
end
|
14
29
|
end
|
15
30
|
|
16
|
-
def
|
17
|
-
@
|
31
|
+
def to_s
|
32
|
+
if @name && @version
|
33
|
+
"#{@name} (#{@version})"
|
34
|
+
elsif @name
|
35
|
+
@name
|
36
|
+
else
|
37
|
+
@path
|
38
|
+
end
|
18
39
|
end
|
19
40
|
|
20
|
-
|
21
|
-
|
41
|
+
private
|
42
|
+
|
43
|
+
def plugin_path?(path_or_name)
|
44
|
+
path_or_name == DEFAULT_PLUGSINS || File.ext(path_or_name) == 'rb'
|
45
|
+
end
|
46
|
+
|
47
|
+
def find_gemspec_by_path(path)
|
48
|
+
Gem::Specification
|
49
|
+
.each.find { |spec| match_gemspec_path?(spec, path) }
|
50
|
+
.yield_self { |spec| spec && [spec.name, spec.version] }
|
51
|
+
end
|
52
|
+
|
53
|
+
def match_gemspec_path?(gemspec, path)
|
54
|
+
gemspec.full_require_paths.any?(&path.method(:start_with?))
|
55
|
+
end
|
56
|
+
|
57
|
+
def get_plugin_path(name)
|
58
|
+
base_name, sub_name = name.split('/', 2)
|
59
|
+
base_name = base_name.sub(/^rggen[-_]/, '').tr('-', '_')
|
60
|
+
File.join(*['rggen', base_name, sub_name].compact)
|
61
|
+
end
|
62
|
+
|
63
|
+
def get_gemname(name)
|
64
|
+
name.split('/', 2).first
|
22
65
|
end
|
23
66
|
end
|
24
67
|
|
@@ -28,34 +71,31 @@ module RgGen
|
|
28
71
|
@plugins = []
|
29
72
|
end
|
30
73
|
|
31
|
-
def load_plugin(
|
32
|
-
|
33
|
-
|
34
|
-
if setup_file_directly_given?(setup_path_or_name)
|
35
|
-
setup_path_or_name
|
36
|
-
else
|
37
|
-
get_setup_path(setup_path_or_name)
|
38
|
-
end
|
39
|
-
read_setup_file(setup_path, setup_path_or_name)
|
74
|
+
def load_plugin(path_or_name, version = nil)
|
75
|
+
info = PluginInfo.parse(path_or_name, version)
|
76
|
+
read_plugin_file(info)
|
40
77
|
end
|
41
78
|
|
42
79
|
def load_plugins(plugins, no_default_plugins, activation = true)
|
43
80
|
RgGen.builder(@builder)
|
44
|
-
merge_plugins(plugins, no_default_plugins)
|
81
|
+
merge_plugins(plugins, no_default_plugins)
|
82
|
+
.each { |plugin| load_plugin(*plugin) }
|
45
83
|
activation && activate_plugins
|
46
84
|
end
|
47
85
|
|
48
|
-
def
|
49
|
-
|
50
|
-
(raise Core::PluginError.new('no plugin spec is given'))
|
51
|
-
@plugins << PluginRegistry.new(plugin_module, &block)
|
86
|
+
def setup_plugin(plugin_name, &block)
|
87
|
+
@plugins << PluginSpec.new(plugin_name, &block)
|
52
88
|
end
|
53
89
|
|
54
|
-
def activate_plugins
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
90
|
+
def activate_plugins
|
91
|
+
@plugins.each { |plugin| plugin.activate(@builder) }
|
92
|
+
@plugins.each { |plugin| plugin.activate_additionally(@builder) }
|
93
|
+
end
|
94
|
+
|
95
|
+
def activate_plugin_by_name(plugin_name)
|
96
|
+
target_plugin = @plugins.find { |plugin| plugin.name == plugin_name }
|
97
|
+
target_plugin&.activate(@builder)
|
98
|
+
target_plugin&.activate_additionally(@builder)
|
59
99
|
end
|
60
100
|
|
61
101
|
def version_info
|
@@ -64,27 +104,11 @@ module RgGen
|
|
64
104
|
|
65
105
|
private
|
66
106
|
|
67
|
-
def
|
68
|
-
|
69
|
-
|
70
|
-
end
|
71
|
-
|
72
|
-
def get_setup_path(name)
|
73
|
-
base, sub_directory = name.split('/', 2)
|
74
|
-
base = base.sub(/^rggen[-_]/, '').tr('-', '_')
|
75
|
-
File.join(*['rggen', base, sub_directory, 'setup'].compact)
|
76
|
-
end
|
77
|
-
|
78
|
-
def read_setup_file(setup_path, setup_path_or_name)
|
79
|
-
require setup_path
|
107
|
+
def read_plugin_file(info)
|
108
|
+
info.gemname && gem(info.gemname, info.version)
|
109
|
+
require info.path
|
80
110
|
rescue ::LoadError
|
81
|
-
|
82
|
-
if setup_path_or_name == setup_path
|
83
|
-
"cannot load such plugin: #{setup_path_or_name}"
|
84
|
-
else
|
85
|
-
"cannot load such plugin: #{setup_path_or_name} (#{setup_path})"
|
86
|
-
end
|
87
|
-
raise Core::PluginError.new(message)
|
111
|
+
raise Core::PluginError.new("cannot load such plugin: #{info}")
|
88
112
|
end
|
89
113
|
|
90
114
|
def merge_plugins(plugins, no_default_plugins)
|
@@ -95,8 +119,6 @@ module RgGen
|
|
95
119
|
]
|
96
120
|
end
|
97
121
|
|
98
|
-
DEFAULT_PLUGSINS = 'rggen/setup'
|
99
|
-
|
100
122
|
def default_plugins(no_default_plugins)
|
101
123
|
load_default_plugins?(no_default_plugins) && DEFAULT_PLUGSINS || nil
|
102
124
|
end
|
@@ -110,11 +132,9 @@ module RgGen
|
|
110
132
|
|
111
133
|
def plugins_from_env
|
112
134
|
ENV['RGGEN_PLUGINS']
|
113
|
-
&.split(':')
|
114
|
-
|
115
|
-
|
116
|
-
def plugin?(plugin_module)
|
117
|
-
plugin_module.respond_to?(:plugin_spec) && plugin_module.plugin_spec
|
135
|
+
&.split(':')
|
136
|
+
&.reject(&:blank?)
|
137
|
+
&.map { |entry| entry.split(',', 2) }
|
118
138
|
end
|
119
139
|
end
|
120
140
|
end
|
@@ -4,14 +4,16 @@ module RgGen
|
|
4
4
|
module Core
|
5
5
|
module Builder
|
6
6
|
class PluginSpec
|
7
|
-
def initialize(name
|
7
|
+
def initialize(name)
|
8
8
|
@name = name
|
9
|
-
@plugin_module = plugin_module
|
10
9
|
@component_registrations = []
|
11
10
|
@loader_registrations = []
|
12
11
|
@files = []
|
12
|
+
block_given? && yield(self)
|
13
13
|
end
|
14
14
|
|
15
|
+
attr_reader :name
|
16
|
+
|
15
17
|
def version(value = nil)
|
16
18
|
@version = value if value
|
17
19
|
version_value
|
@@ -25,13 +27,8 @@ module RgGen
|
|
25
27
|
@component_registrations << [component, layers, body]
|
26
28
|
end
|
27
29
|
|
28
|
-
def
|
29
|
-
@loader_registrations << [component, loader_type,
|
30
|
-
end
|
31
|
-
|
32
|
-
def register_loaders(component, loader_type, loaders)
|
33
|
-
Array(loaders)
|
34
|
-
.each { |loader| register_loader(component, loader_type, loader) }
|
30
|
+
def setup_loader(component, loader_type, &body)
|
31
|
+
@loader_registrations << [component, loader_type, body]
|
35
32
|
end
|
36
33
|
|
37
34
|
def register_files(files)
|
@@ -41,23 +38,26 @@ module RgGen
|
|
41
38
|
|
42
39
|
alias_method :files, :register_files
|
43
40
|
|
41
|
+
def addtional_setup(&body)
|
42
|
+
@addtional_setup = body
|
43
|
+
end
|
44
|
+
|
44
45
|
def activate(builder)
|
45
46
|
activate_components(builder)
|
46
47
|
activate_loaders(builder)
|
47
48
|
load_files
|
48
49
|
end
|
49
50
|
|
51
|
+
def activate_additionally(builder)
|
52
|
+
@addtional_setup&.call(builder)
|
53
|
+
end
|
54
|
+
|
50
55
|
private
|
51
56
|
|
52
57
|
DEFAULT_VERSION = '0.0.0'
|
53
58
|
|
54
59
|
def version_value
|
55
|
-
@version ||
|
56
|
-
end
|
57
|
-
|
58
|
-
def const_version
|
59
|
-
@plugin_module.const_defined?(:VERSION) &&
|
60
|
-
@plugin_module.const_get(:VERSION)
|
60
|
+
@version || DEFAULT_VERSION
|
61
61
|
end
|
62
62
|
|
63
63
|
def activate_components(builder)
|
@@ -69,8 +69,10 @@ module RgGen
|
|
69
69
|
end
|
70
70
|
|
71
71
|
def activate_loaders(builder)
|
72
|
-
@loader_registrations.each do |component, loader_type,
|
73
|
-
builder
|
72
|
+
@loader_registrations.each do |component, loader_type, body|
|
73
|
+
builder
|
74
|
+
.input_component_registry(component)
|
75
|
+
.setup_loader(loader_type, &body)
|
74
76
|
end
|
75
77
|
end
|
76
78
|
|
data/lib/rggen/core/dsl.rb
CHANGED
@@ -11,17 +11,17 @@ module RgGen
|
|
11
11
|
:input_component_registry,
|
12
12
|
:output_component_registry,
|
13
13
|
:register_loader,
|
14
|
+
:setup_loader,
|
15
|
+
:load_plugin,
|
14
16
|
:define_loader,
|
15
17
|
:define_simple_feature,
|
16
18
|
:define_list_feature,
|
17
19
|
:define_list_item_feature,
|
18
20
|
:define_value_extractor,
|
19
21
|
:enable,
|
20
|
-
:
|
21
|
-
:disable,
|
22
|
+
:enable_all,
|
22
23
|
:delete,
|
23
|
-
:
|
24
|
-
:load_plugin
|
24
|
+
:setup_plugin
|
25
25
|
].each do |method_name|
|
26
26
|
def_delegator :'RgGen.builder', method_name
|
27
27
|
end
|
data/lib/rggen/core/facets.rb
CHANGED
@@ -42,11 +42,9 @@ module RgGen
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def format_sub_layer(read_data, input_data, layer, file)
|
45
|
-
format_sub_layer_data(read_data, layer, file)
|
46
|
-
|
47
|
-
|
48
|
-
format(data, input_data.child(sub_layer), sub_layer, file)
|
49
|
-
end
|
45
|
+
format_sub_layer_data(read_data, layer, file)&.each do |(sub_layer, data)|
|
46
|
+
format(data, input_data.child(sub_layer), sub_layer, file)
|
47
|
+
end
|
50
48
|
end
|
51
49
|
|
52
50
|
def format_layer_data(_read_data, _layer, _file)
|
@@ -6,22 +6,13 @@ module RgGen
|
|
6
6
|
module YAMLLoader
|
7
7
|
private
|
8
8
|
|
9
|
-
if RUBY_VERSION >= '2.6.0'
|
10
|
-
def yaml_safe_load(yaml, file)
|
11
|
-
YAML.safe_load(
|
12
|
-
yaml,
|
13
|
-
permitted_classes: [Symbol], aliases: true, filename: file,
|
14
|
-
symbolize_names: true
|
15
|
-
)
|
16
|
-
end
|
17
|
-
else
|
18
|
-
def yaml_safe_load(yaml, file)
|
19
|
-
YAML.safe_load(yaml, [Symbol], [], true, file, symbolize_names: true)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
9
|
def load_yaml(file)
|
24
|
-
|
10
|
+
yaml = File.binread(file)
|
11
|
+
YAML.safe_load(
|
12
|
+
yaml,
|
13
|
+
permitted_classes: [Symbol], aliases: true,
|
14
|
+
filename: file, symbolize_names: true
|
15
|
+
)
|
25
16
|
end
|
26
17
|
end
|
27
18
|
end
|
data/lib/rggen/core/options.rb
CHANGED
@@ -109,9 +109,9 @@ module RgGen
|
|
109
109
|
end
|
110
110
|
|
111
111
|
Options.add_option(:plugins) do |option|
|
112
|
-
option.long_option '--plugin PLUGIN'
|
112
|
+
option.long_option '--plugin PLUGIN[:VERSION]'
|
113
113
|
option.default { [] }
|
114
|
-
option.action { |value, options| options[:plugins] << value }
|
114
|
+
option.action { |value, options| options[:plugins] << value.split(':', 2) }
|
115
115
|
option.description 'Load a RgGen plugin ' \
|
116
116
|
"(name of plugin/path to 'setup.rb' file)"
|
117
117
|
end
|
@@ -47,12 +47,12 @@ module RgGen
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def format_array_sub_layer_data(read_data, layer, file)
|
50
|
-
read_data.each_with_object(
|
50
|
+
read_data.each_with_object([]) do |data, sub_layer_data|
|
51
51
|
format_hash_sub_layer_data(data, layer, file, sub_layer_data)
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
|
-
def format_hash_sub_layer_data(read_data, layer, file, sub_layer_data =
|
55
|
+
def format_hash_sub_layer_data(read_data, layer, file, sub_layer_data = [])
|
56
56
|
convert_to_hash(read_data, file)
|
57
57
|
.slice(*SUB_LAYER_KEYS[layer])
|
58
58
|
.each { |k, v| merge_sub_layer_data(sub_layer_data, layer, k, v) }
|
@@ -61,9 +61,10 @@ module RgGen
|
|
61
61
|
|
62
62
|
def merge_sub_layer_data(sub_layer_data, layer, key, value)
|
63
63
|
if SUB_LAYER_KEY_MAP[layer].key?(key)
|
64
|
-
|
64
|
+
sub_layer_data
|
65
|
+
.concat([SUB_LAYER_KEY_MAP[layer][key]].product(value))
|
65
66
|
else
|
66
|
-
|
67
|
+
sub_layer_data << [key, value]
|
67
68
|
end
|
68
69
|
end
|
69
70
|
|
data/lib/rggen/core/version.rb
CHANGED
data/lib/rggen/core.rb
CHANGED
@@ -105,7 +105,6 @@ require_relative 'core/builder/plugin_manager'
|
|
105
105
|
require_relative 'core/builder/builder'
|
106
106
|
require_relative 'core/builder'
|
107
107
|
|
108
|
-
require_relative 'core/plugin'
|
109
108
|
require_relative 'core/printers'
|
110
109
|
require_relative 'core/options'
|
111
110
|
require_relative 'core/dsl'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rggen-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.27.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Taichi Ishitani
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-07-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: docile
|
@@ -165,7 +165,6 @@ files:
|
|
165
165
|
- lib/rggen/core/output_base/raise_error.rb
|
166
166
|
- lib/rggen/core/output_base/source_file_component_factory.rb
|
167
167
|
- lib/rggen/core/output_base/template_engine.rb
|
168
|
-
- lib/rggen/core/plugin.rb
|
169
168
|
- lib/rggen/core/printers.rb
|
170
169
|
- lib/rggen/core/register_map.rb
|
171
170
|
- lib/rggen/core/register_map/component.rb
|
@@ -193,8 +192,9 @@ homepage: https://github.com/rggen/rggen-core
|
|
193
192
|
licenses:
|
194
193
|
- MIT
|
195
194
|
metadata:
|
196
|
-
bug_tracker_uri: https://github.com/rggen/rggen
|
195
|
+
bug_tracker_uri: https://github.com/rggen/rggen/issues
|
197
196
|
mailing_list_uri: https://groups.google.com/d/forum/rggen
|
197
|
+
rubygems_mfa_required: 'true'
|
198
198
|
source_code_uri: https://github.com/rggen/rggen-core
|
199
199
|
wiki_uri: https://github.com/rggen/rggen/wiki
|
200
200
|
post_install_message:
|
@@ -205,15 +205,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
205
205
|
requirements:
|
206
206
|
- - ">="
|
207
207
|
- !ruby/object:Gem::Version
|
208
|
-
version: '2.
|
208
|
+
version: '2.6'
|
209
209
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
210
210
|
requirements:
|
211
211
|
- - ">="
|
212
212
|
- !ruby/object:Gem::Version
|
213
213
|
version: '0'
|
214
214
|
requirements: []
|
215
|
-
rubygems_version: 3.
|
215
|
+
rubygems_version: 3.3.3
|
216
216
|
signing_key:
|
217
217
|
specification_version: 4
|
218
|
-
summary: rggen-core-0.
|
218
|
+
summary: rggen-core-0.27.0
|
219
219
|
test_files: []
|
data/lib/rggen/core/plugin.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RgGen
|
4
|
-
module Core
|
5
|
-
module Plugin
|
6
|
-
attr_reader :plugin_spec
|
7
|
-
|
8
|
-
private
|
9
|
-
|
10
|
-
def setup_plugin(name)
|
11
|
-
@plugin_spec = Builder::PluginSpec.new(name, self)
|
12
|
-
block_given? && yield(@plugin_spec)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|