
Due to some very old mistakes too many of Delve's flags are declared as persistent on cobra's root command. For example the headless flag is a global flag but does not apply to connect, dap or trace; the backend flag does not apply to replay, core and dap; etc. Almost all global flags should have been declared as local flags on individual subcommands. Unfortunately we can not change this without breaking backwards compatibility, for example: dlv --headless debug would not parse if headless was a flag of debug instead of a global flag. Instead we alter usage function and the markdown generation script to strategically hide the flags that don't apply. Fixes #2361
47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
//go:build ignore
|
|
// +build ignore
|
|
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/go-delve/delve/cmd/dlv/cmds"
|
|
"github.com/go-delve/delve/cmd/dlv/cmds/helphelpers"
|
|
"github.com/spf13/cobra/doc"
|
|
)
|
|
|
|
const defaultUsageDir = "./Documentation/usage"
|
|
|
|
func main() {
|
|
usageDir := defaultUsageDir
|
|
if len(os.Args) > 1 {
|
|
usageDir = os.Args[1]
|
|
}
|
|
root := cmds.New(true)
|
|
|
|
cmdnames := []string{}
|
|
for _, subcmd := range root.Commands() {
|
|
cmdnames = append(cmdnames, subcmd.Name())
|
|
}
|
|
helphelpers.Prepare(root)
|
|
doc.GenMarkdownTree(root, usageDir)
|
|
root = nil
|
|
// GenMarkdownTree ignores additional help topic commands, so we have to do this manually
|
|
for _, cmdname := range cmdnames {
|
|
cmd, _, _ := cmds.New(true).Find([]string{cmdname})
|
|
helphelpers.Prepare(cmd)
|
|
doc.GenMarkdownTree(cmd, usageDir)
|
|
}
|
|
fh, err := os.OpenFile(filepath.Join(usageDir, "dlv.md"), os.O_APPEND|os.O_WRONLY, 0)
|
|
if err != nil {
|
|
log.Fatalf("appending to dlv.md: %v", err)
|
|
}
|
|
defer fh.Close()
|
|
fmt.Fprintln(fh, "* [dlv log](dlv_log.md)\t - Help about logging flags")
|
|
fmt.Fprintln(fh, "* [dlv backend](dlv_backend.md)\t - Help about the `--backend` flag")
|
|
}
|