func ArtifactCreator()

in command-runner/pkg/features/artifact_creator.go [18:50]


func ArtifactCreator(artifactDir string, bindToPath string, envToSet string) runner.Feature {
	return func(ctx context.Context, plan runner.Plan, e runner.PlanExecutor) error {
		log.Ctx(ctx).Debug().Msg("ENTER ArtifactCreator")
		if err := os.MkdirAll(artifactDir, 0755); err != nil {
			return err
		}
		envCfg := plan.EnvironmentConfiguration()
		if envCfg.Env == nil {
			envCfg.Env = make(map[string]string)
		}
		if envToSet != "" {
			if bindToPath != "" {
				envCfg.Env[envToSet] = bindToPath
			} else {
				envCfg.Env[envToSet] = artifactDir
			}
		}
		if bindToPath != "" {
			envCfg.FileMaps = append(envCfg.FileMaps, &runner.FileMap{
				SourcePath: artifactDir,
				TargetPath: bindToPath,
				Type:       runner.FileMapTypeBind,
			})
		}

		err := e(ctx)
		if zipErr := newArtifactZipper(artifactDir)(ctx); zipErr != nil {
			log.Ctx(ctx).Error().Err(zipErr).Msgf("unable to zip artifact")
		}
		log.Ctx(ctx).Debug().Msg("EXIT ArtifactCreator")
		return err
	}
}