mirror of
https://github.com/rclone/rclone.git
synced 2025-12-11 22:14:05 +01:00
help: global flags help command extended filtering
This commit is contained in:
committed by
Nick Craig-Wood
parent
c6352231e4
commit
1720d3e11c
18
cmd/help.go
18
cmd/help.go
@@ -59,20 +59,25 @@ var helpCommand = &cobra.Command{
|
||||
}
|
||||
|
||||
// to filter the flags with
|
||||
var flagsRe *regexp.Regexp
|
||||
var (
|
||||
filterFlagsGroup string
|
||||
filterFlagsRe *regexp.Regexp
|
||||
filterFlagsNamesOnly bool
|
||||
)
|
||||
|
||||
// Show the flags
|
||||
var helpFlags = &cobra.Command{
|
||||
Use: "flags [<filter>]",
|
||||
Short: "Show the global flags for rclone",
|
||||
Run: func(command *cobra.Command, args []string) {
|
||||
command.Flags()
|
||||
if len(args) > 0 {
|
||||
re, err := filter.GlobStringToRegexp(args[0], false)
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to compile flags regexp: %v", err)
|
||||
log.Fatalf("Invalid flag filter: %v", err)
|
||||
}
|
||||
fs.Debugf(nil, "Flags filter: %s", re.String())
|
||||
flagsRe = re
|
||||
fs.Debugf(nil, "Flag filter: %s", re.String())
|
||||
filterFlagsRe = re
|
||||
}
|
||||
if GeneratingDocs {
|
||||
Root.SetUsageTemplate(docFlagsTemplate)
|
||||
@@ -159,7 +164,7 @@ func setupRootCommand(rootCmd *cobra.Command) {
|
||||
fs.Errorf(nil, "Flag --%s is unknown", flag.Name)
|
||||
}
|
||||
})
|
||||
groups := flags.All.Filter(flagsRe).Include(cmd.Annotations["groups"])
|
||||
groups := flags.All.Filter(filterFlagsGroup, filterFlagsRe, filterFlagsNamesOnly).Include(cmd.Annotations["groups"])
|
||||
return groups.Groups
|
||||
})
|
||||
rootCmd.SetUsageTemplate(usageTemplate)
|
||||
@@ -171,6 +176,9 @@ func setupRootCommand(rootCmd *cobra.Command) {
|
||||
|
||||
rootCmd.AddCommand(helpCommand)
|
||||
helpCommand.AddCommand(helpFlags)
|
||||
helpFlagsFlags := helpFlags.Flags()
|
||||
flags.StringVarP(helpFlagsFlags, &filterFlagsGroup, "group", "", "", "Only include flags from specific group", "")
|
||||
flags.BoolVarP(helpFlagsFlags, &filterFlagsNamesOnly, "name", "", false, "Apply filter only on flag names", "")
|
||||
helpCommand.AddCommand(helpBackends)
|
||||
helpCommand.AddCommand(helpBackend)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user