github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/tiltfile/value/duration.go (about) 1 package value 2 3 import ( 4 "fmt" 5 "time" 6 7 "go.starlark.net/starlark" 8 ) 9 10 // Parse duration constants from starlark. 11 type Duration time.Duration 12 13 func (d Duration) IsZero() bool { 14 return d.AsDuration() == 0 15 } 16 17 func (d Duration) AsDuration() time.Duration { 18 return time.Duration(d) 19 } 20 21 func (d *Duration) Unpack(v starlark.Value) error { 22 s, ok := starlark.AsString(v) 23 if !ok { 24 return fmt.Errorf("Expected string. Got: %s", v.Type()) 25 } 26 27 dur, err := time.ParseDuration(s) 28 if err != nil { 29 return err 30 } 31 32 *d = Duration(dur) 33 return nil 34 }