175 lines
4.4 KiB
Go
175 lines
4.4 KiB
Go
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}}\
|
|
{{.FullCommand}}{{template "FormatCommand" .}}
|
|
{{.Help|Wrap 4}}
|
|
{{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}}\
|
|
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 .}}\
|
|
{{.Depth|Indent}}{{.Name}}{{template "FormatCommand" .}}
|
|
{{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 .Value|IsCumulative}}...{{end}}{{if not .Required}}]{{end}}{{end}}\
|
|
{{end}}\
|
|
|
|
{{define "FormatCommands"}}\
|
|
{{range .FlattenedCommands}}\
|
|
.SS
|
|
\fB{{.FullCommand}}{{template "FormatCommand" .}}\\fR
|
|
.PP
|
|
{{.Help}}
|
|
{{template "FormatFlags" .}}\
|
|
{{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}}\
|
|
{{.FullCommand}}{{template "FormatCommand" .}}
|
|
{{.Help|Wrap 4}}
|
|
{{with .Flags|FlagsToTwoColumns}}{{FormatTwoColumnsWithIndent . 4 2}}{{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}}\
|
|
`
|