added a Files field to Command for programs that process files provided as arguments after the flags.

This commit is contained in:
Baruch Lubinsky 2015-03-03 16:19:46 +02:00
parent f8e1ec56bd
commit 511c187450

View file

@ -42,6 +42,8 @@ type Command struct {
Long string Long string
// Examples of how to use the command // Examples of how to use the command
Example string Example string
// Files that are passed to the program after flags
Files string
// Full set of flags // Full set of flags
flags *flag.FlagSet flags *flag.FlagSet
// Set of flags childrens of this command will inherit // Set of flags childrens of this command will inherit
@ -204,7 +206,7 @@ func (c *Command) UsageTemplate() string {
} else { } else {
return `{{ $cmd := . }} return `{{ $cmd := . }}
Usage: {{if .Runnable}} Usage: {{if .Runnable}}
{{.UseLine}}{{if .HasFlags}} [flags]{{end}}{{end}}{{if .HasSubCommands}} {{.UseLine}}{{if .HasFlags}} [flags]{{end}}{{if .HasFiles}} [files ...]{{end}}{{end}}{{if .HasSubCommands}}
{{ .CommandPath}} [command]{{end}}{{if gt .Aliases 0}} {{ .CommandPath}} [command]{{end}}{{if gt .Aliases 0}}
Aliases: Aliases:
@ -212,6 +214,10 @@ Aliases:
{{end}}{{if .HasExample}} {{end}}{{if .HasExample}}
Examples: Examples:
{{ .Example }} {{ .Example }}
{{end}}
{{if .HasFiles}}
Files:
{{ .Files }}
{{end}}{{ if .HasSubCommands}} {{end}}{{ if .HasSubCommands}}
Available Commands: {{range .Commands}}{{if .Runnable}} Available Commands: {{range .Commands}}{{if .Runnable}}
{{rpad .Name .NamePadding }} {{.Short}}{{end}}{{end}} {{rpad .Name .NamePadding }} {{.Short}}{{end}}{{end}}
@ -708,6 +714,11 @@ func (c *Command) HasParent() bool {
return c.parent != nil return c.parent != nil
} }
// Does the command take file inputs
func (c *Command) HasFiles() bool {
return c.Files != ""
}
// Get the complete FlagSet that applies to this command (local and persistent declared here and by all parents) // Get the complete FlagSet that applies to this command (local and persistent declared here and by all parents)
func (c *Command) Flags() *flag.FlagSet { func (c *Command) Flags() *flag.FlagSet {
if c.flags == nil { if c.flags == nil {