瀏覽代碼

Commit 2021-04-09 05:28

zry 3 年之前
父節點
當前提交
97aefb630c
共有 2 個文件被更改,包括 72 次插入0 次删除
  1. 69 0
      cliack.go
  2. 3 0
      go.mod

+ 69 - 0
cliack.go

@@ -0,0 +1,69 @@
+package cliack
+
+import (
+	"fmt"
+	"strings"
+)
+
+func Acknowledge(text string, defaultYes bool) bool {
+	var opt []string
+	if defaultYes {
+		opt = []string{"y", "N"}
+	} else {
+		opt = []string{"Y", "n"}
+	}
+	v, _ := SimpleSelect(text, opt)
+	return v == 0
+}
+
+func printSimplePrompt(text string, options []string) {
+	tipstr := "(" + strings.Join(options, "/") + ")"
+	fmt.Println(text, tipstr, "> ")
+}
+
+func printComplexPromptFirst(text string, options map[string]string) string {
+	fmt.Println(text)
+	fmt.Println()
+	var opts []string
+	for k, v := range options {
+		fmt.Println("\t", k, "\t", "-", "\t", v)
+		opts = append(opts, k)
+	}
+	optstr := "(" + strings.Join(opts, "/") + ")"
+	fmt.Println(optstr, "> ")
+	return optstr
+}
+
+func SimpleSelect(text string, options []string) (v int, err error) {
+	for {
+		printSimplePrompt(text, options)
+		var input string
+		_, err := fmt.Scanln(&input)
+		if err != nil {
+			return -1, err
+		}
+		for i, v := range options {
+			if input == v {
+				return i, nil
+			}
+		}
+		fmt.Println("Invalid input!")
+	}
+}
+
+func ComplexSelect(text string, options map[string]string) (k string, err error) {
+	optstr := printComplexPromptFirst(text, options)
+	for {
+		var input string
+		_, err := fmt.Scanln(&input)
+		if err != nil {
+			return "", err
+		}
+		_, ok := options[input]
+		if ok {
+			return input, nil
+		}
+		fmt.Println("Invalid input!")
+		fmt.Println(optstr, "> ")
+	}
+}

+ 3 - 0
go.mod

@@ -0,0 +1,3 @@
+module git.swzry.com/zry/go-cli-ack
+
+go 1.16