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  }