diff options
Diffstat (limited to 'internal/executor/environment.go')
| -rw-r--r-- | internal/executor/environment.go | 63 | +0 −63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/internal/executor/environment.go b/internal/executor/environment.go deleted file mode 100644 --- a/internal/executor/environment.go +++ /dev/null @@ -1,63 +0,0 @@ -// SPDX-FileCopyrightText: 2026 Nikolay Govorov -// SPDX-License-Identifier: AGPL-3.0-or-later - -package executor - -import ( - "context" - "fmt" - "os" - - "go.starlark.net/starlark" -) - -// SOTaskCtx is the `ctx` value passed to the Starlark project() function. It -// exposes the task's Runtime to the build script. -type SOTaskCtx struct { - ctx context.Context - rt Runtime -} - -var _ starlark.HasAttrs = (*SOTaskCtx)(nil) - -func (c *SOTaskCtx) Type() string { return "ctx" } -func (c *SOTaskCtx) Hash() (uint32, error) { return 0, fmt.Errorf("unhashable: ctx") } -func (c *SOTaskCtx) Truth() starlark.Bool { return true } -func (c *SOTaskCtx) String() string { return "ctx" } - -func (c *SOTaskCtx) Freeze() {} - -func (c *SOTaskCtx) AttrNames() []string { return []string{"shell"} } -func (c *SOTaskCtx) Attr(name string) (starlark.Value, error) { - switch name { - case "shell": - return starlark.NewBuiltin("ctx.shell", c.shell), nil - } - return nil, nil -} - -func (c *SOTaskCtx) shell( - thread *starlark.Thread, - fn *starlark.Builtin, - args starlark.Tuple, - kwargs []starlark.Tuple, -) (starlark.Value, error) { - var cmd string - if err := starlark.UnpackPositionalArgs(fn.Name(), args, kwargs, 1, &cmd); err != nil { - return nil, err - } - - res, err := c.rt.Exec(c.ctx, Command{ - Args: []string{"bash", "-c", cmd}, - Stdout: os.Stdout, - Stderr: os.Stderr, - }) - if err != nil { - return nil, err - } - if res.Code != 0 { - return nil, fmt.Errorf("shell: %q exited with code %d", cmd, res.Code) - } - - return starlark.None, nil -} |
