in tutorials/checker/build.gradle.kts [73:108]
fun checkDirs(dirs: List<String>, template: String, buildCmd: String, kotlinVersion: String?) {
val snippets = findSnippets(dirs)
snippets.forEachIndexed { index, snippet ->
println("process snippet $index at ${snippet.file}:${snippet.lineNumber} with $template")
snippet.tempDir = cloneTemplate(template, index, snippet.content)
val isWin = System.getProperty("os.name").startsWith("Win")
val args = buildList {
if (isWin) {
add("gradlew.bat")
} else {
add("bash")
add("./gradlew")
}
add(buildCmd)
kotlinVersion?.also {
add("-Pkotlin.version=$it")
}
project.findProperty("compose.version")?.also {
add("-Pcompose.version=$it")
}
}
val proc = ProcessBuilder(*args.toTypedArray())
.directory(snippet.tempDir)
.redirectOutput(ProcessBuilder.Redirect.PIPE)
.redirectError(ProcessBuilder.Redirect.PIPE)
.start()
proc.waitFor(5, TimeUnit.MINUTES)
if (proc.exitValue() != 0) {
println(proc.inputStream.bufferedReader().readText())
println(proc.errorStream.bufferedReader().readText())
maybeFail(snippet.file.parentFile.name, "Error in snippet at ${snippet.file}:${snippet.lineNumber}")
}
}
}