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

     1  package shlex
     2  
     3  import (
     4  	"go.starlark.net/starlark"
     5  
     6  	"github.com/tilt-dev/tilt/internal/tiltfile/starkit"
     7  
     8  	"github.com/alessio/shellescape"
     9  )
    10  
    11  type Plugin struct{}
    12  
    13  func NewPlugin() Plugin {
    14  	return Plugin{}
    15  }
    16  
    17  func (Plugin) OnStart(env *starkit.Environment) error {
    18  	return env.AddBuiltin("shlex.quote", quote)
    19  }
    20  
    21  func quote(thread *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
    22  	var s string
    23  	err := starkit.UnpackArgs(thread, fn.Name(), args, kwargs,
    24  		"name", &s)
    25  	if err != nil {
    26  		return nil, err
    27  	}
    28  
    29  	return starlark.String(shellescape.Quote(s)), nil
    30  }