github.com/tilt-dev/tilt@v0.36.0/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  		if ok {
    36  			ms.DisableState = uir.Status.DisableStatus.State
    37  			if len(uir.Status.DisableStatus.Sources) > 0 {
    38  				if ms.DisableState == v1alpha1.DisableStateDisabled {
    39  					// since file watches are disabled while a resource is disabled, we can't
    40  					// have confidence in any previous build state
    41  					ms.BuildHistory = nil
    42  					if mt, ok := state.ManifestTargets[ms.Name]; ok {
    43  						ms.ResetBuildStatus(mt.Manifest)
    44  					} else if _, ok := state.TiltfileStates[ms.Name]; ok {
    45  						ms.ResetTiltfileBuildStatus(ms.Name)
    46  					}
    47  					state.RemoveFromTriggerQueue(ms.Name)
    48  				}
    49  			}
    50  		}
    51  
    52  	}
    53  
    54  	state.UIResources[n] = uir
    55  }
    56  
    57  func HandleUIResourceDeleteAction(state *store.EngineState, action UIResourceDeleteAction) {
    58  	delete(state.UIResources, action.Name)
    59  }