ui/ui.go
2025-04-15 00:10:39 +03:00

58 lines
1.2 KiB
Go

// This package provides --quiet and --verbose flags for cli and corresponding output print functions PrintOut and PrintVerbose.
package ui
import (
"fmt"
"io"
"os"
"github.com/spf13/pflag"
)
var stdOutput io.Writer
var verboseOutput io.Writer
func init() {
outputFlagSet := pflag.NewFlagSet("output", pflag.ContinueOnError)
outputFlagSet.ParseErrorsWhitelist.UnknownFlags = true
outputFlagSet.SetOutput(nil)
isVerbose := outputFlagSet.BoolP("verbose", "V", false, "If set adds additional details to output.")
isQuiet := outputFlagSet.BoolP("quiet", "q", false, "If set makes no output at all.")
err := outputFlagSet.Parse(os.Args)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
SetupOutputMode(*isQuiet, *isVerbose)
}
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
}