Compare commits
4 commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
35432e184a | ||
![]() |
b942c67d8e | ||
![]() |
4a628ccc7e | ||
![]() |
e0a8e22fea |
2 changed files with 28 additions and 26 deletions
30
README.md
30
README.md
|
@ -1,15 +1,14 @@
|
|||
### The "Version" package
|
||||
### The "Help" package
|
||||
|
||||
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.
|
||||
This package provides --help flag feature to your cli.
|
||||
It recognize both short and long flags.
|
||||
|
||||
-------------
|
||||
|
||||
### Usage
|
||||
1. Download the package by **go get** command:
|
||||
```shell
|
||||
go get code.foilhatguy.casa/pub/version
|
||||
go get code.foilhatguy.casa/pub/help
|
||||
```
|
||||
2. Add the package as a tool dependency to your project in
|
||||
tools.go:
|
||||
|
@ -19,23 +18,28 @@ tools.go:
|
|||
package tools
|
||||
|
||||
import (
|
||||
_ "code.foilhatguy.casa/pub/version"
|
||||
_ "code.foilhatguy.casa/pub/help"
|
||||
)
|
||||
```
|
||||
3. In the main package add a go:generate directive:
|
||||
```go
|
||||
//go:generate go run code.foilhatguy.casa/pub/version
|
||||
//go:generate go run code.foilhatguy.casa/pub/help HELP.md
|
||||
```
|
||||
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 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.
|
||||
The package will generate a **help.go** file as a part of
|
||||
the main package. It will contain code for --help flag detection.
|
||||
|
||||
5. Build and run your application with the --version flag.
|
||||
5. Build and run your application with the --help flag.
|
||||
```shell
|
||||
go run . --version
|
||||
go run . --help
|
||||
```
|
8
main.go
8
main.go
|
@ -22,7 +22,8 @@ import (
|
|||
//go:embed help
|
||||
var goFS embed.FS
|
||||
|
||||
func flagIsSet(arg string, sfortFlag string) bool {
|
||||
func init() {
|
||||
flagIsSet := func(arg string, sfortFlag string) bool {
|
||||
arg = strings.Split(arg, "=")[0]
|
||||
if len(arg)>1 {
|
||||
if arg[0] == "-"[0] && arg[1] != "-"[0] {
|
||||
|
@ -30,9 +31,8 @@ func flagIsSet(arg string, sfortFlag string) bool {
|
|||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
func init() {
|
||||
help, err := goFS.ReadFile("help")
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
|
@ -40,8 +40,6 @@ 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)
|
||||
|
|
Loading…
Add table
Reference in a new issue