/* * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2025 The FreeBSD Foundation * * This software was developed by Eilertsens Kodeknekkeri * under sponsorship from The FreeBSD Foundation. */ import java.io.IOException; import java.io.StringWriter; public class Differ { private String commit; public static void main(String[] args) { var differ = new Differ(args); differ.run(); } public Differ(String[] args) { commit = args[0]; } public void run() { try { String[] cmd = {"git", "diff", "--stat", "--name-only", commit}; var p = Runtime.getRuntime().exec(cmd); p.inputReader() .lines() .filter(filename -> { return includeDiff(filename); }) .forEach(filename -> { System.out.println("[ ] " + filename); }); } catch (IOException e) { System.err.println("That didn't work: " + e); } } private boolean includeDiff(String filename) { try { String[] cmd = {"git", "diff", commit, "--", filename}; // System.out.println("[*] Running `" + String.join(" ", cmd) + "`..."); var p = Runtime.getRuntime().exec(cmd); return p.inputReader() .lines() .anyMatch(line -> { return interestingLine(line); }); } catch (IOException e) { System.err.println("Could not fetch diff: " + e); return false; } } private boolean interestingLine(String line) { var interesting = line.matches("^[+-][^+-].*") && ! line.matches("^.*Copyright.*"); // System.out.println((interesting ? "! " : " ") + line); return interesting; } }