ebngen 1.0.2 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/ebngen/adapter/iar/ewp.rb +27 -11
- data/lib/ebngen/adapter/iar.rb +46 -7
- data/lib/ebngen/translate.rb +2 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f863cc72f12344124ff81b3aa7e3a8217fadd927
|
4
|
+
data.tar.gz: 7c235d27bbf94c9170da3efe3a8ba50e91165b6d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aeb4aa02969f5521d775a51287afac98174e4b53d0cff7010ee42f25a6536f41a8be35d8289357457c792c17b4799efc0ace6188542507ac679c56a37076e652
|
7
|
+
data.tar.gz: 914f0738dc4e77d8419003813b4f3f4f1d7b8603b86aa429a483dade9e76a0d433ec4d806c3aa02d7acf462ee1be19a776bd938b28dea107770c1488d3f2999f
|
@@ -4,6 +4,16 @@ require 'pathname'
|
|
4
4
|
|
5
5
|
class Hash
|
6
6
|
def to_xml(doc)
|
7
|
+
return if doc.nil?
|
8
|
+
self.each do |key, value|
|
9
|
+
mynode = Nokogiri::XML::Node.new key, doc
|
10
|
+
doc.add_child mynode
|
11
|
+
value.to_xml(mynode) if value.class == Hash
|
12
|
+
mynode.content = value if value.class == String or value.class == Fixnum
|
13
|
+
end
|
14
|
+
return doc
|
15
|
+
end #end to_xml
|
16
|
+
def to_xml!(doc)
|
7
17
|
return if doc.nil?
|
8
18
|
self.each do |key, value|
|
9
19
|
if doc.css("/#{key}").count == 0
|
@@ -16,7 +26,7 @@ class Hash
|
|
16
26
|
mynode.content = value if value.class == String or value.class == Fixnum
|
17
27
|
end
|
18
28
|
return doc
|
19
|
-
end #end to_xml
|
29
|
+
end #end to_xml!
|
20
30
|
end #end Hash
|
21
31
|
|
22
32
|
module EWP
|
@@ -28,15 +38,16 @@ module EWP
|
|
28
38
|
nset = load_node(doc, "/project/configuration")
|
29
39
|
#use existing one
|
30
40
|
nset.each do |element|
|
31
|
-
if element.
|
32
|
-
|
41
|
+
if element.css("/name").text.downcase == target.downcase
|
42
|
+
puts "find existing #{element.css("/name").text.downcase}"
|
43
|
+
return element
|
33
44
|
end
|
34
45
|
end
|
35
46
|
#create new one
|
36
47
|
nset.each do |element|
|
37
48
|
#use the first available configuration
|
38
49
|
t = element.dup
|
39
|
-
t.
|
50
|
+
t.css('/name').text = target
|
40
51
|
#doc.xpath("/project") << t
|
41
52
|
element.add_previous_sibling(t)
|
42
53
|
return t
|
@@ -84,13 +95,17 @@ module EWP
|
|
84
95
|
end
|
85
96
|
|
86
97
|
def create_node(doc, hash_value)
|
98
|
+
hash_value.to_xml!(doc)
|
99
|
+
end
|
100
|
+
|
101
|
+
def append_node(doc, hash_value)
|
87
102
|
hash_value.to_xml(doc)
|
88
103
|
end
|
89
104
|
|
90
105
|
def add_specific(target_node, doc)
|
91
106
|
doc.each do |key, value|
|
92
107
|
checked = false
|
93
|
-
options = target_node.xpath("
|
108
|
+
options = target_node.xpath(".//option")
|
94
109
|
options.each do |option|
|
95
110
|
if option.css('name').text == key
|
96
111
|
value.each do |subkey, subvalue|
|
@@ -102,7 +117,7 @@ module EWP
|
|
102
117
|
end
|
103
118
|
elsif subvalue.class == Array
|
104
119
|
subvalue.each do |line|
|
105
|
-
|
120
|
+
append_node(option, {subkey => line})
|
106
121
|
end
|
107
122
|
else
|
108
123
|
puts "not supported format must be string or array"
|
@@ -124,7 +139,7 @@ module EWP
|
|
124
139
|
create_node(option_node, {subkey => subvalue})
|
125
140
|
elsif subvalue.class == Array
|
126
141
|
subvalue.each do |line|
|
127
|
-
|
142
|
+
append_node(option_node, {subkey => line})
|
128
143
|
end
|
129
144
|
else
|
130
145
|
puts "not supported format must be string or array"
|
@@ -141,7 +156,7 @@ module EWP
|
|
141
156
|
def set_specific(target_node, doc)
|
142
157
|
doc.each do |key, value|
|
143
158
|
checked = false
|
144
|
-
options = target_node.xpath("
|
159
|
+
options = target_node.xpath(".//option")
|
145
160
|
options.each do |option|
|
146
161
|
if option.css('name').text == key
|
147
162
|
value.each do |subkey, subvalue|
|
@@ -153,7 +168,7 @@ module EWP
|
|
153
168
|
end
|
154
169
|
elsif subvalue.class == Array
|
155
170
|
subvalue.each do |line|
|
156
|
-
|
171
|
+
append_node(node, {subkey => line})
|
157
172
|
end
|
158
173
|
else
|
159
174
|
puts "not supported format must be string or array"
|
@@ -176,7 +191,7 @@ module EWP
|
|
176
191
|
create_node(option_node, {subkey => subvalue})
|
177
192
|
elsif subvalue.class == Array
|
178
193
|
subvalue.each do |line|
|
179
|
-
|
194
|
+
append_node(option_node, {subkey => line})
|
180
195
|
end
|
181
196
|
else
|
182
197
|
puts "not supported format must be string or array"
|
@@ -203,7 +218,8 @@ module EWP
|
|
203
218
|
files_hash = Hash.new
|
204
219
|
source_hash.each do |src|
|
205
220
|
rootdir = src['rootdir']
|
206
|
-
virtual_dir = src['virtual_dir']
|
221
|
+
virtual_dir = src['virtual_dir'] if src.has_key? 'virtual_dir'
|
222
|
+
virtual_dir = src['virtual-dir'] if src.has_key? 'virtual-dir'
|
207
223
|
if src.has_key?('path')
|
208
224
|
path = src['path']
|
209
225
|
else
|
data/lib/ebngen/adapter/iar.rb
CHANGED
@@ -81,7 +81,8 @@ class Project
|
|
81
81
|
#set project type
|
82
82
|
end
|
83
83
|
|
84
|
-
def
|
84
|
+
def document()
|
85
|
+
project_name = get_project_name()
|
85
86
|
|
86
87
|
end
|
87
88
|
|
@@ -147,7 +148,7 @@ class Project
|
|
147
148
|
}
|
148
149
|
set_specific(target_node, settings)
|
149
150
|
settings = {'GEndianModeBE' => {
|
150
|
-
'state' => 1
|
151
|
+
'state' => '1'
|
151
152
|
}
|
152
153
|
}
|
153
154
|
set_specific(target_node, settings)
|
@@ -158,8 +159,18 @@ class Project
|
|
158
159
|
end
|
159
160
|
|
160
161
|
def target_as_defines(target_node, doc)
|
162
|
+
defines_array = Array.new
|
163
|
+
doc.each do |item|
|
164
|
+
if item.class == Hash
|
165
|
+
item.each do |key, value|
|
166
|
+
defines_array.insert(-1, "#{key}=#{value}")
|
167
|
+
end
|
168
|
+
else
|
169
|
+
defines_array.insert(-1, item)
|
170
|
+
end
|
171
|
+
end
|
161
172
|
settings = {'ADefines' => {
|
162
|
-
'state' =>
|
173
|
+
'state' => defines_array
|
163
174
|
}
|
164
175
|
}
|
165
176
|
add_specific(target_node, settings)
|
@@ -183,8 +194,18 @@ class Project
|
|
183
194
|
end
|
184
195
|
|
185
196
|
def target_as_flags(target_node, doc)
|
197
|
+
flags_array = Array.new
|
198
|
+
doc.each do |item|
|
199
|
+
if item.class == Hash
|
200
|
+
item.each do |key, value|
|
201
|
+
flags_array.insert(-1, "#{key}=#{value}")
|
202
|
+
end
|
203
|
+
else
|
204
|
+
flags_array.insert(-1, item)
|
205
|
+
end
|
206
|
+
end
|
186
207
|
settings = {'AExtraOptionsV2' => {
|
187
|
-
'state' =>
|
208
|
+
'state' => flags_array
|
188
209
|
}
|
189
210
|
}
|
190
211
|
add_specific(target_node, settings)
|
@@ -212,8 +233,16 @@ class Project
|
|
212
233
|
end
|
213
234
|
|
214
235
|
def target_cc_defines(target_node, doc)
|
236
|
+
defines_array = Array.new
|
237
|
+
doc.each do |item, item_value|
|
238
|
+
if item_value.nil?
|
239
|
+
defines_array.insert(-1, "#{item}")
|
240
|
+
else
|
241
|
+
defines_array.insert(-1, "#{item}=#{item_value}")
|
242
|
+
end
|
243
|
+
end
|
215
244
|
settings = {'CCDefines' => {
|
216
|
-
'state' =>
|
245
|
+
'state' => defines_array
|
217
246
|
}
|
218
247
|
}
|
219
248
|
add_specific(target_node, settings)
|
@@ -238,7 +267,7 @@ class Project
|
|
238
267
|
|
239
268
|
def target_cc_flags(target_node, doc)
|
240
269
|
settings_check = { 'IExtraOptionsCheck' => {
|
241
|
-
'state' => 1
|
270
|
+
'state' => '1'
|
242
271
|
}
|
243
272
|
}
|
244
273
|
add_specific(target_node, settings_check)
|
@@ -306,7 +335,17 @@ class Project
|
|
306
335
|
end
|
307
336
|
|
308
337
|
def target_outdir(target_node, doc)
|
309
|
-
|
338
|
+
=begin
|
339
|
+
<option>
|
340
|
+
<name>IlinkOutputFile</name>
|
341
|
+
<state>K70_pit_drivers_test.out</state>
|
342
|
+
</option>
|
343
|
+
=end
|
344
|
+
settings = { 'IlinkOutputFile' => {
|
345
|
+
'state' => "#{get_project_name()}.out"
|
346
|
+
}
|
347
|
+
}
|
348
|
+
set_specific(target_node, settings)
|
310
349
|
end
|
311
350
|
|
312
351
|
end
|
data/lib/ebngen/translate.rb
CHANGED
@@ -46,6 +46,8 @@ class Translator
|
|
46
46
|
end
|
47
47
|
#if has more addon
|
48
48
|
if struct[addon]['__add__'].count != 0
|
49
|
+
struct[subnode] = struct[subnode].deep_merge(deep_copy(struct[addon]))
|
50
|
+
struct[addon]['attribute'] = 'required'
|
49
51
|
struct[addon]['__add__'].each do |submodule|
|
50
52
|
deep_add_merge(struct, addon, submodule)
|
51
53
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ebngen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
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: 2017-
|
12
|
+
date: 2017-06-16 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: embedded project generator
|
15
15
|
email: hakehuang@gmail.com
|