github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/dockerfile/dockerfile.go (about)

     1  package dockerfile
     2  
     3  import (
     4  	"github.com/distribution/reference"
     5  	"github.com/moby/buildkit/frontend/dockerfile/parser"
     6  )
     7  
     8  type Dockerfile string
     9  
    10  func (d Dockerfile) Empty() bool {
    11  	return d.String() == ""
    12  }
    13  
    14  // Find all images referenced in this dockerfile.
    15  func (d Dockerfile) FindImages(buildArgs []string) ([]reference.Named, error) {
    16  	result := []reference.Named{}
    17  	ast, err := ParseAST(d)
    18  	if err != nil {
    19  		return nil, err
    20  	}
    21  
    22  	err = ast.traverseImageRefs(func(node *parser.Node, ref reference.Named) reference.Named {
    23  		result = append(result, ref)
    24  		return nil
    25  	}, argInstructions(buildArgs))
    26  	if err != nil {
    27  		return nil, err
    28  	}
    29  	return result, nil
    30  }
    31  
    32  func (d Dockerfile) String() string {
    33  	return string(d)
    34  }