49 lines
1.0 KiB
Go
49 lines
1.0 KiB
Go
//go:build generate
|
|
// +build generate
|
|
|
|
package main
|
|
|
|
import (
|
|
"flag"
|
|
"github.com/peterbourgon/ff/v3/ffcli"
|
|
"os"
|
|
|
|
"go.jolheiser.com/ffmd"
|
|
)
|
|
|
|
//go:generate go run main.go
|
|
func main() {
|
|
fs := flag.NewFlagSet("myapp", flag.ExitOnError)
|
|
stringFlag := fs.String("string-flag", "", "String flag")
|
|
fs.StringVar(stringFlag, "sf", *stringFlag, "--string-flag")
|
|
intFlag := fs.Int("int-flag", 0, "Int flag")
|
|
fs.IntVar(intFlag, "if", *intFlag, "--int-flag")
|
|
boolFlag := fs.Bool("bool-flag", false, "Bool flag")
|
|
fs.BoolVar(boolFlag, "bf", *boolFlag, "--bool-flag")
|
|
durFlag := fs.Duration("duration-flag", 0, "Duration flag")
|
|
fs.DurationVar(durFlag, "df", *durFlag, "--duration-flag")
|
|
|
|
cmd := &ffcli.Command{
|
|
Name: "myapp",
|
|
FlagSet: fs,
|
|
Subcommands: nil,
|
|
}
|
|
|
|
md, err := ffmd.Command(cmd)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
write("README.md", md)
|
|
}
|
|
|
|
func write(path, content string) {
|
|
fi, err := os.Create(path)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer fi.Close()
|
|
if _, err := fi.WriteString(content); err != nil {
|
|
panic(err)
|
|
}
|
|
}
|