| package kingpin |
| |
| // Default usage template. |
| var DefaultUsageTemplate = `{{define "FormatCommand"}}\ |
| {{if .FlagSummary}} {{.FlagSummary}}{{end}}\ |
| {{range .Args}} {{if not .Required}}[{{end}}<{{.Name}}>{{if .Value|IsCumulative}}...{{end}}{{if not .Required}}]{{end}}{{end}}\ |
| {{end}}\ |
| |
| {{define "FormatCommands"}}\ |
| {{range .FlattenedCommands}}\ |
| {{if not .Hidden}}\ |
| {{.FullCommand}}{{if .Default}}*{{end}}{{template "FormatCommand" .}} |
| {{.Help|Wrap 4}} |
| {{end}}\ |
| {{end}}\ |
| {{end}}\ |
| |
| {{define "FormatUsage"}}\ |
| {{template "FormatCommand" .}}{{if .Commands}} <command> [<args> ...]{{end}} |
| {{if .Help}} |
| {{.Help|Wrap 0}}\ |
| {{end}}\ |
| |
| {{end}}\ |
| |
| {{if .Context.SelectedCommand}}\ |
| usage: {{.App.Name}} {{.Context.SelectedCommand}}{{template "FormatUsage" .Context.SelectedCommand}} |
| {{else}}\ |
| usage: {{.App.Name}}{{template "FormatUsage" .App}} |
| {{end}}\ |
| {{if .Context.Flags}}\ |
| Flags: |
| {{.Context.Flags|FlagsToTwoColumns|FormatTwoColumns}} |
| {{end}}\ |
| {{if .Context.Args}}\ |
| Args: |
| {{.Context.Args|ArgsToTwoColumns|FormatTwoColumns}} |
| {{end}}\ |
| {{if .Context.SelectedCommand}}\ |
| {{if len .Context.SelectedCommand.Commands}}\ |
| Subcommands: |
| {{template "FormatCommands" .Context.SelectedCommand}} |
| {{end}}\ |
| {{else if .App.Commands}}\ |
| Commands: |
| {{template "FormatCommands" .App}} |
| {{end}}\ |
| ` |
| |
| // Usage template where command's optional flags are listed separately |
| var SeparateOptionalFlagsUsageTemplate = `{{define "FormatCommand"}}\ |
| {{if .FlagSummary}} {{.FlagSummary}}{{end}}\ |
| {{range .Args}} {{if not .Required}}[{{end}}<{{.Name}}>{{if .Value|IsCumulative}}...{{end}}{{if not .Required}}]{{end}}{{end}}\ |
| {{end}}\ |
| |
| {{define "FormatCommands"}}\ |
| {{range .FlattenedCommands}}\ |
| {{if not .Hidden}}\ |
| {{.FullCommand}}{{if .Default}}*{{end}}{{template "FormatCommand" .}} |
| {{.Help|Wrap 4}} |
| {{end}}\ |
| {{end}}\ |
| {{end}}\ |
| |
| {{define "FormatUsage"}}\ |
| {{template "FormatCommand" .}}{{if .Commands}} <command> [<args> ...]{{end}} |
| {{if .Help}} |
| {{.Help|Wrap 0}}\ |
| {{end}}\ |
| |
| {{end}}\ |
| {{if .Context.SelectedCommand}}\ |
| usage: {{.App.Name}} {{.Context.SelectedCommand}}{{template "FormatUsage" .Context.SelectedCommand}} |
| {{else}}\ |
| usage: {{.App.Name}}{{template "FormatUsage" .App}} |
| {{end}}\ |
| |
| {{if .Context.Flags|RequiredFlags}}\ |
| Required flags: |
| {{.Context.Flags|RequiredFlags|FlagsToTwoColumns|FormatTwoColumns}} |
| {{end}}\ |
| {{if .Context.Flags|OptionalFlags}}\ |
| Optional flags: |
| {{.Context.Flags|OptionalFlags|FlagsToTwoColumns|FormatTwoColumns}} |
| {{end}}\ |
| {{if .Context.Args}}\ |
| Args: |
| {{.Context.Args|ArgsToTwoColumns|FormatTwoColumns}} |
| {{end}}\ |
| {{if .Context.SelectedCommand}}\ |
| Subcommands: |
| {{if .Context.SelectedCommand.Commands}}\ |
| {{template "FormatCommands" .Context.SelectedCommand}} |
| {{end}}\ |
| {{else if .App.Commands}}\ |
| Commands: |
| {{template "FormatCommands" .App}} |
| {{end}}\ |
| ` |
| |
| // Usage template with compactly formatted commands. |
| var CompactUsageTemplate = `{{define "FormatCommand"}}\ |
| {{if .FlagSummary}} {{.FlagSummary}}{{end}}\ |
| {{range .Args}} {{if not .Required}}[{{end}}<{{.Name}}>{{if .Value|IsCumulative}}...{{end}}{{if not .Required}}]{{end}}{{end}}\ |
| {{end}}\ |
| |
| {{define "FormatCommandList"}}\ |
| {{range .}}\ |
| {{if not .Hidden}}\ |
| {{.Depth|Indent}}{{.Name}}{{if .Default}}*{{end}}{{template "FormatCommand" .}} |
| {{end}}\ |
| {{template "FormatCommandList" .Commands}}\ |
| {{end}}\ |
| {{end}}\ |
| |
| {{define "FormatUsage"}}\ |
| {{template "FormatCommand" .}}{{if .Commands}} <command> [<args> ...]{{end}} |
| {{if .Help}} |
| {{.Help|Wrap 0}}\ |
| {{end}}\ |
| |
| {{end}}\ |
| |
| {{if .Context.SelectedCommand}}\ |
| usage: {{.App.Name}} {{.Context.SelectedCommand}}{{template "FormatUsage" .Context.SelectedCommand}} |
| {{else}}\ |
| usage: {{.App.Name}}{{template "FormatUsage" .App}} |
| {{end}}\ |
| {{if .Context.Flags}}\ |
| Flags: |
| {{.Context.Flags|FlagsToTwoColumns|FormatTwoColumns}} |
| {{end}}\ |
| {{if .Context.Args}}\ |
| Args: |
| {{.Context.Args|ArgsToTwoColumns|FormatTwoColumns}} |
| {{end}}\ |
| {{if .Context.SelectedCommand}}\ |
| {{if .Context.SelectedCommand.Commands}}\ |
| Commands: |
| {{.Context.SelectedCommand}} |
| {{template "FormatCommandList" .Context.SelectedCommand.Commands}} |
| {{end}}\ |
| {{else if .App.Commands}}\ |
| Commands: |
| {{template "FormatCommandList" .App.Commands}} |
| {{end}}\ |
| ` |
| |
| var ManPageTemplate = `{{define "FormatFlags"}}\ |
| {{range .Flags}}\ |
| {{if not .Hidden}}\ |
| .TP |
| \fB{{if .Short}}-{{.Short|Char}}, {{end}}--{{.Name}}{{if not .IsBoolFlag}}={{.FormatPlaceHolder}}{{end}}\\fR |
| {{.Help}} |
| {{end}}\ |
| {{end}}\ |
| {{end}}\ |
| |
| {{define "FormatCommand"}}\ |
| {{if .FlagSummary}} {{.FlagSummary}}{{end}}\ |
| {{range .Args}} {{if not .Required}}[{{end}}<{{.Name}}{{if .Default}}*{{end}}>{{if .Value|IsCumulative}}...{{end}}{{if not .Required}}]{{end}}{{end}}\ |
| {{end}}\ |
| |
| {{define "FormatCommands"}}\ |
| {{range .FlattenedCommands}}\ |
| {{if not .Hidden}}\ |
| .SS |
| \fB{{.FullCommand}}{{template "FormatCommand" .}}\\fR |
| .PP |
| {{.Help}} |
| {{template "FormatFlags" .}}\ |
| {{end}}\ |
| {{end}}\ |
| {{end}}\ |
| |
| {{define "FormatUsage"}}\ |
| {{template "FormatCommand" .}}{{if .Commands}} <command> [<args> ...]{{end}}\\fR |
| {{end}}\ |
| |
| .TH {{.App.Name}} 1 {{.App.Version}} "{{.App.Author}}" |
| .SH "NAME" |
| {{.App.Name}} |
| .SH "SYNOPSIS" |
| .TP |
| \fB{{.App.Name}}{{template "FormatUsage" .App}} |
| .SH "DESCRIPTION" |
| {{.App.Help}} |
| .SH "OPTIONS" |
| {{template "FormatFlags" .App}}\ |
| {{if .App.Commands}}\ |
| .SH "COMMANDS" |
| {{template "FormatCommands" .App}}\ |
| {{end}}\ |
| ` |
| |
| // Default usage template. |
| var LongHelpTemplate = `{{define "FormatCommand"}}\ |
| {{if .FlagSummary}} {{.FlagSummary}}{{end}}\ |
| {{range .Args}} {{if not .Required}}[{{end}}<{{.Name}}>{{if .Value|IsCumulative}}...{{end}}{{if not .Required}}]{{end}}{{end}}\ |
| {{end}}\ |
| |
| {{define "FormatCommands"}}\ |
| {{range .FlattenedCommands}}\ |
| {{if not .Hidden}}\ |
| {{.FullCommand}}{{template "FormatCommand" .}} |
| {{.Help|Wrap 4}} |
| {{with .Flags|FlagsToTwoColumns}}{{FormatTwoColumnsWithIndent . 4 2}}{{end}} |
| {{end}}\ |
| {{end}}\ |
| {{end}}\ |
| |
| {{define "FormatUsage"}}\ |
| {{template "FormatCommand" .}}{{if .Commands}} <command> [<args> ...]{{end}} |
| {{if .Help}} |
| {{.Help|Wrap 0}}\ |
| {{end}}\ |
| |
| {{end}}\ |
| |
| usage: {{.App.Name}}{{template "FormatUsage" .App}} |
| {{if .Context.Flags}}\ |
| Flags: |
| {{.Context.Flags|FlagsToTwoColumns|FormatTwoColumns}} |
| {{end}}\ |
| {{if .Context.Args}}\ |
| Args: |
| {{.Context.Args|ArgsToTwoColumns|FormatTwoColumns}} |
| {{end}}\ |
| {{if .App.Commands}}\ |
| Commands: |
| {{template "FormatCommands" .App}} |
| {{end}}\ |
| ` |
| |
| var BashCompletionTemplate = ` |
| _{{.App.Name}}_bash_autocomplete() { |
| local cur prev opts base |
| COMPREPLY=() |
| cur="${COMP_WORDS[COMP_CWORD]}" |
| opts=$( ${COMP_WORDS[0]} --completion-bash ${COMP_WORDS[@]:1:$COMP_CWORD} ) |
| COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) |
| return 0 |
| } |
| complete -F _{{.App.Name}}_bash_autocomplete {{.App.Name}} |
| |
| ` |
| |
| var ZshCompletionTemplate = ` |
| #compdef {{.App.Name}} |
| autoload -U compinit && compinit |
| autoload -U bashcompinit && bashcompinit |
| |
| _{{.App.Name}}_bash_autocomplete() { |
| local cur prev opts base |
| COMPREPLY=() |
| cur="${COMP_WORDS[COMP_CWORD]}" |
| opts=$( ${COMP_WORDS[0]} --completion-bash ${COMP_WORDS[@]:1:$COMP_CWORD} ) |
| COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) |
| return 0 |
| } |
| complete -F _{{.App.Name}}_bash_autocomplete {{.App.Name}} |
| ` |