diff --git a/app.go b/app.go index 6422345..8a6c88e 100644 --- a/app.go +++ b/app.go @@ -40,10 +40,8 @@ type App struct { CommandNotFound func(context *Context, command string) // Compilation date Compiled time.Time - // Author - Author string - // Author e-mail - Email string + // Authors + Authors []Author // Writer writer to write output to Writer io.Writer } @@ -67,8 +65,7 @@ func NewApp() *App { BashComplete: DefaultAppComplete, Action: helpCommand.Action, Compiled: compileTime(), - Author: "Author", - Email: "unknown@email", + Authors: []Author{{"Jim", "jim@corporate.com"}, {"Hank", "hank@indiepalace.com"}}, Writer: os.Stdout, } } @@ -273,3 +270,19 @@ func (a *App) appendFlag(flag Flag) { a.Flags = append(a.Flags, flag) } } + +// Author represents someone who has contributed to a cli project. +type Author struct { + Name string // The Authors name + Email string // The Authors email +} + +// String makes Author comply to the Stringer interface, to allow an easy print in the templating process +func (a Author) String() string { + e := "" + if a.Email != "" { + e = " <" + a.Email + "> " + } + + return fmt.Sprintf("%v %v", a.Name, e) +} diff --git a/app_test.go b/app_test.go index 2cbb0e3..be9b0d4 100644 --- a/app_test.go +++ b/app_test.go @@ -6,7 +6,7 @@ import ( "os" "testing" - "github.com/codegangsta/cli" + "github.com/paked/cli" ) func ExampleApp() { @@ -21,6 +21,8 @@ func ExampleApp() { app.Action = func(c *cli.Context) { fmt.Printf("Hello %v\n", c.String("name")) } + app.Authors = []cli.Author{{"Oliver Allen", "oliver@toyshop.com"}} + app.Run(os.Args) // Output: // Hello Jeremy diff --git a/help.go b/help.go index bfb2788..cc4548c 100644 --- a/help.go +++ b/help.go @@ -12,11 +12,9 @@ USAGE: {{.Name}} {{if .Flags}}[global options] {{end}}command{{if .Flags}} [command options]{{end}} [arguments...] VERSION: - {{.Version}}{{if or .Author .Email}} + {{.Version}} -AUTHOR:{{if .Author}} - {{.Author}}{{if .Email}} - <{{.Email}}>{{end}}{{else}} - {{.Email}}{{end}}{{end}} +AUTHOR(S): {{range .Authors}} {{ . }}{{end}} COMMANDS: {{range .Commands}}{{.Name}}{{with .ShortName}}, {{.}}{{end}}{{ "\t" }}{{.Usage}}