github.com/grahambrereton-form3/tilt@v0.10.18/internal/tiltfile/os/os.go (about) 1 package os 2 3 import ( 4 "os" 5 "strings" 6 7 "go.starlark.net/starlark" 8 9 "github.com/windmilleng/tilt/internal/tiltfile/starkit" 10 ) 11 12 // The starlark OS module. 13 // Modeled after Bazel's repository_os 14 // https://docs.bazel.build/versions/master/skylark/lib/repository_os.html 15 // and Python's OS module 16 // https://docs.python.org/3/library/os.html 17 type Extension struct { 18 } 19 20 func NewExtension() Extension { 21 return Extension{} 22 } 23 24 func (e Extension) OnStart(env *starkit.Environment) error { 25 environValue, err := environ() 26 if err != nil { 27 return err 28 } 29 return env.AddValue("os.environ", environValue) 30 } 31 32 func environ() (starlark.Value, error) { 33 env := os.Environ() 34 result := starlark.NewDict(len(env)) 35 for _, e := range os.Environ() { 36 pair := strings.SplitN(e, "=", 2) 37 err := result.SetKey(starlark.String(pair[0]), starlark.String(pair[1])) 38 if err != nil { 39 return nil, err 40 } 41 } 42 result.Freeze() 43 return result, nil 44 }