ebngen 1.0.2 → 1.0.3
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/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
|