summaryrefslogtreecommitdiff
path: root/src/lib/action.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/action.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/action.source.sh')
-rw-r--r--src/lib/action.source.sh17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/lib/action.source.sh b/src/lib/action.source.sh
index a038fa7..b0460f0 100644
--- a/src/lib/action.source.sh
+++ b/src/lib/action.source.sh
@@ -143,6 +143,23 @@ load_configured_action() {
export SHURIKEN_CONFIG_SOURCE
}
+# Log the effective configuration for a configured action (verbose mode).
+#
+# Deliberately NOT derived from CONFIG_SPECS (task mr0, consumer 5). The registry
+# is the single source of truth for the config SCHEMA -- defaults, CLI
+# overridability, validation, and print_config formatting all derive from it, so
+# there is no competing source of truth for those facts. This log, by contrast,
+# is bespoke human-facing PROSE: a curated subset of fields (not all 25), each
+# with its own label ("Effective incoming directory:"), per-field decoration
+# (the "s" suffix on the *_TIMEOUT seconds, the "(bundled default)" placeholder
+# for an empty FAVICON), and two values that are NOT config variables at all
+# (the resolved rc_file path and SHURIKEN_FORCE_GENERATE). Encoding all that in a
+# registry facet would mean a per-field label string plus format directives plus
+# an in/out flag -- contorting the schema and harming readability for no DRY win,
+# since these strings appear exactly once. So formatting stays hand-written here;
+# the config VALUES it reads ($INCOMING_DIR, $SPLASH_PAGE, ...) are the canonical
+# globals, which apply_config_defaults already populates from CONFIG_SPECS.
+# Output is asserted byte-for-byte by the effective-config log tests.
log_configured_action() {
local -r rc_file="$1"; shift