github.com/buildpacks/pack@v0.33.3-0.20240516162812-884dd1837311/pkg/image/pull_policy.go (about)

     1  package image
     2  
     3  import (
     4  	"github.com/pkg/errors"
     5  )
     6  
     7  // PullPolicy defines a policy for how to manage images
     8  type PullPolicy int
     9  
    10  const (
    11  	// PullAlways images, even if they are present
    12  	PullAlways PullPolicy = iota
    13  	// PullNever images, even if they are not present
    14  	PullNever
    15  	// PullIfNotPresent pulls images if they aren't present
    16  	PullIfNotPresent
    17  )
    18  
    19  var nameMap = map[string]PullPolicy{"always": PullAlways, "never": PullNever, "if-not-present": PullIfNotPresent, "": PullAlways}
    20  
    21  // ParsePullPolicy from string
    22  func ParsePullPolicy(policy string) (PullPolicy, error) {
    23  	if val, ok := nameMap[policy]; ok {
    24  		return val, nil
    25  	}
    26  
    27  	return PullAlways, errors.Errorf("invalid pull policy %s", policy)
    28  }
    29  
    30  func (p PullPolicy) String() string {
    31  	switch p {
    32  	case PullAlways:
    33  		return "always"
    34  	case PullNever:
    35  		return "never"
    36  	case PullIfNotPresent:
    37  		return "if-not-present"
    38  	}
    39  
    40  	return ""
    41  }