Add option --reading-replacement

This commit is contained in:
Karlatemp 2020-09-11 20:42:00 +08:00
parent 9e9c848596
commit a72fe42aaa
No known key found for this signature in database
GPG Key ID: 21FBDDF664FF06F8
3 changed files with 19 additions and 2 deletions

View File

@ -40,4 +40,7 @@ public object ConsolePureSettings {
@JvmField
var noConsoleSafeReading = false
@JvmField
var noConsoleReadingReplacement: String = ""
}

View File

@ -69,6 +69,9 @@ object MiraiConsolePureLoader {
"--safe-reading" to
"[NoConsole] 如果启动此选项, console在获取用户输入的时候会获得一个安全的空字符串\n" +
" 如果不启动, 将会直接 error",
"--reading-replacement <string>" to
"[NoConsole] Console尝试读取命令的替换符, 默认是空字符串\n" +
" 使用此选项会自动开启 --safe-reading",
)
val prefixPlaceholder = String(CharArray(
help.maxOfOrNull { it.first.length }!! + 3
@ -113,6 +116,18 @@ object MiraiConsolePureLoader {
ConsolePureSettings.noAnsi = true
ConsolePureSettings.setupAnsi = false
}
"--reading-replacement" -> {
ConsolePureSettings.noConsoleSafeReading = true
if (iterator.hasNext()){
ConsolePureSettings.noConsoleReadingReplacement = iterator.next()
} else {
println("Bad option `--reading-replacement`")
println("Usage: --reading-replacement <string>")
if (exitProcess)
exitProcess(1)
return
}
}
"--safe-reading" -> {
ConsolePureSettings.noConsoleSafeReading = true
}
@ -120,7 +135,6 @@ object MiraiConsolePureLoader {
println("Unknown option `$option`")
printlnHelpMessage()
if (exitProcess)
@Suppress("UNREACHABLE_CODE")
exitProcess(1)
return
}

View File

@ -104,7 +104,7 @@ internal object AllEmptyLineReader : LineReader {
@OptIn(ConsolePureExperimentalAPI::class)
override fun readLine(): String =
if (ConsolePureSettings.noConsoleSafeReading) ""
if (ConsolePureSettings.noConsoleSafeReading) ConsolePureSettings.noConsoleReadingReplacement
else error("Unsupported Reading line when console front-end closed.")
override fun readLine(mask: Char?): String = readLine()