pkg/runner/global_context.go (51 lines of code) (raw):

package runner import ( "fmt" "io" "gitlab.com/gitlab-org/step-runner/pkg/precond" ) type GlobalContext struct { workDir string job map[string]string env *Environment stdout io.Writer stderr io.Writer } func NewGlobalContext(workDir string, job map[string]string, env *Environment, stdout, stderr io.Writer) *GlobalContext { precond.MustNotBeNil(env, "global context must have an environment") return &GlobalContext{ workDir: workDir, job: job, env: env, stdout: stdout, stderr: stderr, } } func (gc *GlobalContext) WorkDir() string { return gc.workDir } func (gc *GlobalContext) Job() map[string]string { return gc.job } func (gc *GlobalContext) Env() *Environment { return gc.env } func (gc *GlobalContext) EnvWithLexicalScope(envVars map[string]string) *Environment { return gc.env.AddLexicalScope(envVars) } func (gc *GlobalContext) AddGlobalEnv(env *Environment) { gc.env.Mutate(env) } func (gc *GlobalContext) Pipe() (io.Writer, io.Writer) { return gc.stdout, gc.stderr } func (gc *GlobalContext) Logln(format string, v ...any) error { return gc.Logf(format+"\n", v...) } func (gc *GlobalContext) Logf(format string, v ...any) error { _, err := fmt.Fprintf(gc.stdout, format, v...) if err != nil { return fmt.Errorf("writing to stdout: %w", err) } return nil }