Skip to content

Commit

Permalink
Make examples executable directly
Browse files Browse the repository at this point in the history
Hi!

Thanks for writing and sharing this useful args parsing library!

As I'm still learning Go, it took me some time to make the provided examples work. I propose the apply in README.md the changes I had to make in order to make them work on my end, hoping that it would also help other potential users of your module.

Best regards,

Adrien
  • Loading branch information
adrienjoly committed Dec 18, 2020
1 parent 4151cd9 commit ff8f5ee
Showing 1 changed file with 22 additions and 12 deletions.
34 changes: 22 additions & 12 deletions README.md
Expand Up @@ -58,9 +58,13 @@ Documentation can be found at [Godoc](https://godoc.org/github.com/cosiner/flag)
# Example
## Flags
```Go
package flag
package main

import "fmt"
import (
"fmt"

flag "github.com/cosiner/flag"
)

type Tar struct {
GZ bool `names:"-z, --gz" usage:"gzip format"`
Expand All @@ -73,7 +77,7 @@ type Tar struct {
SourceFiles []string `args:"true"`
}

func (t *Tar) Metadata() map[string]Flag {
func (t *Tar) Metadata() map[string]flag.Flag {
const (
usage = "tar is a tool for manipulate tape archives."
version = `
Expand All @@ -87,7 +91,7 @@ func (t *Tar) Metadata() map[string]Flag {
cpio, ar, and shar archives.
`
)
return map[string]Flag{
return map[string]flag.Flag{
"": {
Usage: usage,
Version: version,
Expand All @@ -99,22 +103,21 @@ func (t *Tar) Metadata() map[string]Flag {
}
}

func ExampleFlagSet_ParseStruct() {
func main() {
var tar Tar

NewFlagSet(Flag{}).ParseStruct(&tar, "tar", "-zcf", "a.tgz", "a.go", "b.go")
flag.NewFlagSet(flag.Flag{}).ParseStruct(&tar, os.Args...)
fmt.Println(tar.GZ)
fmt.Println(tar.Create)
fmt.Println(tar.File)
fmt.Println(tar.SourceFiles)

// Output:
// Output for `$ go build -o "tar" . && ./tar -zcf a.tgz a.go b.go`:
// true
// true
// a.tgz
// [a.go b.go]
}

```
## Help message
```
Expand Down Expand Up @@ -146,6 +149,13 @@ Flags:

## FlagSet
```Go
package main

import (
"fmt"

flag "github.com/cosiner/flag"
)

type GoCmd struct {
Build struct {
Expand Down Expand Up @@ -177,8 +187,8 @@ type GoCmd struct {
} `usage:"run gofmt on package sources"`
}

func (*GoCmd) Metadata() map[string]Flag {
return map[string]Flag{
func (*GoCmd) Metadata() map[string]flag.Flag {
return map[string]flag.Flag{
"": {
Usage: "Go is a tool for managing Go source code.",
Arglist: "command [argument]",
Expand All @@ -196,10 +206,10 @@ func (*GoCmd) Metadata() map[string]Flag {
}
}

func TestSubset(t *testing.T) {
func main() {
var g GoCmd

set := NewFlagSet(Flag{})
set := flag.NewFlagSet(flag.Flag{})
set.StructFlags(&g)
set.Help(false)
fmt.Println()
Expand Down

0 comments on commit ff8f5ee

Please sign in to comment.