Skip to content

Commit 9809553

Browse files
authored
Merge pull request #30 from choria-io/29
(#29) calculate column width dynamically for longer arguments
2 parents 3dc0cb4 + 17f4480 commit 9809553

36 files changed

+286
-7181
lines changed

Diff for: .github/workflows/test.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ jobs:
55
test:
66
strategy:
77
matrix:
8-
go: [1.17, 1.18]
8+
go: ["1.19", "1.20"]
99

1010
runs-on: ubuntu-latest
1111
steps:

Diff for: app_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55
"embed"
66
"errors"
77
"fmt"
8-
"io/ioutil"
8+
"io"
99
"os"
1010
"sort"
1111
"strings"
@@ -81,7 +81,7 @@ func TestArgsRequiredAfterNonRequiredErrors(t *testing.T) {
8181
}
8282

8383
func TestArgsMultipleRequiredThenNonRequired(t *testing.T) {
84-
c := newTestApp().Writer(ioutil.Discard)
84+
c := newTestApp().Writer(io.Discard)
8585
cmd := c.Command("cmd", "")
8686
cmd.Arg("a", "a").Required().String()
8787
cmd.Arg("b", "b").Required().String()

Diff for: args_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package fisk
22

33
import (
4-
"io/ioutil"
4+
"io"
55
"os"
66
"testing"
77

@@ -27,7 +27,7 @@ func TestArgRemainderErrorsWhenNotLast(t *testing.T) {
2727
func TestArgMultipleRequired(t *testing.T) {
2828
terminated := false
2929
app := New("test", "")
30-
app.Version("0.0.0").Writer(ioutil.Discard)
30+
app.Version("0.0.0").Writer(io.Discard)
3131
app.Arg("a", "").Required().String()
3232
app.Arg("b", "").Required().String()
3333
app.Terminate(func(int) { terminated = true })

Diff for: cmd/genvalues/main.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import (
55
"os"
66
"os/exec"
77
"strings"
8+
"text/template"
89

9-
"github.com/choria-io/fisk/template"
1010
"golang.org/x/text/cases"
1111
"golang.org/x/text/language"
1212
)
@@ -39,9 +39,9 @@ func (f *{{.|ValueName}}) String() string { return {{.|Format}} }
3939
4040
{{if .Help}}
4141
// {{.Help}}
42-
{{else}}\
42+
{{else-}}
4343
// {{.|Name}} parses the next command-line value as {{.Type}}.
44-
{{end}}\
44+
{{end-}}
4545
func (p *parserMixin) {{.|Name}}() (target *{{.Type}}) {
4646
target = new({{.Type}})
4747
p.{{.|Name}}Var(target)

Diff for: doc.go

+54-54
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,68 @@
11
// Package fisk provides command line interfaces like this:
22
//
3-
// $ chat
4-
// usage: chat [<flags>] <command> [<flags>] [<args> ...]
3+
// $ chat
4+
// usage: chat [<flags>] <command> [<flags>] [<args> ...]
55
//
6-
// Flags:
7-
// --debug enable debug mode
8-
// --help Show help.
9-
// --server=127.0.0.1 server address
6+
// Flags:
7+
// --debug enable debug mode
8+
// --help Show help.
9+
// --server=127.0.0.1 server address
1010
//
11-
// Commands:
12-
// help <command>
13-
// Show help for a command.
11+
// Commands:
12+
// help <command>
13+
// Show help for a command.
1414
//
15-
// post [<flags>] <channel>
16-
// Post a message to a channel.
15+
// post [<flags>] <channel>
16+
// Post a message to a channel.
1717
//
18-
// register <nick> <name>
19-
// Register a new user.
18+
// register <nick> <name>
19+
// Register a new user.
2020
//
21-
// $ chat help post
22-
// usage: chat [<flags>] post [<flags>] <channel> [<text>]
21+
// $ chat help post
22+
// usage: chat [<flags>] post [<flags>] <channel> [<text>]
2323
//
24-
// Post a message to a channel.
24+
// Post a message to a channel.
2525
//
26-
// Flags:
27-
// --image=IMAGE image to post
26+
// Flags:
27+
// --image=IMAGE image to post
2828
//
29-
// Args:
30-
// <channel> channel to post to
31-
// [<text>] text to post
32-
// $ chat post --image=~/Downloads/owls.jpg pics
29+
// Args:
30+
// <channel> channel to post to
31+
// [<text>] text to post
32+
// $ chat post --image=~/Downloads/owls.jpg pics
3333
//
3434
// From code like this:
3535
//
36-
// package main
37-
//
38-
// import "github.com/choria-io/fisk"
39-
//
40-
// var (
41-
// debug = fisk.Flag("debug", "enable debug mode").Default("false").Bool()
42-
// serverIP = fisk.Flag("server", "server address").Default("127.0.0.1").IP()
43-
//
44-
// register = fisk.Command("register", "Register a new user.")
45-
// registerNick = register.Arg("nick", "nickname for user").Required().String()
46-
// registerName = register.Arg("name", "name of user").Required().String()
47-
//
48-
// post = fisk.Command("post", "Post a message to a channel.")
49-
// postImage = post.Flag("image", "image to post").ExistingFile()
50-
// postChannel = post.Arg("channel", "channel to post to").Required().String()
51-
// postText = post.Arg("text", "text to post").String()
52-
// )
53-
//
54-
// func main() {
55-
// switch fisk.Parse() {
56-
// // Register user
57-
// case "register":
58-
// println(*registerNick)
59-
//
60-
// // Post message
61-
// case "post":
62-
// if *postImage != nil {
63-
// }
64-
// if *postText != "" {
65-
// }
66-
// }
67-
// }
36+
// package main
37+
//
38+
// import "github.com/choria-io/fisk"
39+
//
40+
// var (
41+
// debug = fisk.Flag("debug", "enable debug mode").Default("false").Bool()
42+
// serverIP = fisk.Flag("server", "server address").Default("127.0.0.1").IP()
43+
//
44+
// register = fisk.Command("register", "Register a new user.")
45+
// registerNick = register.Arg("nick", "nickname for user").Required().String()
46+
// registerName = register.Arg("name", "name of user").Required().String()
47+
//
48+
// post = fisk.Command("post", "Post a message to a channel.")
49+
// postImage = post.Flag("image", "image to post").ExistingFile()
50+
// postChannel = post.Arg("channel", "channel to post to").Required().String()
51+
// postText = post.Arg("text", "text to post").String()
52+
// )
53+
//
54+
// func main() {
55+
// switch fisk.Parse() {
56+
// // Register user
57+
// case "register":
58+
// println(*registerNick)
59+
//
60+
// // Post message
61+
// case "post":
62+
// if *postImage != nil {
63+
// }
64+
// if *postText != "" {
65+
// }
66+
// }
67+
// }
6868
package fisk

Diff for: flags_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package fisk
22

33
import (
44
"bytes"
5-
"io/ioutil"
5+
"io"
66
"os"
77
"testing"
88

@@ -58,7 +58,7 @@ func TestInvalidFlagDefaultCanBeOverridden(t *testing.T) {
5858

5959
func TestRequiredFlag(t *testing.T) {
6060
app := newTestApp()
61-
app.Version("0.0.0").Writer(ioutil.Discard)
61+
app.Version("0.0.0").Writer(io.Discard)
6262
exits := 0
6363
app.Terminate(func(int) { exits++ })
6464
app.Flag("a", "").Required().Bool()

Diff for: go.mod

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
module github.com/choria-io/fisk
22

3-
go 1.17
3+
go 1.19
44

55
require (
66
github.com/stretchr/testify v1.8.1
7-
golang.org/x/text v0.5.0
7+
golang.org/x/text v0.6.0
88
)
99

1010
require (

Diff for: go.sum

+2-25
Original file line numberDiff line numberDiff line change
@@ -10,31 +10,8 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
1010
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
1111
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
1212
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
13-
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
14-
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
15-
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
16-
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
17-
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
18-
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
19-
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
20-
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
21-
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
22-
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
23-
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
24-
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
25-
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
26-
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
27-
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
28-
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
29-
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
30-
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
31-
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
32-
golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM=
33-
golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
34-
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
35-
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
36-
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
37-
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
13+
golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k=
14+
golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
3815
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
3916
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
4017
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

Diff for: parser_test.go

+5-6
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
package fisk
22

33
import (
4-
"io/ioutil"
54
"os"
65
"testing"
76

87
"github.com/stretchr/testify/assert"
98
)
109

1110
func TestParserExpandFromFile(t *testing.T) {
12-
f, err := ioutil.TempFile("", "")
11+
f, err := os.CreateTemp("", "")
1312
assert.NoError(t, err)
1413
defer os.Remove(f.Name())
1514
f.WriteString("hello\nworld\n")
@@ -26,7 +25,7 @@ func TestParserExpandFromFile(t *testing.T) {
2625
}
2726

2827
func TestParserExpandFromFileLeadingArg(t *testing.T) {
29-
f, err := ioutil.TempFile("", "")
28+
f, err := os.CreateTemp("", "")
3029
assert.NoError(t, err)
3130
defer os.Remove(f.Name())
3231
f.WriteString("hello\nworld\n")
@@ -45,7 +44,7 @@ func TestParserExpandFromFileLeadingArg(t *testing.T) {
4544
}
4645

4746
func TestParserExpandFromFileTrailingArg(t *testing.T) {
48-
f, err := ioutil.TempFile("", "")
47+
f, err := os.CreateTemp("", "")
4948
assert.NoError(t, err)
5049
defer os.Remove(f.Name())
5150
f.WriteString("hello\nworld\n")
@@ -64,7 +63,7 @@ func TestParserExpandFromFileTrailingArg(t *testing.T) {
6463
}
6564

6665
func TestParserExpandFromFileMultipleSurroundingArgs(t *testing.T) {
67-
f, err := ioutil.TempFile("", "")
66+
f, err := os.CreateTemp("", "")
6867
assert.NoError(t, err)
6968
defer os.Remove(f.Name())
7069
f.WriteString("hello\nworld\n")
@@ -85,7 +84,7 @@ func TestParserExpandFromFileMultipleSurroundingArgs(t *testing.T) {
8584
}
8685

8786
func TestParserExpandFromFileMultipleFlags(t *testing.T) {
88-
f, err := ioutil.TempFile("", "")
87+
f, err := os.CreateTemp("", "")
8988
assert.NoError(t, err)
9089
defer os.Remove(f.Name())
9190
f.WriteString("--flag1=f1\n--flag2=f2\n")

Diff for: parsers_test.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package fisk
22

33
import (
4-
"io/ioutil"
54
"net"
65
"net/url"
76
"os"
@@ -52,7 +51,7 @@ func TestParseURL(t *testing.T) {
5251
}
5352

5453
func TestParseExistingFile(t *testing.T) {
55-
f, err := ioutil.TempFile("", "")
54+
f, err := os.CreateTemp("", "")
5655
if err != nil {
5756
t.Fatal(err)
5857
}

Diff for: template/LICENSE

-27
This file was deleted.

Diff for: template/README.md

-25
This file was deleted.

0 commit comments

Comments
 (0)