yml_merger 0.9.0 → 0.9.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/yml_merger.rb +18 -10
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 49e76145d789966d34bccbca72e2e6a7dc1a5e03
|
4
|
+
data.tar.gz: b31dac2229ba5d425c31c66f958337446bd7fbdd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b95b020415c2f0e2a4f95ae4d9aa002aaa1c0a180a84f2741d6e47df9496da78164dbc90c34766a8c9e9fa553cf107012832f60e62381cbc67f6d5be4707d712
|
7
|
+
data.tar.gz: 1b7ab34abc0f7090f5083b545cae32a321b99ff646e44b0875945e208c107bddb194531fb0363d055ff7985a64316b04c9184a41e992e6d8c8595b1de0bf6be5
|
data/lib/yml_merger.rb
CHANGED
@@ -4,6 +4,7 @@ require "deep_merge"
|
|
4
4
|
require 'fileutils'
|
5
5
|
require 'open-uri'
|
6
6
|
require 'uri'
|
7
|
+
require 'logger'
|
7
8
|
|
8
9
|
|
9
10
|
# implement of deep merge for nested hash and array of hash
|
@@ -14,7 +15,12 @@ class YML_Merger
|
|
14
15
|
# Params:
|
15
16
|
# - filepath: the entry file name
|
16
17
|
# - seatch_paths: rootpath to search all the needed YML files
|
17
|
-
def initialize(filename, search_paths)
|
18
|
+
def initialize(filename, search_paths, logger: nil)
|
19
|
+
@logger = logger
|
20
|
+
unless (logger)
|
21
|
+
@logger = Logger.new(STDOUT)
|
22
|
+
@logger.level = Logger::INFO
|
23
|
+
end
|
18
24
|
@ENTRY_YML = search_paths + '/' + filename
|
19
25
|
@search_paths = search_paths
|
20
26
|
@filestructure = Hash.new()
|
@@ -49,14 +55,14 @@ class YML_Merger
|
|
49
55
|
if struct.key?("mode") and struct["mode"] == "post-process-lib"
|
50
56
|
if struct[key].has_key?("attribute")
|
51
57
|
if struct[key]["attribute"] == "required"
|
52
|
-
|
58
|
+
@logger.debug "keep #{key}"
|
53
59
|
else
|
54
60
|
struct.delete(key)
|
55
|
-
|
61
|
+
@logger.debug "deletes #{key}"
|
56
62
|
next
|
57
63
|
end
|
58
64
|
else
|
59
|
-
|
65
|
+
@logger.debug "delete #{key}"
|
60
66
|
struct.delete(key)
|
61
67
|
next
|
62
68
|
end
|
@@ -64,21 +70,21 @@ class YML_Merger
|
|
64
70
|
if struct[key].key?("mode") and struct[key]["mode"] == "post-process-app"
|
65
71
|
if struct[key].has_key?("attribute")
|
66
72
|
if struct[key]["attribute"] == "required"
|
67
|
-
|
73
|
+
@logger.debug "keep #{key}"
|
68
74
|
else
|
69
75
|
struct.delete(key)
|
70
|
-
|
76
|
+
@logger.debug "deletes #{key}"
|
71
77
|
next
|
72
78
|
end
|
73
79
|
else
|
74
|
-
|
80
|
+
@logger.debug "delete #{key}"
|
75
81
|
struct.delete(key)
|
76
82
|
next
|
77
83
|
end
|
78
84
|
end
|
79
85
|
if struct[key].key?("mode") and struct[key]["mode"] == "pre-process-merge"
|
80
86
|
struct.delete(key)
|
81
|
-
|
87
|
+
@logger.debug "deletes #{key}"
|
82
88
|
next
|
83
89
|
end
|
84
90
|
post_process(struct[key])
|
@@ -97,7 +103,7 @@ class YML_Merger
|
|
97
103
|
#if not loaded,push to stack
|
98
104
|
@filestack.push(file)
|
99
105
|
#add globals.yml before load file
|
100
|
-
|
106
|
+
@logger.info file
|
101
107
|
content = open(file.gsub("\\","/")){|f| f.read}
|
102
108
|
content = YAML::load(content)
|
103
109
|
return if content.class == FalseClass
|
@@ -134,7 +140,7 @@ class YML_Merger
|
|
134
140
|
if struct[key]['attribute'] == "required"
|
135
141
|
struct[key].each_key do |subkey|
|
136
142
|
if struct.has_key?(subkey) and struct[subkey].class == Hash
|
137
|
-
|
143
|
+
@logger.debug "pre process #{key} -> #{subkey}"
|
138
144
|
struct[subkey] = struct[subkey].deep_merge(deep_copy(struct[key][subkey]))
|
139
145
|
#struct[subkey] = struct[subkey].deep_merge(struct[key][subkey])
|
140
146
|
#puts struct[subkey].to_yaml
|
@@ -204,6 +210,7 @@ class YML_Merger
|
|
204
210
|
# - addon: the key that idetify the addon module
|
205
211
|
def deep_add_merge(struct, subnode, addon)
|
206
212
|
return if Hash != struct.class
|
213
|
+
return if struct[addon].nil?
|
207
214
|
if struct[addon]['__add__'].nil?
|
208
215
|
#we do not want the addon module to change the status
|
209
216
|
struct[addon]['attribute'] = ""
|
@@ -232,6 +239,7 @@ class YML_Merger
|
|
232
239
|
return if Hash != struct.class
|
233
240
|
struct.each_key do |subnode|
|
234
241
|
next if @KEY_LIST.include?(subnode)
|
242
|
+
next if struct[subnode].nil?
|
235
243
|
if struct[subnode]['__add__'] != nil
|
236
244
|
struct[subnode]['__add__'].each do |addon|
|
237
245
|
next if struct[addon].class != Hash
|