github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/tiltfile/print/print.go (about) 1 package print 2 3 import ( 4 "errors" 5 6 "go.starlark.net/starlark" 7 8 "github.com/tilt-dev/tilt/internal/tiltfile/starkit" 9 "github.com/tilt-dev/tilt/pkg/logger" 10 ) 11 12 // Additional functions for print output. 13 type Plugin struct{} 14 15 func NewPlugin() Plugin { 16 return Plugin{} 17 } 18 19 func (Plugin) OnStart(env *starkit.Environment) error { 20 err := env.AddBuiltin("warn", warn) 21 if err != nil { 22 return err 23 } 24 err = env.AddBuiltin("fail", fail) 25 if err != nil { 26 return err 27 } 28 err = env.AddBuiltin("exit", exit) 29 if err != nil { 30 return err 31 } 32 return nil 33 } 34 35 func fail(thread *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 36 var msg string 37 err := starkit.UnpackArgs(thread, fn.Name(), args, kwargs, "msg", &msg) 38 if err != nil { 39 return nil, err 40 } 41 42 return nil, errors.New(msg) 43 } 44 45 func warn(thread *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 46 var msg string 47 err := starkit.UnpackArgs(thread, fn.Name(), args, kwargs, "msg", &msg) 48 if err != nil { 49 return nil, err 50 } 51 52 ctx, err := starkit.ContextFromThread(thread) 53 if err != nil { 54 return nil, err 55 } 56 57 logger.Get(ctx).Warnf("%s", msg) 58 59 return starlark.None, nil 60 } 61 62 func exit(thread *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 63 var codeVal starlark.Value 64 err := starkit.UnpackArgs(thread, fn.Name(), args, kwargs, "code?", &codeVal) 65 if err != nil { 66 return nil, err 67 } 68 69 ctx, err := starkit.ContextFromThread(thread) 70 if err != nil { 71 return nil, err 72 } 73 74 if codeVal != nil && codeVal != starlark.None { 75 code := codeVal.String() 76 if code != "" { 77 logger.Get(ctx).Infof("%s", code) 78 } 79 } 80 81 return starlark.None, starkit.ErrStopExecution 82 }