public record GradleTestkitHelper()

in libs/test-utils/src/main/java/co/elastic/gradle/GradleTestkitHelper.java [30:77]


public record GradleTestkitHelper(Path projectDir) {

    public void settings(String content) {
        writeFile(projectDir.resolve("settings.gradle.kts"), content);
    }

    public void buildScript(String content) {
        writeFile(projectDir.resolve("build.gradle.kts"), content);
    }

    public void buildScript(String subprojectPath, String content) {
        writeFile(projectDir.resolve(subprojectPath).resolve("build.gradle.kts"), content);
    }

    public void writeScript(String path, String contents) {
        Path scriptPath = projectDir.resolve(path);
        writeFile(scriptPath, contents);
        final Set<PosixFilePermission> permissions;
        try {
            permissions = Files.getPosixFilePermissions(scriptPath);
            permissions.add(PosixFilePermission.OWNER_EXECUTE);
            Files.setPosixFilePermissions(scriptPath, permissions);
        } catch (IOException e) {
            throw new UncheckedIOException(e);
        }
    }

    public void writeFile(String path, String contents) {
        writeFile(projectDir.resolve(path), contents);
    }

    private void writeFile(Path path, String content) {
        final Path relativePath = projectDir.relativize(path);
        System.out.println(relativePath);
        System.out.println("-".repeat(relativePath.toString().length()));
        final List<String> lines = content.lines().toList();
        for (int i = 1; i <= lines.size(); i++) {
            System.out.println(String.format("%1$2s:", i) + lines.get(i - 1));
        }
        System.out.println();
        try {
            Files.createDirectories(path.getParent());
            Files.writeString(path, content, StandardCharsets.UTF_8);
        } catch (IOException e) {
            throw new UncheckedIOException(e);
        }
    }
}