github.com/taubyte/tau-cli@v0.1.13-0.20240326000942-487f0d57edfc/prompts/database/min_max.go (about) 1 package databasePrompts 2 3 import ( 4 "fmt" 5 "strconv" 6 7 "github.com/pterm/pterm" 8 databaseFlags "github.com/taubyte/tau-cli/flags/database" 9 "github.com/taubyte/tau-cli/prompts" 10 "github.com/taubyte/tau-cli/validate" 11 "github.com/urfave/cli/v2" 12 ) 13 14 func getOrRequireMin(c *cli.Context, prev ...string) string { 15 return prompts.GetOrRequireAString(c, databaseFlags.Min.Name, MinPrompt, validate.VariableMinValidator, prev...) 16 } 17 18 func getOrRequireMax(c *cli.Context, prev ...string) string { 19 return prompts.GetOrRequireAString(c, databaseFlags.Max.Name, MaxPrompt, validate.VariableMaxValidator, prev...) 20 } 21 22 func GetOrAskForMinMax(c *cli.Context, prevMin, prevMax int, new bool) (intMin int, intMax int, min string, max string) { 23 var err error 24 for { 25 if new { 26 min = getOrRequireMin(c) 27 max = getOrRequireMax(c) 28 } else { 29 min = getOrRequireMin(c, strconv.Itoa(prevMin)) 30 max = getOrRequireMax(c, strconv.Itoa(prevMax)) 31 } 32 33 intMin, intMax, err = convertAndValidateMinMax(min, max) 34 if err != nil { 35 pterm.Warning.Println(err.Error()) 36 prompts.PanicIfPromptNotEnabled("min-max prompt") 37 } else { 38 break 39 } 40 } 41 42 return 43 } 44 45 func convertAndValidateMinMax(min string, max string) (_min int, _max int, err error) { 46 _min, err = strconv.Atoi(min) 47 if err != nil { 48 return 0, 0, fmt.Errorf(ParsingMinFailed, min, err) 49 } 50 51 _max, err = strconv.Atoi(max) 52 if err != nil { 53 return 0, 0, fmt.Errorf(ParsingMaxFailed, max, err) 54 } 55 56 if _min >= _max { 57 return 0, 0, fmt.Errorf(MinCannotBeGreaterThanMax, min, max) 58 } 59 60 return 61 }