ffmd/README.md

1.4 KiB

ffmd

Go Reference

One of the things that I really liked about 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 for some sample generated docs.

Generate your docs

//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.

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

--string,-s

See the example.

License

MIT