in plugins/check-in-generated/src/main/java/co/elastic/gradle/cig/CompareFileMapTask.java [105:136]
private Stream<Path> nonEqualFiles(Path file1, Path file2) {
if (!Files.exists(file1) || !Files.exists(file2)) {
return Stream.of(file2);
}
try {
if (Files.isDirectory(file1)) {
if (Files.isDirectory(file2)) {
return Files.walk(file1)
.filter(each -> !each.equals(file1))
.flatMap(each -> nonEqualFiles(
each,
file2.resolve(file1.relativize(each))
));
} else {
return Stream.of(file2);
}
} else {
if (Files.isDirectory(file2)) {
return Stream.of(file2);
} else {
if (FileUtils.contentEquals(file1.toFile(), file2.toFile())) {
return Stream.of();
} else {
return Stream.of(file2);
}
}
}
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}