Mon, 01 Dec 2025 21:27:09 +0100
resolve dependencies between standard config vars
fixes #768
|
0
38775db5fdf5
add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1 | package de.unixwork.uwproj; |
|
38775db5fdf5
add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2 | |
|
38775db5fdf5
add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
3 | import org.w3c.dom.Element; |
|
38775db5fdf5
add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
4 | |
|
40
b42bfc9e9983
first minor code improvements
Mike Becker <universe@uap-core.de>
parents:
0
diff
changeset
|
5 | import java.util.LinkedList; |
|
b42bfc9e9983
first minor code improvements
Mike Becker <universe@uap-core.de>
parents:
0
diff
changeset
|
6 | import java.util.List; |
| 41 | 7 | import java.util.stream.Collectors; |
| 8 | ||
| 9 | import static de.unixwork.uwproj.Util.shId; | |
|
40
b42bfc9e9983
first minor code improvements
Mike Becker <universe@uap-core.de>
parents:
0
diff
changeset
|
10 | |
|
162
79eeb33c738f
add description for options
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
11 | public final class Option extends AbstractOption { |
| 41 | 12 | private final LinkedList<OptionValue> values = new LinkedList<>(); |
| 13 | private final LinkedList<OptionDefault> defaults = new LinkedList<>(); | |
| 14 | ||
|
113
24f32dbd88cd
minimize application code
Mike Becker <universe@uap-core.de>
parents:
41
diff
changeset
|
15 | public Option(Element element) { |
|
165
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
162
diff
changeset
|
16 | arg = element.getAttribute("arg"); |
|
113
24f32dbd88cd
minimize application code
Mike Becker <universe@uap-core.de>
parents:
41
diff
changeset
|
17 | Util.getChildElements(element).forEach(elm -> { |
|
24f32dbd88cd
minimize application code
Mike Becker <universe@uap-core.de>
parents:
41
diff
changeset
|
18 | switch (elm.getNodeName()) { |
|
162
79eeb33c738f
add description for options
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
19 | case "desc" -> desc = Util.getContent(elm); |
|
113
24f32dbd88cd
minimize application code
Mike Becker <universe@uap-core.de>
parents:
41
diff
changeset
|
20 | case "value" -> values.add(new OptionValue(this, |
|
24f32dbd88cd
minimize application code
Mike Becker <universe@uap-core.de>
parents:
41
diff
changeset
|
21 | elm.getAttribute("str"), |
|
24f32dbd88cd
minimize application code
Mike Becker <universe@uap-core.de>
parents:
41
diff
changeset
|
22 | new TargetData(elm))); |
|
24f32dbd88cd
minimize application code
Mike Becker <universe@uap-core.de>
parents:
41
diff
changeset
|
23 | case "default" -> defaults.add(new OptionDefault(this, |
|
24f32dbd88cd
minimize application code
Mike Becker <universe@uap-core.de>
parents:
41
diff
changeset
|
24 | elm.getAttribute("value"), |
|
24f32dbd88cd
minimize application code
Mike Becker <universe@uap-core.de>
parents:
41
diff
changeset
|
25 | elm.getAttribute("platform"))); |
|
0
38775db5fdf5
add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
26 | } |
|
113
24f32dbd88cd
minimize application code
Mike Becker <universe@uap-core.de>
parents:
41
diff
changeset
|
27 | }); |
|
0
38775db5fdf5
add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
28 | } |
|
38775db5fdf5
add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
29 | |
|
162
79eeb33c738f
add description for options
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
30 | @Override |
|
79eeb33c738f
add description for options
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
31 | public String getHelpTextArg() { |
|
79eeb33c738f
add description for options
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
32 | return "--" + arg + "=" + getValuesString(); |
|
79eeb33c738f
add description for options
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
33 | } |
|
79eeb33c738f
add description for options
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
34 | |
|
79eeb33c738f
add description for options
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
35 | @Override |
|
0
38775db5fdf5
add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
36 | public String getVarName() { |
| 41 | 37 | return shId("OPT_" + arg.toUpperCase()); |
|
0
38775db5fdf5
add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
38 | } |
| 41 | 39 | |
|
0
38775db5fdf5
add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
40 | public String getArgValue() { |
| 41 | 41 | return "${ARG:" + (3 + arg.length()) + "}"; |
|
0
38775db5fdf5
add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
42 | } |
| 41 | 43 | |
|
0
38775db5fdf5
add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
44 | public List<OptionValue> getValues() { |
|
38775db5fdf5
add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
45 | return values; |
|
38775db5fdf5
add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
46 | } |
| 41 | 47 | |
|
0
38775db5fdf5
add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
48 | public List<OptionDefault> getDefaults() { |
|
38775db5fdf5
add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
49 | return defaults; |
|
38775db5fdf5
add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
50 | } |
| 41 | 51 | |
|
0
38775db5fdf5
add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
52 | public String getValueFunc(String value) { |
| 41 | 53 | return shId("checkopt_" + arg + "_" + value); |
|
0
38775db5fdf5
add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
54 | } |
| 41 | 55 | |
|
0
38775db5fdf5
add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
56 | public String getValuesString() { |
| 41 | 57 | if (values.size() == 1) { |
|
0
38775db5fdf5
add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
58 | return values.get(0).getValue(); |
|
38775db5fdf5
add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
59 | } else { |
| 41 | 60 | return "(" + values.stream().map(OptionValue::getValue).collect(Collectors.joining("|")) + ")"; |
|
0
38775db5fdf5
add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
61 | } |
|
38775db5fdf5
add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
62 | } |
|
38775db5fdf5
add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
63 | } |