X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/139200027a3192260b5ea7c2d0c93a8eb5f8eb7e..a795e5e02791cb7920aaded26bfa83a7ace1f386:/sdk/go/arvados/duration.go diff --git a/sdk/go/arvados/duration.go b/sdk/go/arvados/duration.go index 1639c5852a..a64eaacf83 100644 --- a/sdk/go/arvados/duration.go +++ b/sdk/go/arvados/duration.go @@ -13,9 +13,7 @@ type Duration time.Duration // UnmarshalJSON implements json.Unmarshaler func (d *Duration) UnmarshalJSON(data []byte) error { if data[0] == '"' { - dur, err := time.ParseDuration(string(data[1 : len(data)-1])) - *d = Duration(dur) - return err + return d.Set(string(data[1 : len(data)-1])) } return fmt.Errorf("duration must be given as a string like \"600s\" or \"1h30m\"") } @@ -29,3 +27,15 @@ func (d *Duration) MarshalJSON() ([]byte, error) { func (d Duration) String() string { return time.Duration(d).String() } + +// Duration returns a time.Duration +func (d Duration) Duration() time.Duration { + return time.Duration(d) +} + +// Value implements flag.Value +func (d *Duration) Set(s string) error { + dur, err := time.ParseDuration(s) + *d = Duration(dur) + return err +}