in pkg/runner/lazily_loaded_step.go [62:112]
func (s *LazilyLoadedStep) loadStep(ctx ctx.Context, stepsCtx *StepsContext) (Step, *Params, *SpecDefinition, error) {
specDef, err := s.stepResource.Fetch(ctx, stepsCtx.View())
if err != nil {
return nil, nil, nil, fmt.Errorf("failed to load: %w", err)
}
inputs, err := buildInputVars(s.stepReference, specDef)
if err != nil {
return nil, nil, nil, fmt.Errorf("failed to load: %w", err)
}
for name, v := range inputs {
res, err := expression.Expand(stepsCtx.View(), v.Value)
if err != nil {
return nil, nil, nil, fmt.Errorf("failed to load: expand input %q: %w", name, err)
}
err = inputs[name].Assign(res)
if err != nil {
return nil, nil, nil, fmt.Errorf("failed to load: assign input %q: %w", name, err)
}
}
env := map[string]string{}
for k, v := range s.stepReference.Env {
res, err := expression.ExpandString(stepsCtx.View(), v)
if err != nil {
return nil, nil, nil, fmt.Errorf("failed to load: env %q: %w", k, err)
}
env[k] = res
}
params := &Params{
Inputs: inputs,
Env: stepsCtx.EnvWithLexicalScope(env).Values(),
}
step, err := s.parser.Parse(stepsCtx.globalCtx, specDef, params, NewNamedStepReference(s.stepReference.Name, s.stepReference.Step))
if err != nil {
return nil, nil, nil, fmt.Errorf("failed to load: %w", err)
}
return step, params, specDef, nil
}