Skip to content

Commit

Permalink
Merge pull request #1630 from urfave/author-addr
Browse files Browse the repository at this point in the history
Allow `any` instead of custom `*Author` type
  • Loading branch information
meatballhat authored Jan 2, 2023
2 parents 8c0fb2d + cfd0e74 commit 97854d2
Show file tree
Hide file tree
Showing 6 changed files with 18 additions and 52 deletions.
20 changes: 2 additions & 18 deletions app.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,8 @@ type App struct {
OnUsageError OnUsageErrorFunc
// Execute this function when an invalid flag is accessed from the context
InvalidFlagAccessHandler InvalidFlagAccessFunc
// List of all authors who contributed
Authors []*Author
// List of all authors who contributed (string or fmt.Stringer)
Authors []any // TODO: ~string | fmt.Stringer when interface unions are available
// Copyright of the binary if any
Copyright string
// Reader reader to write input to (useful for tests)
Expand Down Expand Up @@ -420,22 +420,6 @@ func runFlagActions(c *Context, fs []Flag) error {
return nil
}

// 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)
}

func checkStringSliceIncludes(want string, sSlice []string) bool {
found := false
for _, s := range sSlice {
Expand Down
13 changes: 7 additions & 6 deletions app_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"flag"
"fmt"
"io"
"net/mail"
"os"
"reflect"
"strconv"
Expand Down Expand Up @@ -45,7 +46,7 @@ func ExampleApp_Run() {
return nil
},
UsageText: "app [first_arg] [second_arg]",
Authors: []*Author{{Name: "Oliver Allen", Email: "oliver@toyshop.example.com"}},
Authors: []any{&mail.Address{Name: "Oliver Allen", Address: "oliver@toyshop.example.com"}, "gruffalo@soup-world.example.org"},
}

app.Run(os.Args)
Expand Down Expand Up @@ -100,9 +101,9 @@ func ExampleApp_Run_appHelp() {
Name: "greet",
Version: "0.1.0",
Description: "This is how we describe greet the app",
Authors: []*Author{
{Name: "Harrison", Email: "harrison@lolwut.com"},
{Name: "Oliver Allen", Email: "oliver@toyshop.com"},
Authors: []any{
&mail.Address{Name: "Harrison", Address: "harrison@lolwut.example.com"},
"Oliver Allen <oliver@toyshop.example.com>",
},
Flags: []Flag{
&StringFlag{Name: "name", Value: "bob", Usage: "a name to say"},
Expand Down Expand Up @@ -135,8 +136,8 @@ func ExampleApp_Run_appHelp() {
// This is how we describe greet the app
//
// AUTHORS:
// Harrison <harrison@lolwut.com>
// Oliver Allen <oliver@toyshop.com>
// "Harrison" <harrison@lolwut.example.com>
// Oliver Allen <oliver@toyshop.example.com>
//
// COMMANDS:
// describeit, d use it to see a description
Expand Down
2 changes: 1 addition & 1 deletion docs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ func TestToMarkdownNoCommands(t *testing.T) {
func TestToMarkdownNoAuthors(t *testing.T) {
// Given
app := testApp()
app.Authors = []*Author{}
app.Authors = []any{}

// When
res, err := app.ToMarkdown()
Expand Down
7 changes: 4 additions & 3 deletions fish_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package cli

import (
"bytes"
"net/mail"
"os"
"testing"
)
Expand Down Expand Up @@ -127,9 +128,9 @@ Should be a part of the same code block
app.UsageText = "app [first_arg] [second_arg]"
app.Description = `Description of the application.`
app.Usage = "Some app"
app.Authors = []*Author{
{Name: "Harrison", Email: "harrison@lolwut.com"},
{Name: "Oliver Allen", Email: "oliver@toyshop.com"},
app.Authors = []any{
"Harrison <harrison@lolwut.example.com>",
&mail.Address{Name: "Oliver Allen", Address: "oliver@toyshop.com"},
}
return app
}
Expand Down
14 changes: 2 additions & 12 deletions godoc-current.txt
Original file line number Diff line number Diff line change
Expand Up @@ -293,8 +293,8 @@ type App struct {
OnUsageError OnUsageErrorFunc
// Execute this function when an invalid flag is accessed from the context
InvalidFlagAccessHandler InvalidFlagAccessFunc
// List of all authors who contributed
Authors []*Author
// List of all authors who contributed (string or fmt.Stringer)
Authors []any // TODO: ~string | fmt.Stringer when interface unions are available
// Copyright of the binary if any
Copyright string
// Reader reader to write input to (useful for tests)
Expand Down Expand Up @@ -399,16 +399,6 @@ type Args interface {
Slice() []string
}

type Author struct {
Name string // The Authors name
Email string // The Authors email
}
Author represents someone who has contributed to a cli project.

func (a *Author) String() string
String makes Author comply to the Stringer interface, to allow an easy print
in the templating process

type BeforeFunc func(*Context) error
BeforeFunc is an action to execute before any subcommands are run, but after
the context is ready if a non-nil error is returned, no subcommands are run
Expand Down
14 changes: 2 additions & 12 deletions testdata/godoc-v3.x.txt
Original file line number Diff line number Diff line change
Expand Up @@ -293,8 +293,8 @@ type App struct {
OnUsageError OnUsageErrorFunc
// Execute this function when an invalid flag is accessed from the context
InvalidFlagAccessHandler InvalidFlagAccessFunc
// List of all authors who contributed
Authors []*Author
// List of all authors who contributed (string or fmt.Stringer)
Authors []any // TODO: ~string | fmt.Stringer when interface unions are available
// Copyright of the binary if any
Copyright string
// Reader reader to write input to (useful for tests)
Expand Down Expand Up @@ -399,16 +399,6 @@ type Args interface {
Slice() []string
}

type Author struct {
Name string // The Authors name
Email string // The Authors email
}
Author represents someone who has contributed to a cli project.

func (a *Author) String() string
String makes Author comply to the Stringer interface, to allow an easy print
in the templating process

type BeforeFunc func(*Context) error
BeforeFunc is an action to execute before any subcommands are run, but after
the context is ready if a non-nil error is returned, no subcommands are run
Expand Down

0 comments on commit 97854d2

Please sign in to comment.