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 }