]> git.argeo.org Git - cc0/argeo-build.git/blobdiff - src/org/argeo/build/Make.java
Skip *.js source directories
[cc0/argeo-build.git] / src / org / argeo / build / Make.java
index 70bf8b5c25f16f8bd3fbd2baaa1c95aebfbcb234..cfedf9a06912e5a74fcc4fd1ccd30315c5f81940 100644 (file)
@@ -20,6 +20,7 @@ import java.nio.file.Path;
 import java.nio.file.PathMatcher;
 import java.nio.file.Paths;
 import java.nio.file.SimpleFileVisitor;
+import java.nio.file.StandardCopyOption;
 import java.nio.file.attribute.BasicFileAttributes;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -354,15 +355,15 @@ public class Make {
                        if (uninstall) { // uninstall
                                if (Files.exists(targetJarP)) {
                                        Files.delete(targetJarP);
-                                       Path targetParent = targetJarP.getParent();
-                                       deleteEmptyParents(targetA2, targetParent);
                                        logger.log(DEBUG, "Removed " + targetJarP);
                                        count++;
                                }
+                               Path targetParent = targetJarP.getParent();
+                               deleteEmptyParents(targetA2, targetParent);
                        } else { // install
                                Files.createDirectories(targetJarP.getParent());
                                boolean update = Files.exists(targetJarP);
-                               Files.copy(jarP, targetJarP);
+                               Files.copy(jarP, targetJarP, StandardCopyOption.REPLACE_EXISTING);
                                logger.log(DEBUG, (update ? "Updated " : "Installed ") + targetJarP);
                                count++;
                        }
@@ -374,9 +375,10 @@ public class Make {
        void deleteEmptyParents(Path targetA2, Path targetParent) throws IOException {
                if (!Files.isDirectory(targetParent))
                        throw new IllegalArgumentException(targetParent + " must be a directory");
+               boolean isA2target = Files.isSameFile(targetA2, targetParent);
                if (!Files.list(targetParent).iterator().hasNext()) {
                        Files.delete(targetParent);
-                       if (Files.isSameFile(targetA2, targetParent))
+                       if (isA2target)
                                return;// stop after deleting A2 base
                        deleteEmptyParents(targetA2, targetParent.getParent());
                }
@@ -506,6 +508,15 @@ public class Make {
 
                        // Add all resources from src/
                        Files.walkFileTree(srcP, new SimpleFileVisitor<Path>() {
+                               @Override
+                               public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
+                                       // skip directories ending with .js
+                                       // TODO find something more robust?
+                                       if (dir.getFileName().toString().endsWith(".js"))
+                                               return FileVisitResult.SKIP_SUBTREE;
+                                       return super.preVisitDirectory(dir, attrs);
+                               }
+
                                @Override
                                public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
                                        if (file.getFileName().toString().endsWith(".java")