File tree 4 files changed +98
-0
lines changed
4 files changed +98
-0
lines changed Original file line number Diff line number Diff line change
1
+ package pflagdate
2
+
3
+ import (
4
+ date "github.com/hardfinhq/go-date"
5
+ )
6
+
7
+ type Date struct {
8
+ date.Date
9
+ }
10
+
11
+ // Implement pflag.Value interface
12
+
13
+ // Type implements pflag.Value.Type().
14
+ // Returns "Date".
15
+ func (* Date ) Type () string {
16
+ return "Date"
17
+ }
18
+
19
+ // String implements pflag.Value.String().
20
+ // Returns date formatted as time.DateOnly.
21
+ func (d * Date ) String () string {
22
+ return d .Date .String ()
23
+ }
24
+
25
+ // Set implements pflag.Value.Set().
26
+ func (d * Date ) Set (value string ) error {
27
+ parsed , err := date .FromString (value )
28
+ if err != nil {
29
+ return err
30
+ }
31
+ d .Date = parsed
32
+ return nil
33
+ }
Original file line number Diff line number Diff line change
1
+ package pflagdate
2
+
3
+ import (
4
+ "testing"
5
+ "time"
6
+
7
+ date "github.com/hardfinhq/go-date"
8
+ "github.com/spf13/pflag"
9
+ )
10
+
11
+ func TestDate (t * testing.T ) {
12
+ dt := new (Date )
13
+
14
+ if dt .Type () != "Date" {
15
+ t .Errorf ("unexpected type name %q" , dt .Type ())
16
+ }
17
+
18
+ flag := & pflag.Flag {
19
+ Name : "date" ,
20
+ Shorthand : "d" ,
21
+ Usage : "YYYY-MM-DD date" ,
22
+ Value : dt ,
23
+ }
24
+
25
+ pfs := pflag .NewFlagSet ("test" , pflag .ContinueOnError )
26
+ pfs .AddFlag (flag )
27
+
28
+ err := pfs .Parse ([]string {"--date" , "2001-03-06" })
29
+ if err != nil {
30
+ t .Errorf ("unexpected error: %v" , err )
31
+ }
32
+
33
+ if ! dt .Equal (date .NewDate (2001 , time .March , 6 )) {
34
+ t .Errorf ("unexpected date: %s" , dt )
35
+ }
36
+
37
+ if dt .String () != "2001-03-06" {
38
+ t .Errorf ("unexpected date: %s" , dt )
39
+ }
40
+
41
+ err2 := pfs .Parse ([]string {"--date" , "invalid" })
42
+ if err2 == nil {
43
+ t .Error ("expected error, got nil" )
44
+ }
45
+ }
Original file line number Diff line number Diff line change
1
+ module github.com/gbarr/pflag-date
2
+
3
+ go 1.23.2
4
+
5
+ require (
6
+ github.com/hardfinhq/go-date v1.20240411.1
7
+ github.com/spf13/pflag v1.0.5
8
+ )
Original file line number Diff line number Diff line change
1
+ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c =
2
+ github.com/davecgh/go-spew v1.1.1 /go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38 =
3
+ github.com/hardfinhq/go-date v1.20240411.1 h1:UskRXxgD+4eCEa8CpiiWLiv2/Vnf1eB90Bojkf7AQ64 =
4
+ github.com/hardfinhq/go-date v1.20240411.1 /go.mod h1:7oxaI9XX4W3/MRDeQXec0fLXFnSJDS7BrazIY2XqPXA =
5
+ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM =
6
+ github.com/pmezard/go-difflib v1.0.0 /go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4 =
7
+ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA =
8
+ github.com/spf13/pflag v1.0.5 /go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg =
9
+ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg =
10
+ github.com/stretchr/testify v1.9.0 /go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY =
11
+ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA =
12
+ gopkg.in/yaml.v3 v3.0.1 /go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM =
You can’t perform that action at this time.
0 commit comments