2020-10-30 10:44:56 +08:00
|
|
|
/*
|
|
|
|
* Copyright 2020 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/master/LICENSE
|
|
|
|
*/
|
|
|
|
|
|
|
|
package net.mamoe.mirai.console.terminal
|
|
|
|
|
|
|
|
import kotlinx.coroutines.runBlocking
|
2021-11-06 22:44:58 +08:00
|
|
|
import net.mamoe.mirai.Bot
|
2020-10-30 10:44:56 +08:00
|
|
|
import net.mamoe.mirai.console.MiraiConsole
|
2021-04-10 14:57:08 +08:00
|
|
|
import net.mamoe.mirai.console.extensions.BotConfigurationAlterer
|
|
|
|
import net.mamoe.mirai.console.logging.LoggerController
|
|
|
|
import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescription
|
|
|
|
import net.mamoe.mirai.console.plugin.jvm.KotlinPlugin
|
|
|
|
import net.mamoe.mirai.utils.MiraiLogger
|
|
|
|
import net.mamoe.mirai.utils.SimpleLogger
|
2020-10-30 10:44:56 +08:00
|
|
|
import java.io.File
|
|
|
|
|
|
|
|
fun main() {
|
|
|
|
configureUserDir()
|
|
|
|
|
2021-04-10 14:57:08 +08:00
|
|
|
val terminal = object : MiraiConsoleImplementationTerminal() {
|
|
|
|
override val loggerController: LoggerController = object : LoggerController {
|
|
|
|
override fun shouldLog(identity: String?, priority: SimpleLogger.LogPriority): Boolean = true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
val mockPlugin = object : KotlinPlugin(JvmPluginDescription("org.test.test", "1.0.0")) {}
|
|
|
|
|
|
|
|
terminal.backendAccess.globalComponentStorage.contribute(
|
|
|
|
BotConfigurationAlterer,
|
|
|
|
mockPlugin,
|
|
|
|
BotConfigurationAlterer { _, configuration ->
|
2021-11-06 22:44:58 +08:00
|
|
|
configuration.networkLoggerSupplier = { MiraiLogger.Factory.create(Bot::class, "Net.${it.id}") } // deploy
|
2021-04-10 14:57:08 +08:00
|
|
|
configuration
|
|
|
|
}
|
|
|
|
)
|
|
|
|
|
|
|
|
MiraiConsoleTerminalLoader.startAsDaemon(terminal)
|
|
|
|
|
|
|
|
|
2020-10-30 10:44:56 +08:00
|
|
|
runCatching { runBlocking { MiraiConsole.job.join() } }
|
|
|
|
}
|
|
|
|
|
|
|
|
internal fun configureUserDir() {
|
|
|
|
val projectDir = runCatching {
|
2021-02-01 08:53:26 +08:00
|
|
|
File(".").resolve("frontend").resolve("mirai-console-terminal").takeIf { it.isDirectory }
|
|
|
|
?: File(".").resolve("mirai-console/frontend").resolve("mirai-console-terminal")
|
2020-10-30 10:44:56 +08:00
|
|
|
}.getOrElse { return }
|
|
|
|
if (projectDir.isDirectory) {
|
|
|
|
val run = projectDir.resolve("run")
|
|
|
|
run.mkdir()
|
|
|
|
System.setProperty("user.dir", run.absolutePath)
|
|
|
|
println("[Mirai Console] Set user.dir = ${run.absolutePath}")
|
|
|
|
}
|
|
|
|
}
|