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

     1  package uiresources
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/tilt-dev/tilt/internal/store"
     7  	"github.com/tilt-dev/tilt/pkg/apis/core/v1alpha1"
     8  	"github.com/tilt-dev/tilt/pkg/logger"
     9  	"github.com/tilt-dev/tilt/pkg/model"
    10  	"github.com/tilt-dev/tilt/pkg/model/logstore"
    11  )
    12  
    13  func HandleUIResourceUpsertAction(state *store.EngineState, action UIResourceUpsertAction) {
    14  	n := action.UIResource.Name
    15  	old := state.UIResources[n]
    16  	uir := action.UIResource
    17  	if old != nil {
    18  		os := old.Status.DisableStatus.State
    19  		ns := uir.Status.DisableStatus.State
    20  
    21  		verb := ""
    22  		if os == v1alpha1.DisableStateEnabled && ns == v1alpha1.DisableStateDisabled {
    23  			verb = "disabled"
    24  		} else if os == v1alpha1.DisableStateDisabled && ns == v1alpha1.DisableStateEnabled {
    25  			verb = "enabled"
    26  		}
    27  
    28  		if verb != "" {
    29  			message := fmt.Sprintf("Resource %q %s. To enable/disable it, use the Tilt Web UI.\n", n, verb)
    30  			a := store.NewLogAction(model.ManifestName(n), logstore.SpanID(fmt.Sprintf("disabletoggle-%s", n)), logger.InfoLvl, nil, []byte(message))
    31  			state.LogStore.Append(a, state.Secrets)
    32  		}
    33  
    34  		ms, ok := state.ManifestState(model.ManifestName(n))
    35  
    36  		if ok {
    37  			ms.DisableState = uir.Status.DisableStatus.State
    38  			if len(uir.Status.DisableStatus.Sources) > 0 {
    39  				if ms.DisableState == v1alpha1.DisableStateDisabled {
    40  					// since file watches are disabled while a resource is disabled, we can't
    41  					// have confidence in any previous build state
    42  					ms.BuildHistory = nil
    43  					if len(ms.BuildStatuses) > 0 {
    44  						ms.BuildStatuses = make(map[model.TargetID]*store.BuildStatus)
    45  					}
    46  					state.RemoveFromTriggerQueue(ms.Name)
    47  				}
    48  			}
    49  		}
    50  
    51  	}
    52  
    53  	state.UIResources[n] = uir
    54  }
    55  
    56  func HandleUIResourceDeleteAction(state *store.EngineState, action UIResourceDeleteAction) {
    57  	delete(state.UIResources, action.Name)
    58  }