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. This package provides --version flag feature to your cli.
It recognize both short and long flags. It recognize both short and long flags. Version number is
automatically added from the latest tag in your git repository.
------------- -------------
### Usage ### Usage
1. Download the package by **go get** command: 1. Download the package by **go get** command:
```shell ```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 2. Add the package as a tool dependency to your project in
tools.go: tools.go:
@ -18,28 +19,23 @@ tools.go:
package tools package tools
import ( import (
_ "code.foilhatguy.casa/pub/help" _ "code.foilhatguy.casa/pub/version"
) )
``` ```
3. In the main package add a go:generate directive: 3. In the main package add a go:generate directive:
```go ```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: 4. Run code generator by **go generate** command:
```shell ```shell
go generate ./... go generate ./...
``` ```
The package will generate a **help.go** file as a part of The package will detect a version number from the latest git
the main package. It will contain code for --help flag detection. 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 ```shell
go run . --help go run . --version
``` ```

19
main.go
View file

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