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  }