mirai/mirai-dokka/src/system.kt
微莹·纤绫 d10d20302e
Dokka (#1708)
* dokka

* test

* Fix classpath

* Fix deploy

* Fix deploy

* Fix deploy

* GitHub workflows
2021-12-04 15:43:09 +00:00

53 lines
1.4 KiB
Kotlin

/*
* Copyright 2019-2021 Mamoe Technologies and contributors.
*
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
*
* https://github.com/mamoe/mirai/blob/dev/LICENSE
*/
package net.mamoe.mirai.dokka
import kotlinx.serialization.json.Json
import java.io.File
val pages = File("mirai-dokka/pages")
val json = Json {
prettyPrint = true
prettyPrintIndent = " "
}
private val FileDevNull = File(
if (System.getProperty("os.name")
.startsWith("Windows")
) "NUL" else "/dev/null"
)
fun system(cmd: String) {
val rsp = ProcessBuilder(cmd).inheritIO().start().waitFor()
if (rsp != 0) error("Exec return $rsp, $cmd")
}
fun exec(vararg cmd: String) {
val rsp = ProcessBuilder(*cmd).inheritIO().start().waitFor()
if (rsp != 0) error("Exec return $rsp, ${cmd.joinToString(" ")}")
}
fun repoexec(
vararg cmd: String,
nooutput: Boolean = false,
) {
val rsp = ProcessBuilder(*cmd)
.inheritIO()
.directory(pages)
.also { builder ->
if (nooutput) {
builder.redirectOutput(ProcessBuilder.Redirect.to(FileDevNull))
}
}
.start()
.waitFor()
if (rsp != 0) error("Exec return $rsp, ${cmd.joinToString(" ")}")
}