yml_merger 1.0.0 → 1.0.1
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/yml_merger.rb +51 -47
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4ec9c56347fd8ab5c728f052a0d43e5824758f20
|
|
4
|
+
data.tar.gz: 3db4861372aa21f35674c3d6c837a0f8d70dd6fb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: eb0e8c080d2c9401945734ce7d5e3e14f8056414bbdedc000c45b89568b74e6ba16cbaa1ade1d4ba8c1fe5ebe3d47288d1f038088d9bc04acc74889c7d69a0e4
|
|
7
|
+
data.tar.gz: 1fa5b0956da2e1b61b4782b54e62865c29e19acf84b65265fc7ec6153782ec5edebc1f850637bcfdb125cc86c7c7fd1144bdbbf81fe322c93ec90826bf207197
|
data/lib/yml_merger.rb
CHANGED
|
@@ -25,7 +25,8 @@ class YML_Merger
|
|
|
25
25
|
@search_paths = search_paths
|
|
26
26
|
@filestructure = Hash.new()
|
|
27
27
|
@filestack = Array.new()
|
|
28
|
-
@KEY_LIST = ['__remove__','__load__', '__common__', '__hierarchy__', '__replace__', '__add__']
|
|
28
|
+
# @KEY_LIST = ['__remove__','__load__', '__common__', '__hierarchy__', '__replace__', '__add__']
|
|
29
|
+
@KEY_LIST = %w('__remove__', '__load__', '__common__', '__hierarchy__', '__replace__', '__add__')
|
|
29
30
|
end
|
|
30
31
|
|
|
31
32
|
# process the YMLs
|
|
@@ -51,44 +52,43 @@ class YML_Merger
|
|
|
51
52
|
merge_by_replace!(struct)
|
|
52
53
|
merge_by_remove!(struct)
|
|
53
54
|
struct.each_key do |key|
|
|
54
|
-
if Hash
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
else
|
|
60
|
-
struct.delete(key)
|
|
61
|
-
@logger.debug "deletes #{key}"
|
|
62
|
-
next
|
|
63
|
-
end
|
|
55
|
+
next if Hash != struct[key].class
|
|
56
|
+
if struct.key?('mode') and struct['mode'] == 'post-process-lib'
|
|
57
|
+
if struct[key].has_key?('attribute')
|
|
58
|
+
if struct[key]['attribute'] == 'required'
|
|
59
|
+
@logger.debug "keep #{key}"
|
|
64
60
|
else
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
61
|
+
struct.delete(key)
|
|
62
|
+
@logger.debug "deletes #{key}"
|
|
63
|
+
next
|
|
68
64
|
end
|
|
65
|
+
else
|
|
66
|
+
@logger.debug "delete #{key}"
|
|
67
|
+
struct.delete(key)
|
|
68
|
+
next
|
|
69
69
|
end
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
struct.delete(key)
|
|
76
|
-
@logger.debug "deletes #{key}"
|
|
77
|
-
next
|
|
78
|
-
end
|
|
70
|
+
end
|
|
71
|
+
if struct[key].key?('mode') and struct[key]['mode'] == 'post-process-app'
|
|
72
|
+
if struct[key].has_key?('attribute')
|
|
73
|
+
if struct[key]['attribute'] == 'required'
|
|
74
|
+
@logger.debug "keep #{key}"
|
|
79
75
|
else
|
|
80
|
-
@logger.debug "delete #{key}"
|
|
81
|
-
struct.delete(key)
|
|
82
|
-
next
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
if struct[key].key?("mode") and struct[key]["mode"] == "pre-process-merge"
|
|
86
76
|
struct.delete(key)
|
|
87
77
|
@logger.debug "deletes #{key}"
|
|
88
78
|
next
|
|
79
|
+
end
|
|
80
|
+
else
|
|
81
|
+
@logger.debug "delete #{key}"
|
|
82
|
+
struct.delete(key)
|
|
83
|
+
next
|
|
89
84
|
end
|
|
90
|
-
post_process(struct[key])
|
|
91
85
|
end
|
|
86
|
+
if struct[key].key?('mode') and struct[key]['mode'] == 'pre-process-merge'
|
|
87
|
+
struct.delete(key)
|
|
88
|
+
@logger.debug "deletes #{key}"
|
|
89
|
+
next
|
|
90
|
+
end
|
|
91
|
+
post_process(struct[key])
|
|
92
92
|
end
|
|
93
93
|
end
|
|
94
94
|
|
|
@@ -96,7 +96,7 @@ class YML_Merger
|
|
|
96
96
|
if path =~ URI::regexp
|
|
97
97
|
structure = process_file(path)
|
|
98
98
|
else
|
|
99
|
-
structure = process_file(@search_paths + path.
|
|
99
|
+
structure = process_file(@search_paths + path.tr('\\','/'))
|
|
100
100
|
end
|
|
101
101
|
return structure
|
|
102
102
|
end
|
|
@@ -112,7 +112,7 @@ class YML_Merger
|
|
|
112
112
|
@filestack.push(file)
|
|
113
113
|
#add globals.yml before load file
|
|
114
114
|
@logger.info file
|
|
115
|
-
content = open(file.
|
|
115
|
+
content = open(file.tr('\\','/')){|f| f.read}
|
|
116
116
|
content = YAML::load(content)
|
|
117
117
|
return if content.class == FalseClass
|
|
118
118
|
#if has file dependence load it
|
|
@@ -136,7 +136,7 @@ class YML_Merger
|
|
|
136
136
|
if loadfile =~ URI::regexp
|
|
137
137
|
structure = process_file(loadfile)
|
|
138
138
|
else
|
|
139
|
-
structure = process_file(@search_paths + loadfile.gsub(
|
|
139
|
+
structure = process_file(@search_paths + loadfile.gsub('\\','/'))
|
|
140
140
|
end
|
|
141
141
|
end
|
|
142
142
|
content = content.deep_merge(deep_copy(structure))
|
|
@@ -159,8 +159,8 @@ class YML_Merger
|
|
|
159
159
|
return if struct.class != Hash
|
|
160
160
|
struct.each_key do |key|
|
|
161
161
|
next if struct[key].class != Hash
|
|
162
|
-
if struct[key].has_key?('mode') and struct[key]['mode'] ==
|
|
163
|
-
if struct[key]['attribute'] ==
|
|
162
|
+
if struct[key].has_key?('mode') and struct[key]['mode'] == 'pre-process-merge'
|
|
163
|
+
if struct[key]['attribute'] == 'required'
|
|
164
164
|
struct[key].each_key do |subkey|
|
|
165
165
|
if struct.has_key?(subkey) and struct[subkey].class == Hash
|
|
166
166
|
@logger.debug "pre process #{key} -> #{subkey}"
|
|
@@ -243,7 +243,11 @@ class YML_Merger
|
|
|
243
243
|
end
|
|
244
244
|
#if has more addon
|
|
245
245
|
if struct[addon]['__add__'].count != 0
|
|
246
|
-
|
|
246
|
+
#puts "add #{addon}"
|
|
247
|
+
struct[addon]['attribute'] = ""
|
|
248
|
+
#struct[subnode] = struct[subnode].deep_merge(deep_copy(struct[addon]))
|
|
249
|
+
struct[addon]['attribute'] = 'required'
|
|
250
|
+
struct[addon]['__add__'].each do |submodule|
|
|
247
251
|
deep_add_merge(struct, addon, submodule)
|
|
248
252
|
end
|
|
249
253
|
else
|
|
@@ -268,8 +272,8 @@ class YML_Merger
|
|
|
268
272
|
struct[subnode]['__add__'].each do |addon|
|
|
269
273
|
next if struct[addon].class != Hash
|
|
270
274
|
begin
|
|
271
|
-
next if struct[subnode]['configuration']['section-type'] !=
|
|
272
|
-
if struct[addon]['configuration']['section-type'] !=
|
|
275
|
+
next if struct[subnode]['configuration']['section-type'] != 'application'
|
|
276
|
+
if struct[addon]['configuration']['section-type'] != 'component'
|
|
273
277
|
@logger.warn "WARNING #{addon} is required as component but has not a component attribute"
|
|
274
278
|
end
|
|
275
279
|
rescue
|
|
@@ -288,9 +292,9 @@ class YML_Merger
|
|
|
288
292
|
def merge_by_replace!(struct)
|
|
289
293
|
return if Hash != struct.class
|
|
290
294
|
#get the replace hash
|
|
291
|
-
return if ! struct.has_key?(
|
|
295
|
+
return if ! struct.has_key?('__replace__')
|
|
292
296
|
temp = Hash.new
|
|
293
|
-
temp = temp.deep_merge(deep_copy(struct[
|
|
297
|
+
temp = temp.deep_merge(deep_copy(struct['__replace__']))
|
|
294
298
|
temp.each_key do |key|
|
|
295
299
|
next if ! struct.has_key?(key)
|
|
296
300
|
delete_node(struct, key)
|
|
@@ -305,24 +309,24 @@ class YML_Merger
|
|
|
305
309
|
def merge_by_remove!(struct)
|
|
306
310
|
return if Hash != struct.class
|
|
307
311
|
#get the replace hash
|
|
308
|
-
return if ! struct.has_key?(
|
|
312
|
+
return if ! struct.has_key?('__remove__')
|
|
309
313
|
temp = Hash.new
|
|
310
|
-
temp = temp.deep_merge(deep_copy(struct[
|
|
314
|
+
temp = temp.deep_merge(deep_copy(struct['__remove__']))
|
|
311
315
|
temp.each_key do |key|
|
|
312
316
|
next if ! struct.has_key?(key)
|
|
313
|
-
if struct[
|
|
317
|
+
if struct['__remove__'][key] == nil
|
|
314
318
|
delete_node(struct, key)
|
|
315
319
|
else
|
|
316
|
-
if struct[
|
|
320
|
+
if struct['__remove__'][key].class == Array
|
|
317
321
|
arr = Array.new
|
|
318
|
-
arr = deep_copy(struct[
|
|
322
|
+
arr = deep_copy(struct['__remove__'][key])
|
|
319
323
|
arr.each do |item|
|
|
320
324
|
next if ! struct[key].include?(item)
|
|
321
325
|
struct[key].delete(item)
|
|
322
326
|
end
|
|
323
|
-
elsif struct[
|
|
327
|
+
elsif struct['__remove__'][key].class == Hash
|
|
324
328
|
hash = Hash.new
|
|
325
|
-
hash = hash.deep_merge(deep_copy(struct[
|
|
329
|
+
hash = hash.deep_merge(deep_copy(struct['__remove__'][key]))
|
|
326
330
|
hash.each_key do |subkey|
|
|
327
331
|
next if ! struct[key].has_key?(subkey)
|
|
328
332
|
delete_node(struct[key], subkey)
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: yml_merger
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Hake Huang
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2017-06-16 00:00:00.000000000 Z
|
|
13
13
|
dependencies: []
|
|
14
14
|
description: yaml extension for heiarchy merge
|
|
15
15
|
email: hakehuang@gmail.com
|
|
@@ -38,7 +38,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
38
38
|
version: '0'
|
|
39
39
|
requirements: []
|
|
40
40
|
rubyforge_project:
|
|
41
|
-
rubygems_version: 2.6.
|
|
41
|
+
rubygems_version: 2.6.6
|
|
42
42
|
signing_key:
|
|
43
43
|
specification_version: 4
|
|
44
44
|
summary: yaml_merger
|