mirai/mirai-dokka/src/system.kt
Him188 363d1f7ece
Remove module-level opt-ins, add @OptIn explicit in use-sites;
added some opt-in markers on API which should have:

- `appendMiraiCodeTo`

Made API stable (otherwise they require too heavy opt-ins):
- MiraiConsoleImplementation$ConsoleLaunchOptions
- LowLevelApi
2023-05-06 11:04:31 +01:00

56 lines
1.5 KiB
Kotlin

/*
* 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(" ")}")
}