mirror of
https://github.com/ipfs/kubo.git
synced 2025-10-19 12:42:23 +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
|
Name string
|
||||||
Subcommands []Command
|
Subcommands []Command
|
||||||
Options []cmds.Option
|
Options []cmds.Option
|
||||||
|
ShowOptions bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
flagsOptionName = "flags"
|
||||||
|
)
|
||||||
|
|
||||||
// CommandsCmd takes in a root command,
|
// CommandsCmd takes in a root command,
|
||||||
// and returns a command that lists the subcommands in that root
|
// and returns a command that lists the subcommands in that root
|
||||||
func CommandsCmd(root *cmds.Command) *cmds.Command {
|
func CommandsCmd(root *cmds.Command) *cmds.Command {
|
||||||
@ -29,10 +34,13 @@ func CommandsCmd(root *cmds.Command) *cmds.Command {
|
|||||||
Tagline: "List all available commands.",
|
Tagline: "List all available commands.",
|
||||||
ShortDescription: `Lists all available commands (and subcommands) and exits.`,
|
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) {
|
Run: func(req cmds.Request, res cmds.Response) {
|
||||||
root := cmd2outputCmd("ipfs", root)
|
showOptions, _, _ := req.Option(flagsOptionName).Bool();
|
||||||
res.SetOutput(&root)
|
rootCmd := cmd2outputCmd("ipfs", root, showOptions)
|
||||||
|
res.SetOutput(&rootCmd)
|
||||||
},
|
},
|
||||||
Marshalers: cmds.MarshalerMap{
|
Marshalers: cmds.MarshalerMap{
|
||||||
cmds.Text: func(res cmds.Response) (io.Reader, error) {
|
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{
|
output := Command{
|
||||||
Name: name,
|
Name: name,
|
||||||
Subcommands: make([]Command, len(cmd.Subcommands)),
|
Subcommands: make([]Command, len(cmd.Subcommands)),
|
||||||
Options: cmd.Options,
|
Options: cmd.Options,
|
||||||
|
ShowOptions: showOptions,
|
||||||
}
|
}
|
||||||
|
|
||||||
i := 0
|
i := 0
|
||||||
for name, sub := range cmd.Subcommands {
|
for name, sub := range cmd.Subcommands {
|
||||||
output.Subcommands[i] = cmd2outputCmd(name, sub)
|
output.Subcommands[i] = cmd2outputCmd(name, sub, showOptions)
|
||||||
i++
|
i++
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -71,7 +80,7 @@ func cmdPathStrings(cmd *Command) []string {
|
|||||||
recurse = func(prefix string, cmd *Command) {
|
recurse = func(prefix string, cmd *Command) {
|
||||||
newPrefix := prefix + cmd.Name
|
newPrefix := prefix + cmd.Name
|
||||||
cmds = append(cmds, newPrefix)
|
cmds = append(cmds, newPrefix)
|
||||||
if prefix != "" {
|
if prefix != "" && cmd.ShowOptions {
|
||||||
for _, option := range cmd.Options {
|
for _, option := range cmd.Options {
|
||||||
optName := option.Names()[0]
|
optName := option.Names()[0]
|
||||||
if len(optName) == 1 {
|
if len(optName) == 1 {
|
||||||
|
Reference in New Issue
Block a user