123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- 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.Print(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.Print(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.Print(optstr, " > ")
- }
- }
|