Compare commits

..

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

2 changed files with 23 additions and 26 deletions

View file

@ -1,14 +1,15 @@
### The "Help" package
### The "Version" package
This package provides --help flag feature to your cli.
It recognize both short and long flags.
This package provides --version flag feature to your cli.
It recognize both short and long flags. Version number is
automatically added from the latest tag in your git repository.
-------------
### Usage
1. Download the package by **go get** command:
```shell
go get code.foilhatguy.casa/pub/help
go get code.foilhatguy.casa/pub/version
```
2. Add the package as a tool dependency to your project in
tools.go:
@ -18,28 +19,23 @@ tools.go:
package tools
import (
_ "code.foilhatguy.casa/pub/help"
_ "code.foilhatguy.casa/pub/version"
)
```
3. In the main package add a go:generate directive:
```go
//go:generate go run code.foilhatguy.casa/pub/help HELP.md
//go:generate go run code.foilhatguy.casa/pub/version
```
The last part in this directive is a name of the help file for
your application. It should be placed in the root directory
of your project along with **main.go** file. The help file
can be written ether in the MarkDown format, or in plain text.
MarkDown will be automatically converted in to plain text,
which is suitable for the console output.
4. Run code generator by **go generate** command:
```shell
go generate ./...
```
The package will generate a **help.go** file as a part of
the main package. It will contain code for --help flag detection.
The package will detect a version number from the latest git
tag from your project. Then it will generate a **version.go**
file as a part of the main package. It will contain a version
number as a constant and code for --version flag detection.
5. Build and run your application with the --help flag.
5. Build and run your application with the --version flag.
```shell
go run . --help
go run . --version
```

11
main.go
View file

@ -22,17 +22,16 @@ import (
//go:embed help
var goFS embed.FS
func init() {
flagIsSet := func(arg string, sfortFlag string) bool {
arg = strings.Split(arg, "=")[0]
func flagIsSet(arg string, sfortFlag string) bool {
if len(arg)>1 {
if arg[0] == "-"[0] && arg[1] != "-"[0] {
if arg[0] == "-"[0] && arg[1] != "-"[0] && arg[2] != "="[0] {
return strings.Contains(arg, sfortFlag)
}
}
return false
}
}
func init() {
help, err := goFS.ReadFile("help")
if err != nil {
fmt.Println(err)
@ -40,6 +39,8 @@ func init() {
}
for _, arg := range os.Args {
fmt.Println(flagIsSet(arg, "h"))
fmt.Println(arg == "--help")
if flagIsSet(arg, "h") || arg == "--help" {
fmt.Println(string(help))
os.Exit(0)