github.com/tilt-dev/tilt@v0.36.0/internal/tiltfile/secretsettings/secret_settings.go (about)

     1  package secretsettings
     2  
     3  import (
     4  	"go.starlark.net/starlark"
     5  
     6  	"github.com/tilt-dev/tilt/pkg/model"
     7  
     8  	"github.com/tilt-dev/tilt/internal/tiltfile/starkit"
     9  )
    10  
    11  // Implements functions for dealing with k8s secret settings.
    12  type Plugin struct {
    13  }
    14  
    15  func NewPlugin() Plugin {
    16  	return Plugin{}
    17  }
    18  
    19  func (e Plugin) NewState() interface{} {
    20  	return model.DefaultSecretSettings()
    21  }
    22  
    23  func (e Plugin) OnStart(env *starkit.Environment) error {
    24  	return env.AddBuiltin("secret_settings", e.secretSettings)
    25  }
    26  
    27  func (e Plugin) secretSettings(thread *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
    28  	var disable bool
    29  	if err := starkit.UnpackArgs(thread, fn.Name(), args, kwargs,
    30  		"disable_scrub", &disable); err != nil {
    31  		return nil, err
    32  	}
    33  
    34  	err := starkit.SetState(thread, func(settings model.SecretSettings) model.SecretSettings {
    35  		settings.ScrubSecrets = !disable
    36  		return settings
    37  	})
    38  
    39  	return starlark.None, err
    40  }
    41  
    42  var _ starkit.StatefulPlugin = Plugin{}
    43  
    44  func MustState(model starkit.Model) model.SecretSettings {
    45  	state, err := GetState(model)
    46  	if err != nil {
    47  		panic(err)
    48  	}
    49  	return state
    50  }
    51  
    52  func GetState(m starkit.Model) (model.SecretSettings, error) {
    53  	var state model.SecretSettings
    54  	err := m.Load(&state)
    55  	return state, err
    56  }