-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathexample_test.go
More file actions
74 lines (59 loc) · 1.8 KB
/
Copy pathexample_test.go
File metadata and controls
74 lines (59 loc) · 1.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package flagsfiller_test
import (
"flag"
"fmt"
"log"
"time"
"github.com/itzg/go-flagsfiller"
)
func Example() {
type Config struct {
Host string `default:"localhost" usage:"The remote host"`
Enabled bool `default:"true" usage:"Turn it on"`
Automatic bool `default:"false" usage:"Make it automatic" aliases:"a"`
Retries int `default:"1" usage:"Retry" aliases:"r,t"`
Timeout time.Duration `default:"5s" usage:"How long to wait"`
}
var config Config
flagset := flag.NewFlagSet("ExampleBasic", flag.ExitOnError)
filler := flagsfiller.New()
err := filler.Fill(flagset, &config)
if err != nil {
log.Fatal(err)
}
err = flagset.Parse([]string{"--host", "external.svc", "--timeout", "10m", "-a", "-t", "2"})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", config)
// Output:
// {Host:external.svc Enabled:true Automatic:true Retries:2 Timeout:10m0s}
}
func ExampleFlagSetFiller_Verify() {
type Config struct {
Host string `required:"true" usage:"The remote host"`
Port int `default:"8080" usage:"The port"`
Username string `required:"true" usage:"Username for authentication"`
}
var config Config
flagset := flag.NewFlagSet("ExampleVerify", flag.ContinueOnError)
filler := flagsfiller.New()
err := filler.Fill(flagset, &config)
if err != nil {
log.Fatal(err)
}
// Parse with required fields provided
err = flagset.Parse([]string{"--host", "example.com", "--username", "admin"})
if err != nil {
log.Fatal(err)
}
// Verify all required fields are set
err = filler.Verify()
if err != nil {
fmt.Printf("Error: %v\n", err)
return
}
fmt.Printf("Config validated: Host=%s, Port=%d, Username=%s\n", config.Host, config.Port, config.Username)
// Output:
// Config validated: Host=example.com, Port=8080, Username=admin
}