machine_setup 0.2.0 → 0.3.0
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.
- data/Rakefile +2 -3
- data/VERSION +1 -1
- data/bin/setup_config_gen +11 -5
- data/bin/setup_init_dsl +10 -4
- data/examples/ssm/ssm.setup.param +12 -36
- data/examples/ssm/ssm.setup.param.de.yml +69 -27
- data/examples/ssm/ssm.setup.param.en.yml +64 -13
- data/examples/underleaver/underleaver.setup.param +5 -4
- data/examples/underleaver/underleaver.setup.param.de.yml +8 -8
- data/lib/setup_configuration/generator_module.rb +84 -0
- data/lib/setup_configuration/legacy/importer.rb +3 -3
- data/lib/setup_configuration/mps_template_binding.rb +58 -0
- data/lib/setup_configuration/parameter_template_binding.rb +71 -0
- data/lib/setup_configuration/setup_code_binding.rb +40 -0
- data/lib/setup_configuration/setup_code_generator.rb +24 -0
- data/lib/setup_configuration/setup_config.rb +37 -4
- data/lib/setup_configuration/suite_generator.rb +29 -311
- data/lib/setup_configuration/template_binding.rb +28 -0
- data/lib/setup_configuration/templates/english.lng.erb +2 -2
- data/lib/setup_configuration/translation.rb +40 -27
- data/lib/setup_configuration.rb +6 -3
- data/test/setup_configuration/parameter_factory_test.rb +27 -0
- metadata +13 -7
@@ -0,0 +1,58 @@
|
|
1
|
+
# encoding: windows-1252
|
2
|
+
|
3
|
+
module SetupConfiguration
|
4
|
+
|
5
|
+
module Generator
|
6
|
+
|
7
|
+
class MPSTemplateBinding < TemplateBinding
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
yield self
|
11
|
+
end
|
12
|
+
|
13
|
+
def languages
|
14
|
+
Translation.language_names
|
15
|
+
end
|
16
|
+
|
17
|
+
def settings
|
18
|
+
self.suite.settings
|
19
|
+
end
|
20
|
+
|
21
|
+
def param_infos(category_key)
|
22
|
+
parameters=suite.categories[category_key]
|
23
|
+
depends, machine_type, number=[], [], []
|
24
|
+
parameters.each() do |param|
|
25
|
+
machine_type << param.machine_type
|
26
|
+
number << param.number
|
27
|
+
depends << depends_on(param.dependency)
|
28
|
+
end
|
29
|
+
#TODO compute value for max_number_parameters_per_tab of value maximum_numbers_per_category
|
30
|
+
max_number_parameters_per_tab=50
|
31
|
+
[depends, machine_type, number].collect() { |arr| (arr.in_groups_of(max_number_parameters_per_tab, false)).collect() { |a| prepare(a) } }
|
32
|
+
end
|
33
|
+
|
34
|
+
:private
|
35
|
+
|
36
|
+
def prepare(array)
|
37
|
+
array.join(',')
|
38
|
+
end
|
39
|
+
|
40
|
+
def depends_on(key)
|
41
|
+
|
42
|
+
if :none.eql?(key) then
|
43
|
+
-1
|
44
|
+
else
|
45
|
+
param=suite.find_param(key)
|
46
|
+
if param
|
47
|
+
param.number
|
48
|
+
else
|
49
|
+
$stderr.puts "ERROR: parameter with key '#{key}' not found."
|
50
|
+
# depends on no other parameter
|
51
|
+
-1
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# encoding: windows-1252
|
2
|
+
|
3
|
+
module SetupConfiguration
|
4
|
+
|
5
|
+
module Generator
|
6
|
+
|
7
|
+
class ParameterTemplateBinding < TemplateBinding
|
8
|
+
attr_accessor :lang
|
9
|
+
attr_accessor :parameter_range
|
10
|
+
|
11
|
+
def initialize(lang, range, output)
|
12
|
+
@lang=lang
|
13
|
+
@parameter_range=range
|
14
|
+
@output=output
|
15
|
+
@translator = Translation::Translator.new()
|
16
|
+
end
|
17
|
+
|
18
|
+
def lang_name
|
19
|
+
Translation.language_name(lang)
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
def cat_name(cat)
|
24
|
+
name, desc=@translator.translate(cat.name, @lang)
|
25
|
+
$stderr.puts("WARNING: missing translation for key #{@lang}.#{cat.name}.#{Translation::Translator::NAME}") if name.eql?(cat.name.to_s)
|
26
|
+
name
|
27
|
+
end
|
28
|
+
|
29
|
+
def name(number)
|
30
|
+
p_name= translate(number) { |name, desc| name }
|
31
|
+
if find_param_by_number(number) && p_name.eql?(find_param_by_number(number).key.to_s)
|
32
|
+
$stderr.puts("WARNING: missing translation for key #{@lang}.#{find_param_by_number(number).key.to_s}.#{Translation::Translator::NAME}")
|
33
|
+
end
|
34
|
+
p_name.empty? ? "placeholder for mps3.exe" : p_name
|
35
|
+
end
|
36
|
+
|
37
|
+
def description(number)
|
38
|
+
translate(number) do |name, desc|
|
39
|
+
$stderr.puts("WARNING: missing translation for key #{@lang}.#{find_param_by_number(number).key.to_s}.#{Translation::Translator::COMMENT}") if desc.empty?
|
40
|
+
escape(desc)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def translate(number, &extractor)
|
45
|
+
p=find_param_by_number(number)
|
46
|
+
if p
|
47
|
+
key=p.key
|
48
|
+
translation = @translator.translate(key, @lang)
|
49
|
+
if extractor
|
50
|
+
extractor.call(*translation)
|
51
|
+
else
|
52
|
+
translation
|
53
|
+
end
|
54
|
+
else
|
55
|
+
""
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
private
|
60
|
+
|
61
|
+
#
|
62
|
+
# Zeilenumbr�che werden mit '��' dargestellt
|
63
|
+
# \302\247 - oktale Darstellung von � (Paragraphenzeichen)
|
64
|
+
#
|
65
|
+
def escape(message)
|
66
|
+
message.gsub(/\n\s?/, '��')
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module SetupConfiguration
|
2
|
+
|
3
|
+
class SetupCodeBinding < Generator::TemplateBinding
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
super
|
7
|
+
end
|
8
|
+
|
9
|
+
def parameters
|
10
|
+
#TODO use set or something similar
|
11
|
+
suite.parameters.select() { |p| p.param? }
|
12
|
+
end
|
13
|
+
|
14
|
+
#
|
15
|
+
# Offset for setup parameter numbers. This offset is added to a parameter number when evaluated in controller.
|
16
|
+
#
|
17
|
+
def parameter_offset
|
18
|
+
1300
|
19
|
+
end
|
20
|
+
|
21
|
+
def key(symbol)
|
22
|
+
s=symbol.to_s
|
23
|
+
delimiter='_'
|
24
|
+
s.split(delimiter).collect() { |splitter| splitter.capitalize }.join(delimiter).ljust(longest_key_length)
|
25
|
+
end
|
26
|
+
|
27
|
+
:private
|
28
|
+
|
29
|
+
def longest_key_length
|
30
|
+
# find the length of the longest word
|
31
|
+
unless @longest
|
32
|
+
longest = parameters.inject(0) do |memo, param|
|
33
|
+
memo >= param.key.to_s.length ? memo : param.key.to_s.length
|
34
|
+
end
|
35
|
+
@longest=longest + 5
|
36
|
+
end
|
37
|
+
@longest
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# encoding: windows-1252
|
2
|
+
|
3
|
+
module SetupConfiguration
|
4
|
+
|
5
|
+
class SetupCodeGenerator
|
6
|
+
include Generator
|
7
|
+
|
8
|
+
def generate(suite, output_path)
|
9
|
+
setup_code=SetupCodeBinding.new
|
10
|
+
setup_code.output="LOGCODE#{suite.name.to_s.upcase}SETUP.EXP"
|
11
|
+
setup_code.suite=suite
|
12
|
+
self.output_path=output_path
|
13
|
+
output(setup_code, template)
|
14
|
+
end
|
15
|
+
|
16
|
+
:private
|
17
|
+
|
18
|
+
def template
|
19
|
+
find_template("logcodesetup.exp.erb")
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -41,7 +41,7 @@ module SetupConfiguration
|
|
41
41
|
# flatten is needed: Parameters#param returns an array which is inserted in an array...
|
42
42
|
categories[cat].flatten!
|
43
43
|
else
|
44
|
-
puts "WARNING: Empty category '#{category}' will be ignored. "
|
44
|
+
$stderr.puts "WARNING: Empty category '#{category}' will be ignored. "
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
@@ -111,7 +111,7 @@ module SetupConfiguration
|
|
111
111
|
|
112
112
|
self.parameters().each() do |p|
|
113
113
|
|
114
|
-
puts "WARNING: parameter number 404 is reserved for machine type. you are using it for '#{p.key}'." if p.number.eql?(404)
|
114
|
+
$stderr.puts "WARNING: parameter number 404 is reserved for machine type. you are using it for '#{p.key}'." if p.number.eql?(404)
|
115
115
|
throw RuntimeError.new("ERROR: parameter number '#{p.number}' not supported. Number must be in range #{valid_param_numbers}.") unless valid_param_numbers.member?(p.number)
|
116
116
|
|
117
117
|
if p.param?
|
@@ -180,6 +180,7 @@ module SetupConfiguration
|
|
180
180
|
@balance_maximum=range
|
181
181
|
end
|
182
182
|
|
183
|
+
#TODO remove range argument
|
183
184
|
def machine_type(name, number, range)
|
184
185
|
machine_type = MachineType.new(name, number, range)
|
185
186
|
@machine_types << machine_type
|
@@ -228,6 +229,7 @@ module SetupConfiguration
|
|
228
229
|
p = Parameter.new(parameter, number)
|
229
230
|
p.instance_eval(¶meter_def) if parameter_def
|
230
231
|
params << p
|
232
|
+
p
|
231
233
|
end
|
232
234
|
|
233
235
|
def param_ref(parameter)
|
@@ -235,6 +237,34 @@ module SetupConfiguration
|
|
235
237
|
params << p
|
236
238
|
end
|
237
239
|
|
240
|
+
|
241
|
+
#
|
242
|
+
# Additional block is allowed, it may contain call for_machine_type and depends_on.
|
243
|
+
# This additional information is applied only to generated parameter
|
244
|
+
# <drive>_selection.
|
245
|
+
# The additional for_machine_type is also applied to other generated parameters.
|
246
|
+
#
|
247
|
+
def drive(drive, number, ¶meter_def)
|
248
|
+
|
249
|
+
key = symbol(drive, "drive")
|
250
|
+
drive_selection = symbol(key, "selection")
|
251
|
+
|
252
|
+
drive_param=param(drive_selection, number)
|
253
|
+
drive_param.instance_eval(¶meter_def) if parameter_def
|
254
|
+
|
255
|
+
properties=[%w(distance revolution), %w( gear in ), %w( gear out ), "length", "motortype" ]
|
256
|
+
properties.each_with_index do |prop, index|
|
257
|
+
parameter = param(symbol(key, *prop), number + index + 1) { depends_on drive_selection }
|
258
|
+
parameter.for_machine_type(drive_param.machine_type)
|
259
|
+
end
|
260
|
+
|
261
|
+
end
|
262
|
+
|
263
|
+
:private
|
264
|
+
|
265
|
+
def symbol(*strings)
|
266
|
+
strings.join('_').to_sym
|
267
|
+
end
|
238
268
|
end
|
239
269
|
|
240
270
|
class Parameter
|
@@ -316,6 +346,8 @@ module SetupConfiguration
|
|
316
346
|
class MachineType
|
317
347
|
include Enumerable
|
318
348
|
|
349
|
+
RANGES = [0..999, 1000..1999, 2000..2499, 2500..2999, 3000..3999, 4000..4999, 5000..5999, 6000..6999].freeze
|
350
|
+
|
319
351
|
attr_reader :name
|
320
352
|
attr_reader :range
|
321
353
|
attr_reader :sequence_number
|
@@ -323,8 +355,9 @@ module SetupConfiguration
|
|
323
355
|
|
324
356
|
def initialize(name, sequence_number, range)
|
325
357
|
@name=name
|
326
|
-
|
358
|
+
raise RuntimeError.new("ERROR: More than #{RANGES.length} different machine types are not supported: [name=#{name}] [number=#{sequence_number}]") if sequence_number >= RANGES.length
|
327
359
|
@sequence_number=sequence_number
|
360
|
+
@range=RANGES[@sequence_number]
|
328
361
|
if @sequence_number <= 0
|
329
362
|
@binary_number=0
|
330
363
|
else
|
@@ -339,4 +372,4 @@ module SetupConfiguration
|
|
339
372
|
end
|
340
373
|
|
341
374
|
end
|
342
|
-
|
375
|
+
|
@@ -1,332 +1,50 @@
|
|
1
|
-
# encoding:
|
1
|
+
# encoding: windows-1252
|
2
2
|
|
3
|
-
module SetupConfiguration
|
4
|
-
@output_path=""
|
3
|
+
module SetupConfiguration
|
5
4
|
|
6
|
-
|
7
|
-
|
8
|
-
end
|
9
|
-
|
10
|
-
def output_path=(out)
|
11
|
-
@output_path=out
|
12
|
-
end
|
13
|
-
|
14
|
-
class TemplateBinding
|
5
|
+
class SuiteGenerator
|
6
|
+
include Generator
|
15
7
|
|
16
8
|
attr_accessor :suite
|
17
|
-
attr_accessor :
|
18
|
-
|
19
|
-
def categories
|
20
|
-
#TODO maybe cache these values for better performance...?
|
21
|
-
suite.categories.keys().sort()
|
22
|
-
end
|
23
|
-
|
24
|
-
# Support templating of member data.
|
25
|
-
def get_binding
|
26
|
-
binding
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
|
-
class ParameterTemplateBinding < TemplateBinding
|
32
|
-
attr_accessor :lang
|
33
|
-
attr_accessor :parameter_range
|
34
|
-
|
35
|
-
def initialize(lang, range, output)
|
36
|
-
@lang=lang
|
37
|
-
@parameter_range=range
|
38
|
-
@output=output
|
39
|
-
@translator = SetupConfiguration::Translation::Translator.new()
|
40
|
-
end
|
41
|
-
|
42
|
-
def lang_name
|
43
|
-
SetupConfiguration::Translation.language_name(lang)
|
44
|
-
end
|
45
|
-
|
46
|
-
|
47
|
-
def cat_name(cat)
|
48
|
-
name, desc=@translator.translate(cat.name, @lang)
|
49
|
-
name
|
50
|
-
end
|
51
|
-
|
52
|
-
def name(number)
|
53
|
-
p_name= translate(number) { |name, desc| name }
|
54
|
-
p_name.empty? ? "placeholder for mps3.exe" : p_name
|
55
|
-
end
|
56
|
-
|
57
|
-
def description(number)
|
58
|
-
translate(number) do |name, desc|
|
59
|
-
escape(desc)
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
def translate(number, &extractor)
|
64
|
-
p=self.suite.find_param_by_number(number)
|
65
|
-
if p
|
66
|
-
key=p.key
|
67
|
-
translation = @translator.translate(key, @lang)
|
68
|
-
if extractor
|
69
|
-
extractor.call( *translation )
|
70
|
-
else
|
71
|
-
translation
|
72
|
-
end
|
73
|
-
else
|
74
|
-
""
|
75
|
-
end
|
76
|
-
end
|
9
|
+
attr_accessor :do_not_run
|
77
10
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
# Zeilenumbr�che werden mit '��' dargestellt
|
82
|
-
# \302\247 - oktale Darstellung von �
|
83
|
-
#
|
84
|
-
def escape(message)
|
85
|
-
message.gsub(/\n\s?/, '��' )
|
11
|
+
def initialize
|
12
|
+
self.do_not_run = false
|
13
|
+
self.suite = Suite.instance
|
86
14
|
end
|
87
15
|
|
88
|
-
|
89
|
-
|
90
|
-
class MPSTemplateBinding < TemplateBinding
|
91
|
-
|
92
|
-
def languages
|
93
|
-
SetupConfiguration::Translation.language_names.values
|
16
|
+
def self.do_not_run
|
17
|
+
self.do_not_run=true
|
94
18
|
end
|
95
19
|
|
96
|
-
def
|
97
|
-
self.
|
98
|
-
end
|
20
|
+
def generate
|
21
|
+
return "no output" if self.do_not_run
|
99
22
|
|
100
|
-
|
101
|
-
|
102
|
-
depends, machine_type, number=[], [], []
|
103
|
-
parameters.each() do |param|
|
104
|
-
machine_type << param.machine_type
|
105
|
-
number << param.number
|
106
|
-
depends << depends_on(param.dependency)
|
107
|
-
end
|
108
|
-
#TODO compute value for max_number_parameters_per_tab of value maximum_numbers_per_category
|
109
|
-
max_number_parameters_per_tab=50
|
110
|
-
[depends, machine_type, number].collect(){ |arr| (arr.in_groups_of(max_number_parameters_per_tab, false)).collect(){|a| prepare(a)}}
|
111
|
-
end
|
23
|
+
description_bindings().each() do |bind|
|
24
|
+
bind.suite=self.suite
|
112
25
|
|
113
|
-
|
114
|
-
|
115
|
-
def prepare(array)
|
116
|
-
array.join(',')
|
117
|
-
end
|
118
|
-
|
119
|
-
def depends_on(key)
|
120
|
-
|
121
|
-
if :none.eql?(key) then
|
122
|
-
-1
|
123
|
-
else
|
124
|
-
param=suite.find_param(key)
|
125
|
-
if param
|
126
|
-
param.number
|
127
|
-
else
|
128
|
-
puts "ERROR: parameter with key '#{key}' not found."
|
129
|
-
# depends on no other parameter
|
130
|
-
-1
|
131
|
-
end
|
26
|
+
output(bind, description_template)
|
132
27
|
end
|
133
|
-
end
|
134
|
-
|
135
|
-
end
|
136
28
|
|
137
|
-
#
|
138
|
-
#
|
139
|
-
#
|
140
|
-
#
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
# constructs the output file names
|
147
|
-
out= "#{SetupConfiguration::Translation.language_name(lang)}#{SetupConfiguration.description_ranges().index(range)+1}.lng"
|
148
|
-
ParameterTemplateBinding.new(lang, range, out)
|
29
|
+
# extras:
|
30
|
+
# -every PARAMETER key needs a value!
|
31
|
+
# -use Windows line terminators CRLF - \r\n
|
32
|
+
# - do not use []
|
33
|
+
#- output is an INI-file
|
34
|
+
parameter_bindings().each() do |bind|
|
35
|
+
bind.suite=self.suite
|
36
|
+
template = parameter_template(bind.lang_name())
|
37
|
+
output(bind, template)
|
149
38
|
end
|
150
|
-
end.flatten()
|
151
|
-
end
|
152
|
-
|
153
|
-
def description_template
|
154
|
-
%q{
|
155
|
-
[<%= lang_name.upcase %>]
|
156
|
-
<% parameter_range.each do |number| %>
|
157
|
-
HILFEPARAM<%= number %>=<%= description(number) %>
|
158
|
-
<% end %>
|
159
|
-
}.gsub(/^\s*/, '')
|
160
|
-
end
|
161
|
-
|
162
|
-
def parameter_bindings()
|
163
|
-
SetupConfiguration::Translation.languages().collect() do |lang|
|
164
|
-
# constructs the output file names
|
165
|
-
out= "#{SetupConfiguration::Translation.language_name(lang)}.lng"
|
166
|
-
ParameterTemplateBinding.new(lang, SetupConfiguration.parameter_range(), out)
|
167
|
-
end
|
168
|
-
end
|
169
|
-
|
170
|
-
def parameter_template(lang)
|
171
|
-
template=File.join(File.dirname(__FILE__), "templates", "#{lang.to_s}.lng.erb")
|
172
|
-
if File.file?(template)
|
173
|
-
File.read(template)
|
174
|
-
else
|
175
|
-
puts "WARNING: Template file #{template} expected but not found"
|
176
|
-
end
|
177
|
-
end
|
178
|
-
|
179
|
-
def mps_template()
|
180
|
-
template=File.join(File.dirname(__FILE__), "templates", "mps3.ini.erb")
|
181
|
-
if File.file?(template)
|
182
|
-
File.read(template)
|
183
|
-
else
|
184
|
-
puts "WARNING: Template file #{template} expected but not found"
|
185
|
-
end
|
186
|
-
end
|
187
39
|
|
188
|
-
|
189
|
-
mps=MPSTemplateBinding.new
|
190
|
-
mps.output="mps3.ini"
|
191
|
-
mps
|
192
|
-
end
|
193
|
-
|
194
|
-
|
195
|
-
end
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
class SetupConfiguration::SetupCodeBinding < SetupConfiguration::Generator::TemplateBinding
|
200
|
-
|
201
|
-
def initialize
|
202
|
-
super
|
203
|
-
end
|
204
|
-
|
205
|
-
def parameters
|
206
|
-
#TODO use set or something similar
|
207
|
-
suite.parameters.select(){|p| p.param? }
|
208
|
-
end
|
209
|
-
|
210
|
-
#
|
211
|
-
# Offset for setup parameter numbers. This offset is added to a parameter number when evaluated in controller.
|
212
|
-
#
|
213
|
-
def parameter_offset
|
214
|
-
1300
|
215
|
-
end
|
216
|
-
|
217
|
-
def key(symbol)
|
218
|
-
s=symbol.to_s
|
219
|
-
delimiter='_'
|
220
|
-
s.split(delimiter).collect(){|splitter| splitter.capitalize}.join(delimiter).ljust(longest_key_length)
|
221
|
-
end
|
222
|
-
|
223
|
-
:private
|
224
|
-
|
225
|
-
def longest_key_length
|
226
|
-
# find the length of the longest word
|
227
|
-
unless @longest
|
228
|
-
longest = parameters.inject(0) do |memo, param|
|
229
|
-
memo >= param.key.to_s.length ? memo : param.key.to_s.length
|
230
|
-
end
|
231
|
-
@longest=longest + 5
|
232
|
-
end
|
233
|
-
@longest
|
234
|
-
end
|
235
|
-
end
|
236
|
-
|
237
|
-
class SetupConfiguration::SetupCodeGenerator
|
238
|
-
|
239
|
-
def generate(suite, output_path)
|
240
|
-
setup_code=SetupConfiguration::SetupCodeBinding.new
|
241
|
-
setup_code.output="LOGCODE#{suite.name.to_s.upcase}SETUP.EXP"
|
242
|
-
setup_code.suite=suite
|
243
|
-
|
244
|
-
if template then
|
245
|
-
rhtml = Erubis::Eruby.new( template )
|
246
|
-
|
247
|
-
File.open(File.join(output_path, setup_code.output), "w") do |f|
|
248
|
-
f << rhtml.result(setup_code.get_binding)
|
249
|
-
end
|
250
|
-
else
|
251
|
-
puts "WARNING: No template found. Generation of #{setup_code.output} aborted."
|
252
|
-
end
|
253
|
-
|
254
|
-
|
255
|
-
end
|
256
|
-
|
257
|
-
:private
|
258
|
-
|
259
|
-
def template
|
260
|
-
template=File.join(File.dirname(__FILE__), "templates", "logcodesetup.exp.erb")
|
261
|
-
if File.file?(template)
|
262
|
-
File.read(template)
|
263
|
-
else
|
264
|
-
puts "WARNING: Template file #{template} expected but not found"
|
265
|
-
end
|
266
|
-
end
|
267
|
-
|
268
|
-
end
|
269
|
-
|
270
|
-
|
271
|
-
class SetupConfiguration::SuiteGenerator
|
272
|
-
include SetupConfiguration::Generator
|
273
|
-
|
274
|
-
attr_accessor :suite
|
275
|
-
attr_accessor :do_not_run
|
276
|
-
|
277
|
-
def initialize
|
278
|
-
self.do_not_run = false
|
279
|
-
self.suite = SetupConfiguration::Suite.instance
|
280
|
-
end
|
281
|
-
|
282
|
-
def self.do_not_run
|
283
|
-
self.do_not_run=true
|
284
|
-
end
|
285
|
-
|
286
|
-
def generate
|
287
|
-
return "no output" if self.do_not_run
|
288
|
-
|
289
|
-
description_bindings().each() do |bind|
|
290
|
-
bind.suite=self.suite
|
291
|
-
rhtml = Erubis::Eruby.new(description_template)
|
292
|
-
|
293
|
-
File.open(File.join(output_path, bind.output), "w") do |f|
|
294
|
-
f << rhtml.result(bind.get_binding)
|
295
|
-
end
|
296
|
-
end
|
297
|
-
|
298
|
-
# extras:
|
299
|
-
# -every PARAMETER key needs a value!
|
300
|
-
# -use Windows line terminators CRLF - \r\n
|
301
|
-
# - do not use [] - output is an INI-file
|
302
|
-
parameter_bindings().each() do |bind|
|
40
|
+
bind=mps_binding()
|
303
41
|
bind.suite=self.suite
|
304
|
-
|
305
|
-
|
306
|
-
rhtml = Erubis::Eruby.new(template)
|
307
|
-
|
308
|
-
File.open(File.join(output_path, bind.output), "w") do |f|
|
309
|
-
f << rhtml.result(bind.get_binding)
|
310
|
-
end
|
311
|
-
else
|
312
|
-
puts "WARNING: No template found. Generation of #{bind.output} aborted."
|
313
|
-
end
|
314
|
-
end
|
315
|
-
|
316
|
-
bind=mps_binding()
|
317
|
-
bind.suite=self.suite
|
318
|
-
mps_template=mps_template()
|
319
|
-
if mps_template then
|
320
|
-
rhtml = Erubis::Eruby.new(mps_template)
|
42
|
+
mps_template=mps_template()
|
43
|
+
output(bind, mps_template)
|
321
44
|
|
322
|
-
|
323
|
-
f << rhtml.result(bind.get_binding)
|
324
|
-
end
|
325
|
-
else
|
326
|
-
puts "WARNING: No template found. Generation of #{bind.output} aborted."
|
45
|
+
SetupCodeGenerator.new.generate(self.suite, output_path)
|
327
46
|
end
|
328
47
|
|
329
|
-
SetupConfiguration::SetupCodeGenerator.new.generate(self.suite, output_path)
|
330
48
|
end
|
331
|
-
end
|
332
49
|
|
50
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# encoding: windows-1252
|
2
|
+
|
3
|
+
module SetupConfiguration
|
4
|
+
|
5
|
+
module Generator
|
6
|
+
|
7
|
+
class TemplateBinding
|
8
|
+
|
9
|
+
attr_accessor :suite
|
10
|
+
attr_accessor :output
|
11
|
+
|
12
|
+
def categories
|
13
|
+
#TODO maybe cache these values for better performance...?
|
14
|
+
suite.categories.keys().sort()
|
15
|
+
end
|
16
|
+
|
17
|
+
# Support templating of member data.
|
18
|
+
def get_binding
|
19
|
+
binding
|
20
|
+
end
|
21
|
+
|
22
|
+
def find_param_by_number(number)
|
23
|
+
self.suite.find_param_by_number(number)
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -67,8 +67,8 @@ SYSTEM18=Please select a language.
|
|
67
67
|
SYSTEM19=Ok
|
68
68
|
SYSTEM20=Cancel
|
69
69
|
SYSTEM21=Info
|
70
|
-
SYSTEM22=
|
71
|
-
SYSTEM23=Progdat: Apr.08.04 Inidat:
|
70
|
+
SYSTEM22=Setupprogramm V6.0.01
|
71
|
+
SYSTEM23=Progdat: Apr.08.04 Inidat: Sep.07.05
|
72
72
|
SYSTEM24=(c) Weber GmbH
|
73
73
|
SYSTEM25=Ready
|
74
74
|
SYSTEM26=Closed
|