Skip to content

Commit ed0e13a

Browse files
committed
update README.md
1 parent 9d96073 commit ed0e13a

File tree

2 files changed

+39
-38
lines changed

2 files changed

+39
-38
lines changed

README.md

Lines changed: 39 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -23,65 +23,68 @@ go get -u github.com/meblum/cmd
2323
## Example usage
2424

2525
```go
26-
package main
27-
2826
import (
2927
"flag"
3028
"fmt"
31-
"os"
3229

33-
"github.com/meblum/plane/cmd"
30+
"github.com/meblum/cmd"
3431
)
3532

3633
func main() {
34+
greeter := greetHandler{
35+
greetType: "hello",
36+
greetName: "Anonymous",
37+
}
3738

38-
greetCommandName := "greet"
39-
greetType := "hello"
40-
greetName := "Anonymous"
41-
42-
versionCommandName := "version"
43-
versionVerbose := false
44-
45-
greetFlagSet := flag.NewFlagSet(greetCommandName, flag.ExitOnError)
46-
greetFlagSet.StringVar(&greetType, "type", greetType, "greet type (hello|bye)")
47-
greetFlagSet.StringVar(&greetName, "name", greetName, "name to print greeting for")
39+
greetFlagSet := flag.NewFlagSet("greet", flag.ExitOnError)
40+
greetFlagSet.StringVar(&greeter.greetType, "type", greeter.greetType, "greet type (hello|bye)")
41+
greetFlagSet.StringVar(&greeter.greetName, "name", greeter.greetName, "name to print greeting for")
4842

49-
versionFlagSet := flag.NewFlagSet(versionCommandName, flag.ExitOnError)
50-
versionFlagSet.BoolVar(&versionVerbose, "verbose", versionVerbose, "output version with additional information")
43+
version := versionHandler{
44+
version: "1.0.0",
45+
verbose: false,
46+
}
5147

52-
c := &cmd.CommandSet{}
53-
c.Add("print greeting", greetFlagSet, false)
54-
c.Add("print version", versionFlagSet, false)
48+
versionFlagSet := flag.NewFlagSet("version", flag.ExitOnError)
49+
versionFlagSet.BoolVar(&version.verbose, "verbose", version.verbose, "output version with additional information")
5550

56-
currSub, _ := c.Parse(os.Args[1:], flag.ExitOnError)
51+
c := &cmd.CmdSet{}
52+
c.Add("print greeting", greetFlagSet, greeter, false)
53+
c.Add("print version", versionFlagSet, version, false)
54+
c.HandleCmd(nil, flag.ExitOnError)
55+
}
5756

58-
switch currSub.FlagSet.Name() {
59-
case greetCommandName:
60-
handleGreet(greetType, greetName)
61-
case versionCommandName:
62-
handleVersion("1.0.0", versionVerbose)
63-
}
57+
type greetHandler struct {
58+
greetType string
59+
greetName string
6460
}
6561

66-
func handleGreet(greetType, name string) {
67-
switch greetType {
62+
func (g greetHandler) Handle(c *cmd.Cmd) error {
63+
switch g.greetType {
6864
case "hello":
69-
fmt.Printf("Hello, %v! Nice to meet you :)", name)
65+
fmt.Printf("Hello, %v! Nice to meet you :)", g.greetName)
7066
case "bye":
71-
fmt.Printf("Hello, %v! Nice to meet you :)", name)
67+
fmt.Printf("Hello, %v! Nice to meet you :)", g.greetName)
7268
default:
73-
fmt.Print("invalid greet type, please use 'hello' or 'bye'")
69+
return fmt.Errorf("invalid greet type %v, valid options are 'hello' or 'bye'", g.greetType)
7470
}
71+
return nil
7572
}
7673

77-
func handleVersion(version string, verbose bool) {
78-
if verbose {
79-
fmt.Printf("You are using Greeter version %v", version)
80-
return
74+
type versionHandler struct {
75+
version string
76+
verbose bool
77+
}
78+
79+
func (g versionHandler) Handle(c *cmd.Cmd) error {
80+
if g.verbose {
81+
fmt.Printf("You are using Greeter version %v", g.version)
8182
}
82-
fmt.Print(version)
83+
fmt.Print(g.version)
84+
return nil
8385
}
8486

87+
8588
```
8689

8790
See the [documentation][godev] for more information.

go.mod

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
module github.com/meblum/cmd
22

33
go 1.20
4-
// calling cmd handler causes panic
5-
retract v1.1.0

0 commit comments

Comments
 (0)