Correct the Vaultik.UI doc comment about --cron (closes #84)
All checks were successful
check / check (pull_request) Successful in 2m59s

The field comment claimed the cli layer replaces the UI writer with a
discarding writer in --cron mode. It does not: the writer is created
once as ui.New(os.Stdout) and never reassigned, and setupGlobals calls
UI.SetQuiet(true) instead. Quiet mode drops Begin, Complete, Info,
Notice, Detail, Progress, and Banner, but Warningf and Errorf have no
quiet check and always emit, so --cron does not make the writer silent.

The README's --cron bullet had the adjacent understatement ("Silent
unless error"), and now names warnings as well.

Comments and documentation only; no behavior change.
This commit is contained in:
2026-08-09 05:37:23 +00:00
parent 50e20b460e
commit dcf3dd3756
3 changed files with 18 additions and 4 deletions

View File

@@ -168,7 +168,8 @@ needed.
(System Settings → Privacy & Security → Full Disk Access) to read
TCC-protected directories; without it the backup aborts with a permission
error that explains how to fix it
* `--cron`: Silent unless error (for crontab)
* `--cron`: Silent on total success; warnings and errors are still printed
(for crontab)
* `--prune`: After backup, drop older snapshots of each backed-up name and
remove orphaned blobs from remote storage. By default keeps only the latest
snapshot per name; use `--keep-newer-than` for a rolling window.

10
TODO.md
View File

@@ -19,6 +19,16 @@ or delete the branch.
# Completed Steps
- 2026-08-09: Corrected the `Vaultik.UI` doc comment (issue #84). It
claimed the cli layer replaces the writer with a discarding one in
`--cron` mode; the actual mechanism is `UI.SetQuiet(true)` in
`setupGlobals`, which drops Begin/Complete/Info/Notice/Detail/
Progress/Banner but still emits Warning and Error. The `--cron` line
in `README.md` said "Silent unless error", which understated what
survives, and now names warnings too. The other `--cron` comments
(`internal/log/log.go`, `internal/cli/snapshot.go`,
`internal/vaultik/snapshot.go`) were audited and already accurate.
Comments and docs only, no behavior change.
- 2026-08-09: Made `snapshot list` list the destination store without
the private key (issue #64). The listing is now the union of the
local index and a single streamed listing of the `metadata/` prefix,

View File

@@ -49,9 +49,12 @@ type Vaultik struct {
Stdin io.Reader
// UI is the writer for user-facing status, progress, warnings, errors.
// See package internal/ui for formatting conventions. Defaults to a
// writer wrapping Stdout; the cli layer replaces it with a discarding
// writer in --cron mode.
// See package internal/ui for formatting conventions. It always wraps
// Stdout and is never swapped out; under --cron (and --quiet) the cli
// layer instead calls UI.SetQuiet(true), which drops Begin, Complete,
// Info, Notice, Detail, Progress, and Banner messages. Warning and
// Error are still emitted in that mode, so callers must not assume
// that --cron makes this writer silent.
UI *ui.Writer
// restoreCacheObserver, if non-nil, is invoked once with the