mirror of
https://github.com/jlengrand/detekt.git
synced 2026-03-10 08:11:23 +00:00
* replace get_analysis_projects.groovy with kotlin script * fix violations Co-authored-by: Markus Schwarz <post@markus-schwarz.net>
66 lines
1.7 KiB
Kotlin
Executable File
66 lines
1.7 KiB
Kotlin
Executable File
#!kotlinc -script
|
|
|
|
import java.nio.file.Files
|
|
import java.nio.file.Path
|
|
import java.util.concurrent.TimeUnit.MINUTES
|
|
|
|
val githubProjects = listOf(
|
|
"arrow-kt/arrow",
|
|
"pintrest/ktlint",
|
|
"vanniktech/gradle-dependency-graph-generator-plugin",
|
|
"vanniktech/lint-rules",
|
|
"vanniktech/junit-rules",
|
|
"spekframework/spek",
|
|
"Kotlin/kotlinx.coroutines",
|
|
"Kotlin/kotlinx.serialization",
|
|
"Kotlin/kotlinx-datetime",
|
|
"Kotlin/dokka",
|
|
"kotest/kotest",
|
|
"tipsy/javalin",
|
|
)
|
|
|
|
class Downloader(private val basePath: Path, private val project: String) {
|
|
|
|
fun download() {
|
|
if (Files.exists(basePath.resolve(project.substringAfter('/')))) {
|
|
println("Skipping $project as it already exists.")
|
|
return
|
|
}
|
|
println("Downloading $project")
|
|
cloneRepo("https://github.com/$project.git")
|
|
}
|
|
|
|
private fun cloneRepo(repo: String) {
|
|
ProcessBuilder("git", "clone", repo)
|
|
.directory(basePath.toFile())
|
|
.inheritIO()
|
|
.start()
|
|
.waitFor(MAX_CLONE_WAIT_MINUTES, MINUTES)
|
|
}
|
|
|
|
companion object {
|
|
const val MAX_CLONE_WAIT_MINUTES: Long = 5
|
|
}
|
|
}
|
|
|
|
fun downloadAnalysisProjects(basePath: Path) {
|
|
println("Downloading analysis projects to ${basePath.toAbsolutePath()}")
|
|
Files.createDirectories(basePath)
|
|
|
|
githubProjects.forEach { project ->
|
|
Downloader(basePath, project).download()
|
|
}
|
|
}
|
|
|
|
if (args.size != 1) {
|
|
println(
|
|
"""
|
|
Usage: ./get_analysis_projects.kts [/path/to/storing/folder]
|
|
or kotlinc -script get_analysis_projects.kts [/path/to/storing/folder]
|
|
""".trimIndent()
|
|
)
|
|
System.exit(1)
|
|
}
|
|
|
|
downloadAnalysisProjects(Path.of(args.first()))
|