ffmd/README.md

70 lines
1.4 KiB
Markdown
Raw Permalink Normal View History

# ffmd
[![Go Reference](https://pkg.go.dev/badge/go.jolheiser.com/ffmd.svg)](https://pkg.go.dev/go.jolheiser.com/ffmd)
One of the things that I really liked about [urfave/cli](https://github.com/urfave/cli) was that it could
generate markdown docs for my commands.
With `ffmd` you can generate markdown docs for both `flag.FlagSet` and `ffcli.Command` (with any amount of sub-commands).
Check out [examples](examples) for some sample generated docs.
## Generate your docs
```go
//go:build generate
// +build generate
package main
import (
"os"
"go.jolheiser.com/ffmd"
)
func main() {
fi, err := os.Create("docs.md")
if err != nil {
panic(err)
}
defer fi.Close()
// cmd is the ffcli.Command
md, err := ffmd.Command(cmd)
if err != nil {
panic(err)
}
if _, err := fi.WriteString(md); err != nil {
panic(err)
}
}
```
## Aliases
While the stdlib doesn't directly support flag aliases, this library allows for neater generation using a special syntax.
```go
package main
import "flag"
func main() {
fs := flag.NewFlagSet("myapp", flag.ExitOnError)
stringFlag := fs.String("string", "", "String flag")
fs.StringVar(stringFlag, "s", *stringFlag, "--string")
}
```
In the above code, a second flag was registered with the special `Usage` that simply declared what the long-form flag name was.
In this scenario, `ffmd` will generate docs similar to
```text
--string,-s
```
See the [example](examples/alias).
## License
[MIT](LICENSE)