summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/shuriken36
-rw-r--r--src/lib/action.source.sh17
-rw-r--r--src/lib/dry-run.source.sh19
3 files changed, 72 insertions, 0 deletions
diff --git a/bin/shuriken b/bin/shuriken
index 9da619d..b129d70 100755
--- a/bin/shuriken
+++ b/bin/shuriken
@@ -2604,6 +2604,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
@@ -6895,6 +6914,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
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
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