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

Tue, 30 Jan 2024 21:32:11 +0100

author
Mike Becker <universe@uap-core.de>
date
Tue, 30 Jan 2024 21:32:11 +0100
changeset 114
0fa5a6f08245
parent 113
24f32dbd88cd
permissions
-rw-r--r--

remove unnecessary double-quotes in vars.mk - fixes #370

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
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
5 import java.util.Arrays;
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
6 import java.util.LinkedList;
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
7 import java.util.List;
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
8 import java.util.function.Predicate;
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
9 import java.util.stream.Collectors;
39
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 8
diff changeset
10
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
11 public final class Dependency {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
12 private final String id;
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
13 private final String name;
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
14 private final String platform;
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
15 private final String toolchain;
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
16 private final String not;
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
17
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
18 private final List<ConfigVar> flags = new LinkedList<>();
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
19 private final List<PkgConfigPackage> pkgconfig = new LinkedList<>();
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
20 private final List<String> tests = new LinkedList<>();
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
21 private final List<String> make = new LinkedList<>();
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
22
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
23 private final List<String> lang = new LinkedList<>();
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
24
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
25 public Dependency(Element element) {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
26 name = element.getAttribute("name");
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
27 id = Util.shId(name);
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
28 platform = element.getAttribute("platform");
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
29 toolchain = element.getAttribute("toolchain");
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
30 not = element.getAttribute("not");
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
31
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
32 Util.getChildElements(element).forEach(elm -> {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
33 switch (elm.getNodeName()) {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
34 case "cflags", "cxxflags", "ldflags" -> flags.add(new ConfigVar(elm, true));
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
35 case "pkgconfig" -> pkgconfig.add(new PkgConfigPackage(elm));
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
36 case "test" -> tests.add(Util.getContent(elm));
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
37 case "make" -> make.add(Util.getContent(elm));
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
38 case "lang" -> lang.add(Util.getContent(elm).toLowerCase());
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
39 }
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
40 });
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
41 }
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
42
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
43 /**
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
44 * Returns the ID of this dependency, if it has a name.
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
45 * @return the ID that can be used for shell scripts - empty if dependency has not a name
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
46 */
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
47 public String getId() {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
48 return id;
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
49 }
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
50
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
51 public boolean hasName() {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
52 return !name.isEmpty();
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
53 }
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
54
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
55 public String getName() {
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
56 return name;
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
57 }
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
58
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
59 public String getPlatform() {
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
60 return platform;
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
61 }
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
62
39
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 8
diff changeset
63 public String getFullName() {
103
01ec9f32835e add toolchain attribute - relates to #346
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 96
diff changeset
64 String fname = name;
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
65 if (!platform.isBlank()) {
103
01ec9f32835e add toolchain attribute - relates to #346
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 96
diff changeset
66 fname += " platform=\"" + platform + '"';
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
67 }
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
68 if (!toolchain.isBlank()) {
103
01ec9f32835e add toolchain attribute - relates to #346
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 96
diff changeset
69 fname += " toolchain=\"" + toolchain + '"';
01ec9f32835e add toolchain attribute - relates to #346
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 96
diff changeset
70 }
01ec9f32835e add toolchain attribute - relates to #346
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 96
diff changeset
71 return fname;
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
72 }
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
73
5
895bf81d3b6e add missing source changes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 0
diff changeset
74 public List<String> getNotList() {
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
75 return Arrays.stream(not.split(","))
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
76 .map(String::trim)
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
77 .filter(Predicate.not(String::isEmpty))
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
78 .collect(Collectors.toList());
103
01ec9f32835e add toolchain attribute - relates to #346
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 96
diff changeset
79 }
01ec9f32835e add toolchain attribute - relates to #346
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 96
diff changeset
80
01ec9f32835e add toolchain attribute - relates to #346
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 96
diff changeset
81 public String getToolchain() { return toolchain; }
01ec9f32835e add toolchain attribute - relates to #346
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 96
diff changeset
82
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
83 public List<ConfigVar> getFlags() {
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
84 return flags;
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
85 }
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
86
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
87 public List<PkgConfigPackage> getPkgconfig() {
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
88 return pkgconfig;
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
89 }
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
90
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
91 public List<String> getTests() {
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
92 return tests;
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
93 }
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
94
5
895bf81d3b6e add missing source changes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 0
diff changeset
95 public String getMake() {
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 103
diff changeset
96 return String.join("\n", make);
5
895bf81d3b6e add missing source changes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 0
diff changeset
97 }
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
98
8
82cd9f1d94cb add c++ compiler detection
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 5
diff changeset
99 public List<String> getLang() {
82cd9f1d94cb add c++ compiler detection
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 5
diff changeset
100 return lang;
82cd9f1d94cb add c++ compiler detection
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 5
diff changeset
101 }
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
102 }

mercurial