17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
# File 'lib/Converter.rb', line 17
def convert
pwd = @configFile
outputfilename = @map['OutputFile']
templatefilename = Util.makeAbsolute(@map['TemplateFile'], pwd)
lineIdx = 0
tmpLineIdx = 0
set = true
@map.delete_if{|k,_| (k=="EXCLUDE_BAKE_DEPENDENCIES" || k=="EXCLUDE_BAKE_SOURCES" || k=="EXCLUDE_BAKE_INCLUDES") }
begin
File.open(outputfilename, 'w') do |fout|
File.open(templatefilename) do |fread|
File.readlines(fread).each do |line|
lineIdx += 1
wroteLine = false
@map.keys.each do |key|
if line.include?(key.to_s) && @map[key].include?(".txt")
preAndPostfix = line.scan(/(.*)\$\$\(#{key}\)(.*)/)
preAndPostfixOpt = line.scan(/(.*)\$OPTION\(#{key}\)(.*)/)
if preAndPostfix.length == 1
prefix = preAndPostfix[0][0]
postfix = preAndPostfix[0][1]
elsif preAndPostfixOpt.length == 1
prefix = preAndPostfixOpt[0][0]
postfix = preAndPostfixOpt[0][1]
end
filename = Util.makeAbsolute(@map[key], pwd)
raise "Error: Template file #{File.basename(filename)} is empty!" if File.zero?(filename)
raise "Error: File #{File.basename(filename)} does not exist!" if !File.exist?(filename)
File.open(filename) do |fr|
File.readlines(fr).each do |l|
tmpLineIdx += 1
@map.keys.each do |k|
wroteLine = findAndReplace(k, l, fout, prefix, postfix)
break if wroteLine == true
end
if wroteLine == false
l.strip!
l = prefix + l + postfix + "\n"
m = l.match(/\$\$\((.*)\)/)
opt = l.match(/\$OPTION\((.*)\)/)
raise "Error: Key $$(#{m[1]}) in #{File.basename(filename)}, line #{tmpLineIdx.to_s} wasn\'t replaced!" if m
puts "Info: Key $OPTION(#{opt[1]}) in #{File.basename(filename)}, line #{tmpLineIdx.to_s} wasn\'t replaced!" if opt
fout.write(l)
set = false
end
end
end
elsif (@map[key][0] == "[") && (@map[key][-1] == "]")
@map.store(key,Util.strToArray(key, @map))
wroteLine = findAndReplace(key, line, fout, "", "")
break
elsif line.match(/\$\$\(#{key}\)/)
wroteLine = findAndReplace(key, line, fout, "", "")
break
elsif line.match(/\$OPTION\(#{key}\)/)
wroteLine = findAndReplace(key, line, fout, "", "")
break
end
end
if wroteLine == false
if set == true
m = line.match(/\$\$\((.*)\)/)
opt = line.match(/\$OPTION\((.*)\)/)
raise "Error: Key $$(#{m[1]}) in #{File.basename(templatefilename)}, line #{lineIdx.to_s} wasn\'t replaced!" if m
puts "Info: Key $OPTION(#{opt[1]}) in #{File.basename(templatefilename)}, line #{lineIdx.to_s} wasn\'t replaced!" if opt
fout.write(line)
end
set = true
end
end
end
end
raise "Error: Output file #{File.basename(outputfilename)} is empty!" if File.zero?(outputfilename)
raise "Error: Template file #{File.basename(templatefilename)} is empty!" if File.zero?(templatefilename)
rescue Exception => e
puts e.message
puts e.back_trace if @debugMode == true
abort
end
return 0
end
|