ui/ui.go

64 lines
1.1 KiB
Go
Raw Permalink Normal View History

2025-04-15 00:10:39 +03:00
package ui
import (
"fmt"
"io"
"os"
2025-04-20 23:57:39 +03:00
"strings"
2025-04-15 00:10:39 +03:00
)
var stdOutput io.Writer
var verboseOutput io.Writer
func init() {
2025-04-20 23:57:39 +03:00
isQuiet := detectFlag("q", "--quiet")
isVerbose := detectFlag("V", "--verbose")
2025-04-15 00:10:39 +03:00
2025-04-20 23:57:39 +03:00
SetupOutputMode(isQuiet, isVerbose)
}
2025-04-15 00:10:39 +03:00
2025-04-20 23:57:39 +03:00
func detectFlag(shortFlag string, fullFlag string) bool {
for _, arg := range os.Args {
2025-04-21 00:25:22 +03:00
if containFlag(arg, shortFlag) || arg == fullFlag {
return true
}
2025-04-20 23:57:39 +03:00
}
return false
}
2025-04-15 00:10:39 +03:00
2025-04-20 23:57:39 +03:00
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
2025-04-15 00:10:39 +03:00
}
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
}