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

Sun, 30 Nov 2025 22:31:04 +0100

author
Mike Becker <universe@uap-core.de>
date
Sun, 30 Nov 2025 22:31:04 +0100
changeset 173
16324bb74fb1
parent 165
f4f11f755ee7
child 177
8872934e5fb2
permissions
-rw-r--r--

fix missing blank line after config vars in config.mk

7
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
1 package de.unixwork.uwproj;
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
2
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
3 import org.w3c.dom.Element;
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
4
165
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
5 public final class ConfigVar extends AbstractOption {
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
6 private final String varName;
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
7 private final String value;
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
8 private final boolean exec;
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
9
165
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
10 public ConfigVar(String varName) {
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
11 this.varName = varName;
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
12 desc = getDefaultHelpText(varName);
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
13 arg = varName.toLowerCase().replace('_', '-');
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
14 value = "";
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
15 exec = false;
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
16 }
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
17
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
18 public ConfigVar(Element e) {
165
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
19 this(e, e.getNodeName().replace('-', '_'));
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
20 }
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
21
165
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
22 public ConfigVar(Element e, String defaultVarName) {
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
23 super();
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
24 varName = Util.getAttrOrDefault(e, "name", defaultVarName);
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
25 desc = Util.getAttrOrDefault(e, "option-help", getDefaultHelpText(varName));
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
26 if (desc.isEmpty()) {
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
27 // no help text, add an option only when requested
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
28 arg = e.getAttribute("option");
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
29 } else {
165
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
30 // there is a help text, generate an option if none is specified
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
31 arg = Util.getAttrOrDefault(e, "option", varName.toLowerCase().replace('_', '-'));
7
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
32 }
165
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
33
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
34 if (e.hasChildNodes()) {
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
35 value = Util.getContent(e);
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
36 } else if (arg.equals("prefix")) {
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
37 // special treatment for prefix
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
38 value = "/usr";
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
39 } else {
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
40 value = "";
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
41 }
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
42 exec = Boolean.parseBoolean(e.getAttribute("exec"));
165
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
43
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
44 if (exec) {
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
45 desc = desc.replace("%default", String.format("{{%s}}", value));
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
46 } else {
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
47 desc = desc.replace("%default", value);
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
48 }
7
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
49 }
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
50
165
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
51 /**
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
52 * A set of default help texts for standard config variables.
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
53 * <p>
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
54 * Returns an empty string for custom config variables.
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
55 *
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
56 * @param varName the variable name
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
57 * @return the default help text
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
58 */
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
59 private static String getDefaultHelpText(String varName) {
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
60 return switch (varName) {
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
61 case "prefix" -> "path prefix for architecture-independent files [%default]";
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
62 case "exec_prefix" -> "path prefix for architecture-dependent files [PREFIX]";
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
63 case "bindir" -> "user executables [EPREFIX/bin]";
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
64 case "sbindir" -> "system admin executables [EPREFIX/sbin]";
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
65 case "libexecdir" -> "program executables [EPREFIX/libexec]";
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
66 case "sysconfdir" -> "system configuration files [PREFIX/etc]";
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
67 case "sharedstatedir" -> "modifiable architecture-independent data [PREFIX/com]";
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
68 case "localstatedir" -> "modifiable single-machine data [PREFIX/var]";
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
69 case "runstatedir" -> "run-time variable data [LOCALSTATEDIR/run]";
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
70 case "libdir" -> "object code libraries [EPREFIX/lib]";
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
71 case "includedir" -> "C header files [PREFIX/include]";
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
72 case "datarootdir" -> "read-only architecture-independent data root [PREFIX/share]";
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
73 case "datadir" -> "read-only architecture-independent data [DATAROOTDIR]";
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
74 case "infodir" -> "info documentation [DATAROOTDIR/info]";
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
75 case "mandir" -> "man documentation [DATAROOTDIR/man]";
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
76 case "localedir" -> "locale-dependent data [DATAROOTDIR/locale]";
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
77 default -> "";
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
78 };
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
79 }
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
80
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
81 /**
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
82 * The name of the variable where the value will be stored.
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
83 * <p>
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
84 * This is also the name of the variable that shall be added to the make config.
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
85 *
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
86 * @return the variable name
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
87 */
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
88 @Override
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
89 public String getVarName() {
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
90 return varName;
7
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
91 }
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
92
165
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
93 @Override
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
94 public String getHelpTextArg() {
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
95 return "--" + arg;
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
96 }
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
97
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
98 /**
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
99 * The value with which this variable shall be initialized.
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
100 * <p>
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
101 * If {@link #isExec()} returns {@code true}, this value is used as the command to execute.
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
102 *
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
103 * @return the initial value for this variable
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
104 */
7
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
105 public String getValue() {
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
106 return value;
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
107 }
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
108
165
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
109 /**
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
110 * Indicates whether the value is a command to execute.
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
111 *
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
112 * @return {@code true} if the value is a command, {@code false} otherwise.
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
113 */
7
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
114 public boolean isExec() {
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
115 return exec;
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
116 }
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
117 }

mercurial