package output import ( "fmt" "io/ioutil" "log" "os" "runtime" ) var ( endOfLine string = "\n" devNull *log.Logger = log.New(ioutil.Discard, "", 0) stdout *log.Logger = log.New(os.Stdout, "", 0) stderr *log.Logger = log.New(os.Stderr, "", 0) verbose *log.Logger = devNull ) func SetQuiet(enabled bool) { if enabled { stdout = devNull stderr = devNull verbose = devNull } } func SetVerbose(enabled bool) { if enabled { verbose = stderr } else { verbose = devNull } } func SetEndOfLineNative() { switch os := runtime.GOOS; os { case "windows": setEndOfLineWindows() default: setEndOfLineUnix() } } func EOL() string { return endOfLine } func setEndOfLineUnix() { endOfLine = "\n" } func setEndOfLineWindows() { endOfLine = "\r\n" } func Print(v ...interface{}) { stdout.Print(v...) } func Printf(format string, v ...interface{}) { stdout.Printf(format, v...) } func Println(v ...interface{}) { stdout.Print(fmt.Sprint(v...) + endOfLine) } func Error(v ...interface{}) { stderr.Print(v...) } func Errorf(format string, v ...interface{}) { stderr.Printf(format, v...) } func Errorln(v ...interface{}) { stderr.Print(fmt.Sprint(v...) + endOfLine) } func Verbose(v ...interface{}) { verbose.Print(v...) } func Verbosef(format string, v ...interface{}) { verbose.Printf(format, v...) } func Verboseln(v ...interface{}) { verbose.Print(fmt.Sprint(v...) + endOfLine) }