package build import ( "context" "fmt" "io" "os" "gitea.maximumdirect.net/eric/ReleaseKit/internal/candidate" "gitea.maximumdirect.net/eric/ReleaseKit/internal/tempdir" ) func CandidateCallback(spec *Spec, output io.Writer) func(context.Context, candidate.Candidate) error { if spec == nil || len(spec.Targets) == 0 { return nil } selected := *spec selected.Targets = append([]Target(nil), spec.Targets...) return func(ctx context.Context, captured candidate.Candidate) error { temporaryDir, err := tempdir.Outside(captured.RepositoryDir, "releasekit-candidate-build-") if err != nil { return fmt.Errorf("create temporary candidate build output: %w", err) } defer os.RemoveAll(temporaryDir) _, err = Build(ctx, Request{ RepositoryDir: captured.RepositoryDir, Version: captured.Version, Spec: selected, OutputDir: temporaryDir, Output: output, }) if err != nil { return fmt.Errorf("build candidate: %w", err) } return nil } }