}
/** Install the bundles. */
- void install(Map<String, List<String>> options) throws IOException {
+ void install(Map<String, List<String>> options, boolean uninstall) throws IOException {
// check arguments
List<String> bundles = options.get("--bundles");
Objects.requireNonNull(bundles, "--bundles argument must be set");
if (targetDirs.size() != 1)
throw new IllegalArgumentException("One and only one --target must be specified");
Path targetA2 = Paths.get(targetDirs.get(0));
- logger.log(INFO, "Intsalling to " + targetA2 + " ms");
+ logger.log(INFO, (uninstall ? "Uninstalling from " : "Installing to ") + targetA2);
final String branch;
Path branchMk = sdkSrcBase.resolve(BRANCH_MK);
String minor = properties.getProperty("minor");
Objects.requireNonNull(minor, "'minor' must be set");
+ int count = 0;
for (String bundle : bundles) {
Path bundlePath = Paths.get(bundle);
Path bundleParent = bundlePath.getParent();
: a2Output.resolve(category);
Path jarP = a2JarDirectory.resolve(bundlePath.getFileName() + "." + major + "." + minor + ".jar");
- Path targetJarP = targetA2.resolve(a2JarDirectory.relativize(jarP));
- Files.createDirectories(targetJarP.getParent());
- Files.copy(jarP, targetJarP);
+ Path targetJarP = targetA2.resolve(a2Output.relativize(jarP));
+ if (uninstall) { // uninstall
+ if (Files.exists(targetJarP)) {
+ Files.delete(targetJarP);
+ Path targetParent = targetJarP.getParent();
+ if (!Files.list(targetParent).iterator().hasNext())
+ Files.delete(targetParent);
+ logger.log(DEBUG, "Removed " + targetJarP);
+ count++;
+ }
+ } else { // install
+ Files.createDirectories(targetJarP.getParent());
+ boolean update = Files.exists(targetJarP);
+ Files.copy(jarP, targetJarP);
+ logger.log(DEBUG, (update ? "Updated " : "Installed ") + targetJarP);
+ count++;
+ }
}
+ logger.log(INFO, uninstall ? count + " bundles removed" : count + " bundles installed or updated");
}
/** Package a single bundle. */
case "compile" -> argeoMake.compile(options);
case "bundle" -> argeoMake.bundle(options);
case "all" -> argeoMake.all(options);
- case "install" -> argeoMake.install(options);
+ case "install" -> argeoMake.install(options, false);
+ case "uninstall" -> argeoMake.install(options, true);
default -> throw new IllegalArgumentException("Unkown action: " + action);
}