Scripts/convention/src/main/kotlin/jf.taskgraph.gradle.kts
JFronny ce189f2087
All checks were successful
ci/woodpecker/push/pages Pipeline was successful
ci/woodpecker/push/gradle Pipeline was successful
Use late init to support libjf plugin after lom, add taskgraph plugin
2022-12-13 23:07:05 +01:00

37 lines
1.1 KiB
Plaintext

import io.gitlab.jfronny.scripts.*
plugins {
base
}
tasks.register("printTaskGraph") {
doLast {
fun getTask(task: Any): Either<Task, String> {
return when (task) {
is Provider<*> -> getTask(task.get())
is String -> Either.Left(tasks.getByPath(task))
is Task -> Either.Left(task)
else -> Either.Right("$task")
}
}
fun printTaskGraph(task: Task, indent: Int, known: MutableSet<Task>) {
if (known.contains(task)) {
println(" ".repeat(indent) + "- ${task.name} (*)")
return
}
known.add(task)
println(" ".repeat(indent) + "- ${task.name}")
task.dependsOn.forEach {
getTask(it).apply({ dependency ->
printTaskGraph(dependency, indent + 1, known)
}, { error ->
println(" ".repeat(indent + 1) + "- UNEXPECTED!: $error")
})
}
}
printTaskGraph(tasks.getByPath(prop("taskGraph", "build")), 0, LinkedHashSet())
}
}