Compare commits

..

6 commits
v0.0.2 ... main

Author SHA1 Message Date
Foil-hat-guy
72db14ad2c
Fixed bug in os.Args iteration. 2025-04-21 00:25:22 +03:00
Foil-hat-guy
bd2c81aad1
Add some more logs. 2025-04-21 00:19:48 +03:00
Foil-hat-guy
31cbc929d3
Added extra log for debuging. 2025-04-21 00:05:36 +03:00
Foil-hat-guy
7a21684147
Get rid from pflag dependency. 2025-04-20 23:57:39 +03:00
Foil-hat-guy
c0853ca918
Fixed typo in README.md 2025-04-20 23:46:27 +03:00
Foil-hat-guy
fa49d17486
README.md file is added. 2025-04-20 23:44:39 +03:00
2 changed files with 51 additions and 15 deletions

31
README.md Normal file
View file

@ -0,0 +1,31 @@
### 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.")
```

33
ui.go
View file

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