diff --git a/.gitignore b/.gitignore index 7a7e2d9..501b8e8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ *.coverprofile +*.orig node_modules/ -vendor \ No newline at end of file +vendor diff --git a/README.md b/README.md index ffb9e2e..3a944f5 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ Usage documentation exists for each major version. Don't know what version you'r **Warning**: `v2` is in a beta state. ``` -$ go get github.com/urfave/cli.v2 +$ go get github.com/urfave/cli/v2 ``` ```go diff --git a/build.go b/build.go index 398a00e..325552c 100644 --- a/build.go +++ b/build.go @@ -137,6 +137,7 @@ func GfmrunActionFunc(c *cli.Context) error { if err != nil { return err } + defer file.Close() var counter int scanner := bufio.NewScanner(file) diff --git a/context.go b/context.go index 535c388..13fb523 100644 --- a/context.go +++ b/context.go @@ -114,8 +114,8 @@ func (c *Context) Lineage() []*Context { return lineage } -// value returns the value of the flag corresponding to `name` -func (c *Context) value(name string) interface{} { +// Value returns the value of the flag corresponding to `name` +func (c *Context) Value(name string) interface{} { return c.flagSet.Lookup(name).Value.(flag.Getter).Get() } diff --git a/context_test.go b/context_test.go index 081a8c4..3cefcca 100644 --- a/context_test.go +++ b/context_test.go @@ -3,8 +3,8 @@ package cli import ( "context" "flag" - "sort" "os" + "sort" "strings" "testing" "time" @@ -328,7 +328,7 @@ func TestContextPropagation(t *testing.T) { parent := NewContext(nil, nil, nil) parent.Context = context.WithValue(context.Background(), "key", "val") ctx := NewContext(nil, nil, parent) - val := ctx.Value("key") + val := ctx.Context.Value("key") if val == nil { t.Fatal("expected a parent context to be inherited but got nil") } diff --git a/docs_test.go b/docs_test.go index e685f90..e52cf8b 100644 --- a/docs_test.go +++ b/docs_test.go @@ -64,7 +64,10 @@ func testApp() *App { }} app.UsageText = "app [first_arg] [second_arg]" app.Usage = "Some app" - app.Authors = []*Author{{Name: "Harrison", Email: "harrison@lolwut.com"}} + app.Authors = []*Author{ + {Name: "Harrison", Email: "harrison@lolwut.com"}, + {Name: "Oliver Allen", Email: "oliver@toyshop.com"}, + } return app } @@ -112,6 +115,19 @@ func TestToMarkdownNoCommands(t *testing.T) { expectFileContent(t, "testdata/expected-doc-no-commands.md", res) } +func TestToMarkdownNoAuthors(t *testing.T) { + // Given + app := testApp() + app.Authors = []*Author{} + + // When + res, err := app.ToMarkdown() + + // Then + expect(t, err, nil) + expectFileContent(t, "testdata/expected-doc-no-authors.md", res) +} + func TestToMan(t *testing.T) { // Given app := testApp() diff --git a/flag_test.go b/flag_test.go index 5d0ecae..769f7bf 100644 --- a/flag_test.go +++ b/flag_test.go @@ -121,8 +121,8 @@ func TestFlagsFromEnv(t *testing.T) { a := App{ Flags: []Flag{test.flag}, Action: func(ctx *Context) error { - if !reflect.DeepEqual(ctx.value(test.flag.Names()[0]), test.output) { - t.Errorf("ex:%01d expected %q to be parsed as %#v, instead was %#v", i, test.input, test.output, ctx.value(test.flag.Names()[0])) + if !reflect.DeepEqual(ctx.Value(test.flag.Names()[0]), test.output) { + t.Errorf("ex:%01d expected %q to be parsed as %#v, instead was %#v", i, test.input, test.output, ctx.Value(test.flag.Names()[0])) } return nil }, diff --git a/template.go b/template.go index 78e182f..1cc4bd6 100644 --- a/template.go +++ b/template.go @@ -71,10 +71,9 @@ OPTIONS: {{end}}{{end}} ` -var MarkdownDocTemplate = `% {{ .App.Name }}(8) {{ .App.Description }} -{{ range $Author := .App.Authors}} -% {{ $Author.Name }} -{{- end}} +var MarkdownDocTemplate = `% {{ .App.Name }}(8){{ if .App.Description }} {{ .App.Description }}{{ end }} +{{ range $a := .App.Authors }} +% {{ $a }}{{ end }} # NAME diff --git a/testdata/expected-doc-full.man b/testdata/expected-doc-full.man index 5190698..f28f4c7 100644 --- a/testdata/expected-doc-full.man +++ b/testdata/expected-doc-full.man @@ -1,7 +1,10 @@ .nh -.TH greet(8) +.TH greet(8) -.SH Harrison +.SH Harrison harrison@lolwut.com +\[la]mailto:harrison@lolwut.com\[ra] +Oliver Allen oliver@toyshop.com +\[la]mailto:oliver@toyshop.com\[ra] .SH NAME .PP diff --git a/testdata/expected-doc-full.md b/testdata/expected-doc-full.md index 23d7c23..5bfb01e 100644 --- a/testdata/expected-doc-full.md +++ b/testdata/expected-doc-full.md @@ -1,6 +1,7 @@ -% greet(8) +% greet(8) -% Harrison +% Harrison +% Oliver Allen # NAME diff --git a/testdata/expected-doc-no-authors.md b/testdata/expected-doc-no-authors.md new file mode 100644 index 0000000..a49481a --- /dev/null +++ b/testdata/expected-doc-no-authors.md @@ -0,0 +1,61 @@ +% greet(8) + + +# NAME + +greet - Some app + +# SYNOPSIS + +greet + +``` +[--another-flag|-b] +[--flag|--fl|-f]=[value] +[--socket|-s]=[value] +``` + +# DESCRIPTION + +app [first_arg] [second_arg] + +**Usage**: + +``` +greet [GLOBAL OPTIONS] command [COMMAND OPTIONS] [ARGUMENTS...] +``` + +# GLOBAL OPTIONS + +**--another-flag, -b**: another usage text + +**--flag, --fl, -f**="": + +**--socket, -s**="": some 'usage' text (default: value) + + +# COMMANDS + +## config, c + +another usage test + +**--another-flag, -b**: another usage text + +**--flag, --fl, -f**="": + +### sub-config, s, ss + +another usage test + +**--sub-command-flag, -s**: some usage text + +**--sub-flag, --sub-fl, -s**="": + +## info, i, in + +retrieve generic information + +## some-command + + diff --git a/testdata/expected-doc-no-commands.md b/testdata/expected-doc-no-commands.md index 18d8e35..f82f642 100644 --- a/testdata/expected-doc-no-commands.md +++ b/testdata/expected-doc-no-commands.md @@ -1,6 +1,7 @@ -% greet(8) +% greet(8) -% Harrison +% Harrison +% Oliver Allen # NAME diff --git a/testdata/expected-doc-no-flags.md b/testdata/expected-doc-no-flags.md index 8ce60fd..c32a9fc 100644 --- a/testdata/expected-doc-no-flags.md +++ b/testdata/expected-doc-no-flags.md @@ -1,6 +1,7 @@ -% greet(8) +% greet(8) -% Harrison +% Harrison +% Oliver Allen # NAME