func ReplaceVariableHandler()

in codecatalyst-runner/pkg/workflows/replace_variable_handler.go [17:47]


func ReplaceVariableHandler(planOutputs map[string]map[string]string, secrets SecretProvider) runner.Feature {
	replacer := &variableReplacer{
		planOutputs: planOutputs,
		secrets:     secrets,
	}
	return func(ctx context.Context, plan runner.Plan, e runner.PlanExecutor) error {
		log.Ctx(ctx).Debug().Msg("ENTER ReplaceVariableHandler")
		for name, value := range plan.EnvironmentConfiguration().Env {
			var newValue string
			var err error
			if newValue, err = replacer.Replace(ctx, plan, value); err != nil {
				return err
			}
			plan.EnvironmentConfiguration().Env[name] = newValue
		}
		for _, cg := range plan.CommandGroups() {
			for _, command := range cg.Commands {
				for i, commandPart := range command {
					if newValue, err := replacer.Replace(ctx, plan, commandPart); err != nil {
						return err
					} else {
						command[i] = newValue
					}
				}
			}
		}
		err := e(ctx)
		log.Ctx(ctx).Debug().Msg("EXIT ReplaceVariableHandler")
		return err
	}
}