/* * 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 import net.mamoe.mirai.console.MiraiConsole 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 import java.io.File fun main() { configureUserDir() 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 -> configuration.networkLoggerSupplier = { MiraiLogger.create("Net.${it.id}") } // deploy configuration } ) MiraiConsoleTerminalLoader.startAsDaemon(terminal) runCatching { runBlocking { MiraiConsole.job.join() } } } internal fun configureUserDir() { val projectDir = runCatching { File(".").resolve("frontend").resolve("mirai-console-terminal").takeIf { it.isDirectory } ?: File(".").resolve("mirai-console/frontend").resolve("mirai-console-terminal") }.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}") } }