src/main/java/de/unixwork/uwproj/Option.java

Mon, 01 Dec 2025 21:27:09 +0100

author
Mike Becker <universe@uap-core.de>
date
Mon, 01 Dec 2025 21:27:09 +0100
changeset 177
8872934e5fb2
parent 165
f4f11f755ee7
permissions
-rw-r--r--

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
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
7 import java.util.stream.Collectors;
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
8
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
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
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
12 private final LinkedList<OptionValue> values = new LinkedList<>();
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
13 private final LinkedList<OptionDefault> defaults = new LinkedList<>();
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
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
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
37 return shId("OPT_" + arg.toUpperCase());
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
38 }
41
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
39
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
40 public String getArgValue() {
41
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
41 return "${ARG:" + (3 + arg.length()) + "}";
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
42 }
41
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
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
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
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
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
51
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
52 public String getValueFunc(String value) {
41
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
53 return shId("checkopt_" + arg + "_" + value);
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
54 }
41
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
55
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
56 public String getValuesString() {
41
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
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
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
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 }

mercurial