package ui import ( "fmt" "io" "os" "strings" ) var stdOutput io.Writer var verboseOutput io.Writer func init() { isQuiet := detectFlag("q", "--quiet") isVerbose := detectFlag("V", "--verbose") SetupOutputMode(isQuiet, isVerbose) } func detectFlag(shortFlag string, fullFlag string) bool { for _, arg := range os.Args { if containFlag(arg, shortFlag) || arg == fullFlag { return true } } return false } func containFlag(arg string, shortFlag string) bool { if len(arg)>1 { if arg[0] == "-"[0] && arg[1] != "-"[0] { return strings.Contains(arg, shortFlag) } } return false } func SetupOutputMode(isQuiet bool, isVerbose bool) { if isQuiet { stdOutput = io.Discard verboseOutput = io.Discard return } if isVerbose { stdOutput = os.Stdout verboseOutput = os.Stdout return } stdOutput = os.Stdout verboseOutput = io.Discard } func PrintOut(a ...any) (n int, err error) { n, err = fmt.Fprintln(stdOutput, a...) return } func PrintVerbose(a ...any) (n int, err error) { n, err = fmt.Fprintln(verboseOutput, a...) return }