Merge pull request #543 from wking/app-description
app: Add App.Description
This commit is contained in:
commit
f614c177b7
6
app.go
6
app.go
@ -42,6 +42,8 @@ type App struct {
|
|||||||
ArgsUsage string
|
ArgsUsage string
|
||||||
// Version of the program
|
// Version of the program
|
||||||
Version string
|
Version string
|
||||||
|
// Description of the program
|
||||||
|
Description string
|
||||||
// List of commands to execute
|
// List of commands to execute
|
||||||
Commands []Command
|
Commands []Command
|
||||||
// List of flags to parse
|
// List of flags to parse
|
||||||
@ -456,10 +458,10 @@ type Author struct {
|
|||||||
func (a Author) String() string {
|
func (a Author) String() string {
|
||||||
e := ""
|
e := ""
|
||||||
if a.Email != "" {
|
if a.Email != "" {
|
||||||
e = "<" + a.Email + "> "
|
e = " <" + a.Email + ">"
|
||||||
}
|
}
|
||||||
|
|
||||||
return fmt.Sprintf("%v %v", a.Name, e)
|
return fmt.Sprintf("%v%v", a.Name, e)
|
||||||
}
|
}
|
||||||
|
|
||||||
// HandleAction uses ✧✧✧reflection✧✧✧ to figure out if the given Action is an
|
// HandleAction uses ✧✧✧reflection✧✧✧ to figure out if the given Action is an
|
||||||
|
57
app_test.go
57
app_test.go
@ -90,7 +90,62 @@ func ExampleApp_Run_subcommand() {
|
|||||||
// Hello, Jeremy
|
// Hello, Jeremy
|
||||||
}
|
}
|
||||||
|
|
||||||
func ExampleApp_Run_help() {
|
func ExampleApp_Run_appHelp() {
|
||||||
|
// set args for examples sake
|
||||||
|
os.Args = []string{"greet", "help"}
|
||||||
|
|
||||||
|
app := NewApp()
|
||||||
|
app.Name = "greet"
|
||||||
|
app.Version = "0.1.0"
|
||||||
|
app.Description = "This is how we describe greet the app"
|
||||||
|
app.Authors = []Author{
|
||||||
|
{Name: "Harrison", Email: "harrison@lolwut.com"},
|
||||||
|
{Name: "Oliver Allen", Email: "oliver@toyshop.com"},
|
||||||
|
}
|
||||||
|
app.Flags = []Flag{
|
||||||
|
StringFlag{Name: "name", Value: "bob", Usage: "a name to say"},
|
||||||
|
}
|
||||||
|
app.Commands = []Command{
|
||||||
|
{
|
||||||
|
Name: "describeit",
|
||||||
|
Aliases: []string{"d"},
|
||||||
|
Usage: "use it to see a description",
|
||||||
|
Description: "This is how we describe describeit the function",
|
||||||
|
Action: func(c *Context) error {
|
||||||
|
fmt.Printf("i like to describe things")
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
app.Run(os.Args)
|
||||||
|
// Output:
|
||||||
|
// NAME:
|
||||||
|
// greet - A new cli application
|
||||||
|
//
|
||||||
|
// USAGE:
|
||||||
|
// greet [global options] command [command options] [arguments...]
|
||||||
|
//
|
||||||
|
// VERSION:
|
||||||
|
// 0.1.0
|
||||||
|
//
|
||||||
|
// DESCRIPTION:
|
||||||
|
// This is how we describe greet the app
|
||||||
|
//
|
||||||
|
// AUTHORS:
|
||||||
|
// Harrison <harrison@lolwut.com>
|
||||||
|
// Oliver Allen <oliver@toyshop.com>
|
||||||
|
//
|
||||||
|
// COMMANDS:
|
||||||
|
// describeit, d use it to see a description
|
||||||
|
// help, h Shows a list of commands or help for one command
|
||||||
|
//
|
||||||
|
// GLOBAL OPTIONS:
|
||||||
|
// --name value a name to say (default: "bob")
|
||||||
|
// --help, -h show help
|
||||||
|
// --version, -v print the version
|
||||||
|
}
|
||||||
|
|
||||||
|
func ExampleApp_Run_commandHelp() {
|
||||||
// set args for examples sake
|
// set args for examples sake
|
||||||
os.Args = []string{"greet", "h", "describeit"}
|
os.Args = []string{"greet", "h", "describeit"}
|
||||||
|
|
||||||
|
30
help.go
30
help.go
@ -16,24 +16,28 @@ var AppHelpTemplate = `NAME:
|
|||||||
{{.Name}} - {{.Usage}}
|
{{.Name}} - {{.Usage}}
|
||||||
|
|
||||||
USAGE:
|
USAGE:
|
||||||
{{if .UsageText}}{{.UsageText}}{{else}}{{.HelpName}} {{if .VisibleFlags}}[global options]{{end}}{{if .Commands}} command [command options]{{end}} {{if .ArgsUsage}}{{.ArgsUsage}}{{else}}[arguments...]{{end}}{{end}}
|
{{if .UsageText}}{{.UsageText}}{{else}}{{.HelpName}} {{if .VisibleFlags}}[global options]{{end}}{{if .Commands}} command [command options]{{end}} {{if .ArgsUsage}}{{.ArgsUsage}}{{else}}[arguments...]{{end}}{{end}}{{if .Version}}{{if not .HideVersion}}
|
||||||
{{if .Version}}{{if not .HideVersion}}
|
|
||||||
VERSION:
|
VERSION:
|
||||||
{{.Version}}
|
{{.Version}}{{end}}{{end}}{{if .Description}}
|
||||||
{{end}}{{end}}{{if len .Authors}}
|
|
||||||
AUTHOR(S):
|
DESCRIPTION:
|
||||||
{{range .Authors}}{{.}}{{end}}
|
{{.Description}}{{end}}{{if len .Authors}}
|
||||||
{{end}}{{if .VisibleCommands}}
|
|
||||||
|
AUTHOR{{with $length := len .Authors}}{{if ne 1 $length}}S{{end}}{{end}}:
|
||||||
|
{{range $index, $author := .Authors}}{{if $index}}
|
||||||
|
{{end}}{{$author}}{{end}}{{end}}{{if .VisibleCommands}}
|
||||||
|
|
||||||
COMMANDS:{{range .VisibleCategories}}{{if .Name}}
|
COMMANDS:{{range .VisibleCategories}}{{if .Name}}
|
||||||
{{.Name}}:{{end}}{{range .VisibleCommands}}
|
{{.Name}}:{{end}}{{range .VisibleCommands}}
|
||||||
{{join .Names ", "}}{{"\t"}}{{.Usage}}{{end}}
|
{{join .Names ", "}}{{"\t"}}{{.Usage}}{{end}}{{end}}{{end}}{{if .VisibleFlags}}
|
||||||
{{end}}{{end}}{{if .VisibleFlags}}
|
|
||||||
GLOBAL OPTIONS:
|
GLOBAL OPTIONS:
|
||||||
{{range .VisibleFlags}}{{.}}
|
{{range $index, $option := .VisibleFlags}}{{if $index}}
|
||||||
{{end}}{{end}}{{if .Copyright}}
|
{{end}}{{$option}}{{end}}{{end}}{{if .Copyright}}
|
||||||
|
|
||||||
COPYRIGHT:
|
COPYRIGHT:
|
||||||
{{.Copyright}}
|
{{.Copyright}}{{end}}
|
||||||
{{end}}
|
|
||||||
`
|
`
|
||||||
|
|
||||||
// CommandHelpTemplate is the text template for the command help topic.
|
// CommandHelpTemplate is the text template for the command help topic.
|
||||||
|
Loading…
Reference in New Issue
Block a user