()
| 37 | } |
| 38 | |
| 39 | func init() { |
| 40 | debugMode := os.Getenv("DEBUG_MODE") == "1" |
| 41 | stdin := windows.Handle(os.Stdin.Fd()) |
| 42 | |
| 43 | var mode uint32 |
| 44 | err := windows.GetConsoleMode(stdin, &mode) |
| 45 | if err != nil { |
| 46 | if debugMode { |
| 47 | logrus.Warnf("调试模式下忽略控制台模式获取失败: %v", err) |
| 48 | return // 调试模式下直接返回,跳过后续配置 |
| 49 | } else { |
| 50 | panic(err) // 非调试模式下 panic |
| 51 | } |
| 52 | } |
| 53 | |
| 54 | mode &^= windows.ENABLE_QUICK_EDIT_MODE // 禁用快速编辑模式 |
| 55 | mode |= windows.ENABLE_EXTENDED_FLAGS // 启用扩展标志 |
| 56 | |
| 57 | mode &^= windows.ENABLE_MOUSE_INPUT // 禁用鼠标输入 |
| 58 | mode |= windows.ENABLE_PROCESSED_INPUT // 启用控制输入 |
| 59 | |
| 60 | mode &^= windows.ENABLE_INSERT_MODE // 禁用插入模式 |
| 61 | mode |= windows.ENABLE_ECHO_INPUT | windows.ENABLE_LINE_INPUT // 启用输入回显&逐行输入 |
| 62 | |
| 63 | mode &^= windows.ENABLE_WINDOW_INPUT // 禁用窗口输入 |
| 64 | mode &^= windows.ENABLE_VIRTUAL_TERMINAL_INPUT // 禁用虚拟终端输入 |
| 65 | |
| 66 | err = windows.SetConsoleMode(stdin, mode) |
| 67 | if err != nil { |
| 68 | panic(err) |
| 69 | } |
| 70 | |
| 71 | stdout := windows.Handle(os.Stdout.Fd()) |
| 72 | err = windows.GetConsoleMode(stdout, &mode) |
| 73 | if err != nil { |
| 74 | if debugMode { |
| 75 | logrus.Warnf("调试模式下忽略控制台模式获取失败: %v", err) |
| 76 | logrus.SetFormatter(&logFormat{hasColor: false}) |
| 77 | return |
| 78 | } |
| 79 | panic(err) |
| 80 | } |
| 81 | |
| 82 | mode |= windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING // 启用虚拟终端处理 |
| 83 | mode |= windows.ENABLE_PROCESSED_OUTPUT // 启用处理后的输出 |
| 84 | |
| 85 | err = windows.SetConsoleMode(stdout, mode) |
| 86 | // windows 带颜色 log 自定义格式 |
| 87 | logrus.SetFormatter(&logFormat{hasColor: err == nil}) |
| 88 | if err != nil { |
| 89 | logrus.Warnln("VT100设置失败, 将以无色模式输出") |
| 90 | } |
| 91 | |
| 92 | err = setConsoleTitle("ZeroBot-Plugin " + banner.Version + " " + banner.Copyright) |
| 93 | if err != nil { |
| 94 | panic(err) |
| 95 | } |
| 96 | } |
nothing calls this directly
no test coverage detected