summaryrefslogtreecommitdiff
path: root/src/lib/dry-run.source.sh
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-06-28 13:49:28 +0300
committerPaul Buetow <paul@buetow.org>2026-06-28 13:49:28 +0300
commitcf889b4cc771d44e36189d6fc09dfa23b2529bfd (patch)
treed5933f455196e4655c2c6fbec00d5412b12d7fca /src/lib/dry-run.source.sh
parent493f8aa11ce49572fa23ac06ebde323b470e1623 (diff)
mr0: finish config consolidation; document bespoke log/dry-run consumers
Consumers 5 (log_configured_action) and 6 (the --dry-run plan) are consciously left bespoke: both are human-facing prose that interleaves a curated subset of config fields (each with its own label and per-field decoration) with non-config values (resolved rc_file path, SHURIKEN_FORCE_GENERATE, computed image/page/redirect counts, planned tarball name, and whole non-config 'Planned directories/files' sections). Driving them from CONFIG_SPECS would require per-line label+format+marker facets that contort the schema for no DRY benefit, since each string appears exactly once. They already read the canonical registry-driven globals, so CONFIG_SPECS remains the single source of truth for the config schema; only the presentation stays hand-written. Added comments to both explaining the decision. No behavior change -- output stays byte-identical (asserted by the effective-config log and dry-run plan tests). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Diffstat (limited to 'src/lib/dry-run.source.sh')
-rw-r--r--src/lib/dry-run.source.sh19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/lib/dry-run.source.sh b/src/lib/dry-run.source.sh
index b02cc23..56244c9 100644
--- a/src/lib/dry-run.source.sh
+++ b/src/lib/dry-run.source.sh
@@ -45,6 +45,25 @@ collect_dry_run_page_plan() {
fi
}
+# Gather every value the dry-run plan reports into an associative array, then
+# hand it to print_dry_run_plan.
+#
+# Deliberately NOT derived from CONFIG_SPECS (task mr0, consumer 6). CONFIG_SPECS
+# stays the single source of truth for the config SCHEMA (defaults, CLI,
+# validation, print_config formatting), and the config VALUES read below
+# ($INCOMING_DIR, $TITLE, $SPLASH_PAGE, ...) are the canonical globals
+# apply_config_defaults already fills from the registry -- so there is no second
+# source of truth for any config fact. But the plan is bespoke human-facing prose
+# that interleaves config with NON-config: derived/computed values (the image,
+# page, redirect and details counts, the planned tarball name, the index-page
+# count) and whole non-config sections ("Planned directories:", "Planned
+# generated files:") that have no registry entry. It also reports only a curated
+# subset of fields, each with its own label and several with bespoke conditional
+# rendering (splash-vs-redirect index line, stats/tarball blocks). Forcing this
+# through a registry facet would need per-line label + format encoding plus markers
+# for the non-config lines, contorting the schema for no DRY benefit (each label
+# appears once). So presentation stays hand-written here; the dry-run plan tests
+# assert the output byte-for-byte.
collect_dry_run_plan() {
local -r plan_name="$1"; shift
# shellcheck disable=SC2178