mirror of
https://github.com/ipfs/kubo.git
synced 2025-06-05 15:36:57 +08:00
commands: add --flags to show all flags
License: MIT Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
This commit is contained in:
@ -19,8 +19,13 @@ type Command struct {
|
||||
Name string
|
||||
Subcommands []Command
|
||||
Options []cmds.Option
|
||||
ShowOptions bool
|
||||
}
|
||||
|
||||
const (
|
||||
flagsOptionName = "flags"
|
||||
)
|
||||
|
||||
// CommandsCmd takes in a root command,
|
||||
// and returns a command that lists the subcommands in that root
|
||||
func CommandsCmd(root *cmds.Command) *cmds.Command {
|
||||
@ -29,10 +34,13 @@ func CommandsCmd(root *cmds.Command) *cmds.Command {
|
||||
Tagline: "List all available commands.",
|
||||
ShortDescription: `Lists all available commands (and subcommands) and exits.`,
|
||||
},
|
||||
|
||||
Options: []cmds.Option{
|
||||
cmds.BoolOption(flagsOptionName, "f", "Show command flags"),
|
||||
},
|
||||
Run: func(req cmds.Request, res cmds.Response) {
|
||||
root := cmd2outputCmd("ipfs", root)
|
||||
res.SetOutput(&root)
|
||||
showOptions, _, _ := req.Option(flagsOptionName).Bool();
|
||||
rootCmd := cmd2outputCmd("ipfs", root, showOptions)
|
||||
res.SetOutput(&rootCmd)
|
||||
},
|
||||
Marshalers: cmds.MarshalerMap{
|
||||
cmds.Text: func(res cmds.Response) (io.Reader, error) {
|
||||
@ -48,16 +56,17 @@ func CommandsCmd(root *cmds.Command) *cmds.Command {
|
||||
}
|
||||
}
|
||||
|
||||
func cmd2outputCmd(name string, cmd *cmds.Command) Command {
|
||||
func cmd2outputCmd(name string, cmd *cmds.Command, showOptions bool) Command {
|
||||
output := Command{
|
||||
Name: name,
|
||||
Subcommands: make([]Command, len(cmd.Subcommands)),
|
||||
Options: cmd.Options,
|
||||
ShowOptions: showOptions,
|
||||
}
|
||||
|
||||
i := 0
|
||||
for name, sub := range cmd.Subcommands {
|
||||
output.Subcommands[i] = cmd2outputCmd(name, sub)
|
||||
output.Subcommands[i] = cmd2outputCmd(name, sub, showOptions)
|
||||
i++
|
||||
}
|
||||
|
||||
@ -71,7 +80,7 @@ func cmdPathStrings(cmd *Command) []string {
|
||||
recurse = func(prefix string, cmd *Command) {
|
||||
newPrefix := prefix + cmd.Name
|
||||
cmds = append(cmds, newPrefix)
|
||||
if prefix != "" {
|
||||
if prefix != "" && cmd.ShowOptions {
|
||||
for _, option := range cmd.Options {
|
||||
optName := option.Names()[0]
|
||||
if len(optName) == 1 {
|
||||
|
Reference in New Issue
Block a user