From 0a69a572ca98abf512a2467dd9ba7de3ccd5ed15 Mon Sep 17 00:00:00 2001 From: Hinne Stolzenberg Date: Mon, 13 Apr 2026 09:48:45 +0200 Subject: [PATCH 1/2] fix: return error from --download-all when downloads fail downloadAllAttachments was returning nil even when individual file downloads failed, causing the CLI to exit 0. Callers (and scripts) had no way to detect partial failures. --- internal/cmd/confluence/page/attachment.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/internal/cmd/confluence/page/attachment.go b/internal/cmd/confluence/page/attachment.go index 2c5a89f..5821168 100644 --- a/internal/cmd/confluence/page/attachment.go +++ b/internal/cmd/confluence/page/attachment.go @@ -324,6 +324,9 @@ func downloadAllAttachments(opts *AttachmentOptions, confluence *api.ConfluenceS } fmt.Fprintf(opts.IO.Out, "\nDownloaded %d of %d attachments to %s\n", len(downloads), len(attachments), opts.OutputDir) + if len(errors) > 0 { + return fmt.Errorf("failed to download %d attachment(s)", len(errors)) + } return nil } From 94cdf733ca88f2c3766e26eff75b4dc461fc6d02 Mon Sep 17 00:00:00 2001 From: Hinne Stolzenberg Date: Mon, 13 Apr 2026 09:58:34 +0200 Subject: [PATCH 2/2] fix: also return error in JSON output path The --json code path returned early before the error check, so download failures with --json still exited 0. Co-authored-by: gemini-code-assist[bot] --- internal/cmd/confluence/page/attachment.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/internal/cmd/confluence/page/attachment.go b/internal/cmd/confluence/page/attachment.go index 5821168..2922bfe 100644 --- a/internal/cmd/confluence/page/attachment.go +++ b/internal/cmd/confluence/page/attachment.go @@ -313,7 +313,13 @@ func downloadAllAttachments(opts *AttachmentOptions, confluence *api.ConfluenceS Downloads: downloads, Errors: errors, } - return output.JSON(opts.IO.Out, result) + if err := output.JSON(opts.IO.Out, result); err != nil { + return err + } + if len(errors) > 0 { + return fmt.Errorf("failed to download %d attachment(s)", len(errors)) + } + return nil } if len(errors) > 0 {