Compare commits

..

No commits in common. "main" and "v0.0.2" have entirely different histories.
main ... v0.0.2

2 changed files with 15 additions and 51 deletions

View file

@ -1,31 +0,0 @@
### The "UI" package
This package provides --verbose and --quiet flag features to your cli.
It recognize both short and long flags. The package contains three functions:
- **PrintOut** to print regular messages unless --quiet flag is set.
- **PrintVerbose** to print messages only if --verbose flag is set, but --quiet
flag is not.
- **SetupOutputMode** to reconfigure output mode in the runtime.
-------------
### Usage
1. Download the package by **go get** command:
```shell
go get code.foilhatguy.casa/pub/ui
```
2. Import package to your golang code:
```go
import (
"code.foilhatguy.casa/pub/ui"
)
```
There is no need for additional configuration. The package have its own **init**
function to detect --verbose and --quiet flags.
3. Use **PrintOut** and **PrintVerbose** functions to print
messages to the standard output:
```go
ui.PrintOut("Some regular message.")
ui.PrintVerbose("Some message printed only if --verbose flag is set.")
```

35
ui.go
View file

@ -1,38 +1,33 @@
// This package provides --quiet and --verbose flags for cli and corresponding output print functions PrintOut and PrintVerbose.
// Another line
package ui
import (
"fmt"
"io"
"os"
"strings"
"github.com/spf13/pflag"
)
var stdOutput io.Writer
var verboseOutput io.Writer
func init() {
isQuiet := detectFlag("q", "--quiet")
isVerbose := detectFlag("V", "--verbose")
outputFlagSet := pflag.NewFlagSet("output", pflag.ContinueOnError)
outputFlagSet.ParseErrorsWhitelist.UnknownFlags = true
outputFlagSet.SetOutput(nil)
SetupOutputMode(isQuiet, isVerbose)
}
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.")
func detectFlag(shortFlag string, fullFlag string) bool {
for _, arg := range os.Args {
if containFlag(arg, shortFlag) || arg == fullFlag {
return true
}
}
return false
}
err := outputFlagSet.Parse(os.Args)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
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
SetupOutputMode(*isQuiet, *isVerbose)
}
func SetupOutputMode(isQuiet bool, isVerbose bool) {