mirror of
https://github.com/mamoe/mirai.git
synced 2025-03-20 12:00:12 +08:00
added some opt-in markers on API which should have: - `appendMiraiCodeTo` Made API stable (otherwise they require too heavy opt-ins): - MiraiConsoleImplementation$ConsoleLaunchOptions - LowLevelApi
56 lines
1.5 KiB
Kotlin
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(" ")}")
|
|
}
|