github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/tiltfile/sys/sys.go (about) 1 package sys 2 3 import ( 4 "os" 5 6 "go.starlark.net/starlark" 7 8 "github.com/tilt-dev/tilt/internal/tiltfile/starkit" 9 ) 10 11 // The starlark sys module. 12 // Contains a subset of Python's sys module. 13 // https://docs.python.org/3/library/sys.html 14 type Plugin struct { 15 } 16 17 func NewPlugin() Plugin { 18 return Plugin{} 19 } 20 21 func (e Plugin) OnStart(env *starkit.Environment) error { 22 err := env.AddValue("sys.argv", argv()) 23 if err != nil { 24 return err 25 } 26 27 err = env.AddValue("sys.executable", executable()) 28 if err != nil { 29 return err 30 } 31 return nil 32 } 33 34 // List of commandline arguments that Tilt started with. 35 func argv() starlark.Value { 36 values := []starlark.Value{} 37 for _, arg := range os.Args { 38 values = append(values, starlark.String(arg)) 39 } 40 41 list := starlark.NewList(values) 42 list.Freeze() 43 return list 44 } 45 46 // Full path to the Tilt executable. 47 func executable() starlark.Value { 48 e, err := os.Executable() 49 if err != nil { 50 return starlark.None 51 } 52 return starlark.String(e) 53 }