From 9da3d152a4cd82714baee21ae564285cb99a875e Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Wed, 8 May 2024 16:25:00 -0700 Subject: [PATCH] bug: sys.getenv should be able to get GPTSCRIPT_WORKSPACE_DIR --- pkg/builtin/builtin.go | 12 +++++++++++- pkg/builtin/builtin_test.go | 23 +++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 pkg/builtin/builtin_test.go diff --git a/pkg/builtin/builtin.go b/pkg/builtin/builtin.go index 184bda30..228ffb66 100644 --- a/pkg/builtin/builtin.go +++ b/pkg/builtin/builtin.go @@ -319,7 +319,10 @@ func SysExec(ctx context.Context, env []string, input string) (string, error) { if err != nil { _, _ = os.Stdout.Write(out) } - return string(out), err + if err != nil { + return string(out), fmt.Errorf("OUTPUT: %s, ERROR: %w", out, err) + } + return string(out), nil } func getWorkspaceDir(envs []string) (string, error) { @@ -617,6 +620,13 @@ func SysGetenv(ctx context.Context, env []string, input string) (string, error) return "", err } log.Debugf("looking up env var %s", params.Name) + for _, env := range env { + k, v, ok := strings.Cut(env, "=") + if ok && k == params.Name { + log.Debugf("found env var %s in local environment", params.Name) + return v, nil + } + } return os.Getenv(params.Name), nil } diff --git a/pkg/builtin/builtin_test.go b/pkg/builtin/builtin_test.go new file mode 100644 index 00000000..f72d5bea --- /dev/null +++ b/pkg/builtin/builtin_test.go @@ -0,0 +1,23 @@ +package builtin + +import ( + "context" + "testing" + + "github.com/hexops/autogold/v2" + "github.com/stretchr/testify/require" +) + +func TestSysGetenv(t *testing.T) { + v, err := SysGetenv(context.Background(), []string{ + "MAGIC=VALUE", + }, `{"name":"MAGIC"}`) + require.NoError(t, err) + autogold.Expect("VALUE").Equal(t, v) + + v, err = SysGetenv(context.Background(), []string{ + "MAGIC=VALUE", + }, `{"name":"MAGIC2"}`) + require.NoError(t, err) + autogold.Expect("").Equal(t, v) +}