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
|
|
|
|
}
|