github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/controllers/apis/tiltfile/main.go (about)

     1  package tiltfile
     2  
     3  import (
     4  	"fmt"
     5  	"path/filepath"
     6  
     7  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     8  
     9  	"github.com/tilt-dev/tilt/internal/controllers/apis/uibutton"
    10  	"github.com/tilt-dev/tilt/internal/ospath"
    11  	"github.com/tilt-dev/tilt/pkg/apis"
    12  	"github.com/tilt-dev/tilt/pkg/apis/core/v1alpha1"
    13  	"github.com/tilt-dev/tilt/pkg/model"
    14  )
    15  
    16  // Resolve a filename to its "best" version.
    17  // On any error, just return the original filename.
    18  func ResolveFilename(filename string) string {
    19  	resolved, err := ospath.RealAbs(filename)
    20  	if err == nil {
    21  		return resolved
    22  	}
    23  
    24  	resolved, err = filepath.Abs(filename)
    25  	if err == nil {
    26  		return resolved
    27  	}
    28  
    29  	return filename
    30  }
    31  
    32  func MainTiltfile(filename string, args []string) *v1alpha1.Tiltfile {
    33  	name := model.MainTiltfileManifestName.String()
    34  	fwName := apis.SanitizeName(fmt.Sprintf("%s:%s", model.TargetTypeConfigs, name))
    35  	return &v1alpha1.Tiltfile{
    36  		ObjectMeta: metav1.ObjectMeta{Name: name},
    37  		Spec: v1alpha1.TiltfileSpec{
    38  			Path: ResolveFilename(filename),
    39  			Args: args,
    40  			RestartOn: &v1alpha1.RestartOnSpec{
    41  				FileWatches: []string{fwName},
    42  			},
    43  			StopOn: &v1alpha1.StopOnSpec{
    44  				UIButtons: []string{uibutton.StopBuildButtonName(name)},
    45  			},
    46  		},
    47  	}
    48  }