private void processMergeFromDirectory()

in src/main/java/org/apache/netbeans/nbpackage/AbstractPackagerTask.java [389:425]


    private void processMergeFromDirectory(Path sourceDir, Path imageDir,
            Path rootDir) throws IOException {
        String messageFile = context().isVerbose()
                ? NBPackage.MESSAGES.getString("message.mergingfile") : null;
        String messageDir = context().isVerbose()
                ? NBPackage.MESSAGES.getString("message.mergingdir") : null;
        try (var stream = Files.list(sourceDir)) {
            var files = stream.sorted().collect(Collectors.toList());
            for (Path file : files) {
                if (Files.isDirectory(file)) {
                    String name = file.getFileName().toString();
                    Path dest;
                    if ("__ROOT".equals(name)) {
                        dest = rootDir;
                    } else {
                        dest = imageDir.resolve(name);
                        Files.createDirectories(dest);
                    }
                    if (messageDir != null) {
                        context().infoHandler().accept(MessageFormat.format(messageDir,
                                sourceDir.relativize(file),
                                imageDir.getParent().relativize(dest)));
                    }
                    FileUtils.copyFiles(file, dest);
                } else {
                    Path dest = imageDir.resolve(file.getFileName());
                    if (messageFile != null) {
                        context().infoHandler().accept(MessageFormat.format(messageFile,
                                sourceDir.relativize(file),
                                imageDir.getParent().relativize(dest)));
                    }
                    Files.copy(file, dest, StandardCopyOption.COPY_ATTRIBUTES);
                    FileUtils.ensureWritable(dest);
                }
            }
        }
    }