mirai/mirai-dokka/src/system.kt

56 lines
1.5 KiB
Kotlin
Raw Normal View History

/*
* Copyright 2019-2023 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.ExperimentalSerializationApi
import kotlinx.serialization.json.Json
import java.io.File
val pages = File("mirai-dokka/pages")
@OptIn(ExperimentalSerializationApi::class)
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(" ")}")
}