From f7ce1dcd5630b52e4d74b2aba2db948f67b3581e Mon Sep 17 00:00:00 2001 From: Eric Rakestraw Date: Fri, 4 Sep 2026 00:08:58 +0000 Subject: [PATCH] Simplify previous manifest collection --- internal/stage/publish.go | 44 ++++++++++++++------------------------- 1 file changed, 16 insertions(+), 28 deletions(-) diff --git a/internal/stage/publish.go b/internal/stage/publish.go index 9ee83e2..ad35e7c 100644 --- a/internal/stage/publish.go +++ b/internal/stage/publish.go @@ -111,13 +111,10 @@ func (publishStage) Run(ctx context.Context, env *Env, m *manifest.Manifest) (*S return nil, fmt.Errorf("publish: object store does not support verified source uploads") } sessionPaths := publishSessionPaths(env, m) - previousFiles, previousManifestFile, err := collectPublishPreviousFiles(ctx, sessionPaths.PreviousDir) + previousFiles, err := collectPublishPreviousFiles(ctx, sessionPaths.PreviousDir) if err != nil { return nil, fmt.Errorf("publish: collect previous files: %w", err) } - if previousManifestFile != nil { - defer previousManifestFile.Close() - } previousSources, err := openPublishRunFiles(sessionPaths.PreviousDir, previousFiles) if err != nil { return nil, fmt.Errorf("publish: verify previous files: %w", err) @@ -877,37 +874,33 @@ func collectPublishRunFiles(runRoot string, sessionManifest *manifest.Manifest) return out, nil } -func collectPublishPreviousFiles(ctx context.Context, previousDir string) ([]publishUploadFile, *os.File, error) { +func collectPublishPreviousFiles(ctx context.Context, previousDir string) ([]publishUploadFile, error) { previousDir = filepath.Clean(strings.TrimSpace(previousDir)) if previousDir == "" || previousDir == "." { - return nil, nil, fmt.Errorf("previous directory is required") + return nil, fmt.Errorf("previous directory is required") } info, err := os.Lstat(previousDir) if errors.Is(err, os.ErrNotExist) { - return nil, nil, nil + return nil, nil } if err != nil { - return nil, nil, fmt.Errorf("inspect previous directory: %w", err) + return nil, fmt.Errorf("inspect previous directory: %w", err) } if info.Mode()&os.ModeSymlink != 0 || !info.IsDir() { - return nil, nil, fmt.Errorf("previous directory is not a regular directory") + return nil, fmt.Errorf("previous directory is not a regular directory") } manifestFile, err := openPublishOutputSource(filepath.Join(previousDir, "manifest.json")) if err != nil { if errors.Is(err, os.ErrNotExist) { - return nil, nil, nil + return nil, nil } - return nil, nil, fmt.Errorf("open previous manifest: %w", err) + return nil, fmt.Errorf("open previous manifest: %w", err) } + defer manifestFile.Close() previousManifest, err := (&manifest.LocalStore{}).LoadReader(ctx, manifestFile) if err != nil { - _ = manifestFile.Close() - return nil, nil, fmt.Errorf("load previous manifest: %w", err) - } - if _, err := manifestFile.Seek(0, io.SeekStart); err != nil { - _ = manifestFile.Close() - return nil, nil, fmt.Errorf("rewind previous manifest: %w", err) + return nil, fmt.Errorf("load previous manifest: %w", err) } files := map[string]publishUploadFile{ @@ -934,13 +927,11 @@ func collectPublishPreviousFiles(ctx context.Context, previousDir string) ([]pub } for _, artifact := range previousManifest.Artifacts { if err := add(artifact.ArchivePath, artifact.Checksum); err != nil { - _ = manifestFile.Close() - return nil, nil, err + return nil, err } if artifact.ArchivePath == "" { if err := add(artifact.LocalPath, artifact.Checksum); err != nil { - _ = manifestFile.Close() - return nil, nil, err + return nil, err } } } @@ -950,20 +941,17 @@ func collectPublishPreviousFiles(ctx context.Context, previousDir string) ([]pub } for _, artifact := range record.Outputs { if err := add(artifact.ArchivePath, artifact.Checksum); err != nil { - _ = manifestFile.Close() - return nil, nil, err + return nil, err } if artifact.ArchivePath == "" { if err := add(artifact.LocalPath, artifact.Checksum); err != nil { - _ = manifestFile.Close() - return nil, nil, err + return nil, err } } } for _, path := range append(append([]string(nil), record.Logs...), record.GeneratedConfigs...) { if err := add(path, ""); err != nil { - _ = manifestFile.Close() - return nil, nil, err + return nil, err } } } @@ -972,7 +960,7 @@ func collectPublishPreviousFiles(ctx context.Context, previousDir string) ([]pub out = append(out, file) } sort.Slice(out, func(i, j int) bool { return out[i].RelativePath < out[j].RelativePath }) - return out, manifestFile, nil + return out, nil } func openPublishRunFiles(runRoot string, files []publishUploadFile) ([]*os.File, error) {