summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-06-13 10:04:15 +0300
committerPaul Buetow <paul@buetow.org>2026-06-13 10:04:15 +0300
commite9437367b8fc7a4cb0ffed6c0a8ba89356a3b9ad (patch)
tree70c10195c1ad8c435e0d09faaab89b96afa0fc18 /src
parentdfcb18a189da91885172a9323a08a0d235432c5f (diff)
dm0: split dry-run planning from output
Diffstat (limited to 'src')
-rw-r--r--src/lib/album.source.sh134
1 files changed, 93 insertions, 41 deletions
diff --git a/src/lib/album.source.sh b/src/lib/album.source.sh
index 6043fe0..beec5fd 100644
--- a/src/lib/album.source.sh
+++ b/src/lib/album.source.sh
@@ -1059,68 +1059,120 @@ refresh_splash() {
}
dry_run() {
- local -i image_count=0
- local -i html_index_count=1
+ # shellcheck disable=SC2034
+ local -A dry_run_plan=()
+
+ collect_dry_run_plan dry_run_plan
+ print_dry_run_plan dry_run_plan
+}
+
+collect_dry_run_page_plan() {
+ local -r plan_name="$1"; shift
+ # shellcheck disable=SC2178
+ local -n plan_ref="$plan_name"
+ local -r image_count="$1"; shift
local -i page_count=0
local -i redirect_count=0
- local -i details_count=0
- image_count=$(count_incoming_images)
+ plan_ref["html_index_count"]=1
+ plan_ref["page_count"]=0
+ plan_ref["redirect_count"]=0
+ plan_ref["details_count"]=0
if (( image_count > 0 )); then
- details_count=$image_count
page_count=$(( (image_count + MAXPREVIEWS - 1) / MAXPREVIEWS ))
redirect_count=$(( page_count * 4 + 2 ))
+ plan_ref["details_count"]="$image_count"
+ plan_ref["page_count"]="$page_count"
+ plan_ref["redirect_count"]="$redirect_count"
fi
+}
+
+collect_dry_run_plan() {
+ local -r plan_name="$1"; shift
+ # shellcheck disable=SC2178
+ local -n plan_ref="$plan_name"
+ local -i image_count=0
+
+ image_count=$(count_incoming_images)
+ plan_ref=()
+ plan_ref["config_source"]="$SHURIKEN_CONFIG_SOURCE"
+ plan_ref["incoming_dir"]="$INCOMING_DIR"
+ plan_ref["dist_dir"]="$DIST_DIR"
+ plan_ref["template_dir"]="$TEMPLATE_DIR"
+ plan_ref["title"]="$TITLE"
+ plan_ref["height"]="$HEIGHT"
+ plan_ref["thumbheight"]="$THUMBHEIGHT"
+ plan_ref["maxpreviews"]="$MAXPREVIEWS"
+ plan_ref["image_jobs"]="$IMAGE_JOBS"
+ plan_ref["random_seed"]="$RANDOM_SEED"
+ plan_ref["shuffle"]="$SHUFFLE"
+ plan_ref["splash_page"]="$SPLASH_PAGE"
+ plan_ref["image_count"]="$image_count"
+ plan_ref["tarball_include"]="$TARBALL_INCLUDE"
+ plan_ref["tarball_name_plan"]='not planned'
- printf 'Dry run: no files will be written.\n'
- printf 'Config source: %s\n' "$SHURIKEN_CONFIG_SOURCE"
- printf 'Incoming directory: %s\n' "$INCOMING_DIR"
- printf 'Output directory: %s\n' "$DIST_DIR"
- printf 'Template directory: %s\n' "$TEMPLATE_DIR"
- printf 'Title: %s\n' "$TITLE"
- printf 'Height: %s\n' "$HEIGHT"
- printf 'Thumb height: %s\n' "$THUMBHEIGHT"
- printf 'Max previews per page: %s\n' "$MAXPREVIEWS"
- printf 'Image jobs: %s\n' "$IMAGE_JOBS"
- printf 'Random seed: %s\n' "$RANDOM_SEED"
- printf 'Shuffle: %s\n' "$SHUFFLE"
- printf 'Splash page: %s\n' "$SPLASH_PAGE"
- printf 'Image count: %s\n' "$image_count"
- printf 'Tarball setting: %s\n' "$TARBALL_INCLUDE"
if [ "$TARBALL_INCLUDE" = yes ]; then
- printf 'Tarball name plan: %s\n' "$(tarball_name_plan)"
- else
- printf 'Tarball name plan: not planned\n'
+ plan_ref["tarball_name_plan"]=$(tarball_name_plan)
fi
+ collect_dry_run_page_plan "$plan_name" "$image_count"
+}
+
+print_dry_run_plan() {
+ local -r plan_name="$1"; shift
+ # shellcheck disable=SC2178
+ local -n plan_ref="$plan_name"
+
+ printf 'Dry run: no files will be written.\n'
+ printf 'Config source: %s\n' "${plan_ref["config_source"]}"
+ printf 'Incoming directory: %s\n' "${plan_ref["incoming_dir"]}"
+ printf 'Output directory: %s\n' "${plan_ref["dist_dir"]}"
+ printf 'Template directory: %s\n' "${plan_ref["template_dir"]}"
+ printf 'Title: %s\n' "${plan_ref["title"]}"
+ printf 'Height: %s\n' "${plan_ref["height"]}"
+ printf 'Thumb height: %s\n' "${plan_ref["thumbheight"]}"
+ printf 'Max previews per page: %s\n' "${plan_ref["maxpreviews"]}"
+ printf 'Image jobs: %s\n' "${plan_ref["image_jobs"]}"
+ printf 'Random seed: %s\n' "${plan_ref["random_seed"]}"
+ printf 'Shuffle: %s\n' "${plan_ref["shuffle"]}"
+ printf 'Splash page: %s\n' "${plan_ref["splash_page"]}"
+ printf 'Image count: %s\n' "${plan_ref["image_count"]}"
+ printf 'Tarball setting: %s\n' "${plan_ref["tarball_include"]}"
+ printf 'Tarball name plan: %s\n' "${plan_ref["tarball_name_plan"]}"
+
printf 'Planned directories:\n'
- printf ' %s\n' "$DIST_DIR"
- printf ' %s/photos\n' "$DIST_DIR"
- printf ' %s/thumbs\n' "$DIST_DIR"
- printf ' %s/blurs\n' "$DIST_DIR"
+ printf ' %s\n' "${plan_ref["dist_dir"]}"
+ printf ' %s/photos\n' "${plan_ref["dist_dir"]}"
+ printf ' %s/thumbs\n' "${plan_ref["dist_dir"]}"
+ printf ' %s/blurs\n' "${plan_ref["dist_dir"]}"
printf 'Planned generated files:\n'
- if [ "$SPLASH_PAGE" = yes ]; then
+ if [ "${plan_ref["splash_page"]}" = yes ]; then
printf ' %s/index.html (%s splash page)\n' \
- "$DIST_DIR" "$html_index_count"
+ "${plan_ref["dist_dir"]}" "${plan_ref["html_index_count"]}"
else
printf ' %s/index.html (%s album index redirect)\n' \
- "$DIST_DIR" "$html_index_count"
+ "${plan_ref["dist_dir"]}" "${plan_ref["html_index_count"]}"
fi
- printf ' %s/favicon.ico\n' "$DIST_DIR"
- printf ' %s/shuriken.json\n' "$DIST_DIR"
- printf ' %s/photos/* (%s image files)\n' "$DIST_DIR" "$image_count"
- printf ' %s/thumbs/* (%s image files)\n' "$DIST_DIR" "$image_count"
- printf ' %s/blurs/* (%s image files)\n' "$DIST_DIR" "$image_count"
- printf ' %s/page-*.html (%s preview pages)\n' "$DIST_DIR" "$page_count"
+ printf ' %s/favicon.ico\n' "${plan_ref["dist_dir"]}"
+ printf ' %s/shuriken.json\n' "${plan_ref["dist_dir"]}"
+ printf ' %s/photos/* (%s image files)\n' \
+ "${plan_ref["dist_dir"]}" "${plan_ref["image_count"]}"
+ printf ' %s/thumbs/* (%s image files)\n' \
+ "${plan_ref["dist_dir"]}" "${plan_ref["image_count"]}"
+ printf ' %s/blurs/* (%s image files)\n' \
+ "${plan_ref["dist_dir"]}" "${plan_ref["image_count"]}"
+ printf ' %s/page-*.html (%s preview pages)\n' \
+ "${plan_ref["dist_dir"]}" "${plan_ref["page_count"]}"
printf ' %s/[page]-[image].html (%s view pages)\n' \
- "$DIST_DIR" "$image_count"
+ "${plan_ref["dist_dir"]}" "${plan_ref["image_count"]}"
printf ' %s/[page]-[image]-details.html (%s details pages)\n' \
- "$DIST_DIR" "$details_count"
+ "${plan_ref["dist_dir"]}" "${plan_ref["details_count"]}"
printf ' %s/[redirect].html (%s navigation redirects)\n' \
- "$DIST_DIR" "$redirect_count"
- if [ "$TARBALL_INCLUDE" = yes ]; then
- printf ' %s/%s\n' "$DIST_DIR" "$(tarball_name_plan)"
+ "${plan_ref["dist_dir"]}" "${plan_ref["redirect_count"]}"
+ if [ "${plan_ref["tarball_include"]}" = yes ]; then
+ printf ' %s/%s\n' \
+ "${plan_ref["dist_dir"]}" "${plan_ref["tarball_name_plan"]}"
fi
}