ui/ui.go
2025-04-21 00:25:22 +03:00

63 lines
1.1 KiB
Go

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
}