[cmd] 设置不处理按键为ESC
This commit is contained in:
parent
99e314c925
commit
a1faa3c9b5
|
|
@ -13,6 +13,7 @@ import (
|
||||||
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
|
"golang.org/x/term"
|
||||||
)
|
)
|
||||||
|
|
||||||
var SafeCmd = &cobra.Command{
|
var SafeCmd = &cobra.Command{
|
||||||
|
|
@ -30,6 +31,25 @@ var SafeCmd = &cobra.Command{
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func readKeyWithESC() (string, error) {
|
||||||
|
oldState, err := term.MakeRaw(int(os.Stdin.Fd()))
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
defer term.Restore(int(os.Stdin.Fd()), oldState)
|
||||||
|
|
||||||
|
b := make([]byte, 1)
|
||||||
|
_, err = os.Stdin.Read(b)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
if b[0] == 27 { // ESC
|
||||||
|
return "ESC", nil
|
||||||
|
}
|
||||||
|
return string(b), nil
|
||||||
|
}
|
||||||
|
|
||||||
func interactiveSafe(cfg *config.Config) {
|
func interactiveSafe(cfg *config.Config) {
|
||||||
dataDir := cfg.Storage.DataDir
|
dataDir := cfg.Storage.DataDir
|
||||||
|
|
||||||
|
|
@ -55,12 +75,14 @@ func interactiveSafe(cfg *config.Config) {
|
||||||
fmt.Println("\n请选择操作:")
|
fmt.Println("\n请选择操作:")
|
||||||
fmt.Println("[1] 将以上可疑文件全部确认为安全 (移至白名单)")
|
fmt.Println("[1] 将以上可疑文件全部确认为安全 (移至白名单)")
|
||||||
// Todo: 支持逐个确认
|
// Todo: 支持逐个确认
|
||||||
fmt.Println("[2] 退出不处理")
|
fmt.Println("[ESC] 退出不处理")
|
||||||
fmt.Print("请输入选项 (1-2): ")
|
fmt.Print("请输入选项: ")
|
||||||
|
|
||||||
reader := bufio.NewReader(os.Stdin)
|
input, err := readKeyWithESC()
|
||||||
input, _ := reader.ReadString('\n')
|
if err != nil {
|
||||||
input = strings.TrimSpace(input)
|
fmt.Printf("读取输入失败: %v\n", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
switch input {
|
switch input {
|
||||||
case "1":
|
case "1":
|
||||||
|
|
@ -70,7 +92,7 @@ func interactiveSafe(cfg *config.Config) {
|
||||||
} else {
|
} else {
|
||||||
fmt.Println("已将可疑文件移入白名单。")
|
fmt.Println("已将可疑文件移入白名单。")
|
||||||
}
|
}
|
||||||
case "2":
|
case "ESC":
|
||||||
fmt.Println("已取消操作。")
|
fmt.Println("已取消操作。")
|
||||||
default:
|
default:
|
||||||
fmt.Println("无效选项,已退出。")
|
fmt.Println("无效选项,已退出。")
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user