From c6b77031bec5c743ab54f36844ce7fde8bd682dc Mon Sep 17 00:00:00 2001 From: Sebastian Tiedtke Date: Fri, 9 Feb 2024 17:53:40 +0000 Subject: [PATCH] Fix .env which broke as part of moving cmds to the project service (#493) * Fix .env* loading * Compact logic * Don't use present progressive * Load envs when options are applied --- internal/runner/client/client.go | 8 +++++++- internal/runner/client/client_local.go | 1 - testdata/script/dotenv.txtar | 15 +++++++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 testdata/script/dotenv.txtar diff --git a/internal/runner/client/client.go b/internal/runner/client/client.go index dc8898c76..5744174b3 100644 --- a/internal/runner/client/client.go +++ b/internal/runner/client/client.go @@ -8,6 +8,7 @@ import ( "github.com/go-git/go-billy/v5/osfs" "github.com/muesli/cancelreader" + "github.com/pkg/errors" "github.com/stateful/runme/internal/document" runnerv1 "github.com/stateful/runme/internal/gen/proto/go/runme/runner/v1" "github.com/stateful/runme/internal/project" @@ -88,8 +89,13 @@ func WithSessionID(id string) RunnerOption { } func WithProject(proj *project.Project) RunnerOption { - return withSettings(func(rs *RunnerSettings) { + return withSettingsErr(func(rs *RunnerSettings) error { rs.project = proj + + projEnvs, err := rs.project.LoadEnv() + rs.envs = append(rs.envs, projEnvs...) + + return errors.Wrap(err, "failed to apply project envs") }) } diff --git a/internal/runner/client/client_local.go b/internal/runner/client/client_local.go index a70d8d869..e0a055f99 100644 --- a/internal/runner/client/client_local.go +++ b/internal/runner/client/client_local.go @@ -95,7 +95,6 @@ func (r *LocalRunner) newExecutable(task project.Task) (runner.Executable, error Logger: r.logger, } - // TODO(adamb): what about `r.envs`? cfg.PreEnv, err = r.project.LoadEnv() if err != nil { return nil, err diff --git a/testdata/script/dotenv.txtar b/testdata/script/dotenv.txtar new file mode 100644 index 000000000..d6fcf6de1 --- /dev/null +++ b/testdata/script/dotenv.txtar @@ -0,0 +1,15 @@ +exec runme run env1 +stdout 'SOMETHING=in-my-dot-env' +! stderr . + +-- .env -- +SOMETHING="in-my-dot-env" + +-- README.md -- +--- +shell: bash +--- + +```sh {"name":"env1"} +echo SOMETHING=${SOMETHING} +```