Tue, 30 Jan 2024 21:32:11 +0100
remove unnecessary double-quotes in vars.mk - fixes #370
package de.unixwork.uwproj; import org.w3c.dom.Element; import java.util.*; public class Project { private final HashMap<String, List<Dependency>> namedDependencies = new HashMap<>(); private final List<Dependency> dependencies = new LinkedList<>(); private final List<Target> targets = new LinkedList<>(); private final List<Option> options = new LinkedList<>(); private final List<Feature> features = new LinkedList<>(); private final List<ConfigVar> configVarsList = new LinkedList<>(); private final Set<String> lang = new HashSet<>(); public Project(Element root) { Util.getChildElements(root).forEach(element -> { switch (element.getNodeName()) { case "config" -> Util.getChildElements(element).forEach(v -> { if (v.getNodeName().equals("var")) { configVarsList.add(new ConfigVar(v)); } }); case "dependency" -> { final var dependency = new Dependency(element); lang.addAll(dependency.getLang()); if (dependency.hasName()) { namedDependencies.computeIfAbsent(dependency.getId(), k -> new LinkedList<>()).add(dependency); } else { dependencies.add(dependency); } } case "target" -> { final var target = new Target(element); targets.add(target); features.addAll(target.getFeatures()); options.addAll(target.getOptions()); } } }); // add default target, if no target was specified if (targets.isEmpty()) { targets.add(Target.defaultTarget()); } // check if some targets want all named dependencies targets.stream().filter(Target::wantsAllDependencies) .forEach(t -> t.replaceAllDependencies(namedDependencies.keySet())); } public List<NamedDependency> getNamedDependencies() { var ret = new LinkedList<NamedDependency>(); for (var entry : namedDependencies.entrySet()) { ret.add(new NamedDependency(entry.getKey(), entry.getValue())); } return ret; } public List<Dependency> getDependencies() { return dependencies; } public List<Target> getTargets() { return targets; } public List<Option> getOptions() { return options; } public List<Feature> getFeatures() { return features; } public List<ConfigVar> getVars() { return configVarsList; } public Collection<String> getLang() { return lang; } }