diff options
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/album.source.sh | 137 |
1 files changed, 93 insertions, 44 deletions
diff --git a/src/lib/album.source.sh b/src/lib/album.source.sh index 00fd327..625d33a 100644 --- a/src/lib/album.source.sh +++ b/src/lib/album.source.sh @@ -850,54 +850,103 @@ count_tree_files() { find "$dir" -type f -name "$name" | wc -l } +_collect_generation_metadata() { + local -r tarball_file="$1"; shift + + declare -gA _GENERATION_METADATA=() + _GENERATION_METADATA["generator_name"]='shuriken' + _GENERATION_METADATA["generator_version"]="$VERSION" + _GENERATION_METADATA["generated_at"]=$(current_timestamp_iso) + _GENERATION_METADATA["config_source"]="${SHURIKEN_CONFIG_SOURCE:-}" + _GENERATION_METADATA["template_name"]=$(basename "$TEMPLATE_DIR") + _GENERATION_METADATA["template_directory"]="$TEMPLATE_DIR" + _GENERATION_METADATA["source_incoming_dir"]="$INCOMING_DIR" + _GENERATION_METADATA["source_image_count"]=$(count_incoming_images) + _GENERATION_METADATA["generated_photo_count"]=$(count_files "$DIST_DIR/photos") + _GENERATION_METADATA["generated_thumb_count"]=$(count_files "$DIST_DIR/thumbs") + _GENERATION_METADATA["generated_html_count"]=$( + count_tree_files "$DIST_DIR" '*.html' + ) + _GENERATION_METADATA["tarball_included"]="${TARBALL_INCLUDE:-no}" + _GENERATION_METADATA["tarball_file"]="$tarball_file" + _GENERATION_METADATA["settings_title"]="${TITLE:-}" + _GENERATION_METADATA["settings_height"]="${HEIGHT:-}" + _GENERATION_METADATA["settings_thumbheight"]="${THUMBHEIGHT:-}" + _GENERATION_METADATA["settings_maxpreviews"]="${MAXPREVIEWS:-}" + _GENERATION_METADATA["settings_image_jobs"]="${IMAGE_JOBS:-}" + _GENERATION_METADATA["settings_random_seed"]="${RANDOM_SEED:-}" + _GENERATION_METADATA["settings_shuffle"]="${SHUFFLE:-no}" + _GENERATION_METADATA["settings_splash_page"]="${SPLASH_PAGE:-yes}" + _GENERATION_METADATA["settings_original_basepath"]="${ORIGINAL_BASEPATH:-}" +} + +_generation_metadata_json() { + printf '{\n' + printf ' "generator": {\n' + printf ' "name": %s,\n' \ + "$(_json_string "${_GENERATION_METADATA["generator_name"]}")" + printf ' "version": %s\n' \ + "$(_json_string "${_GENERATION_METADATA["generator_version"]}")" + printf ' },\n' + printf ' "generated_at": %s,\n' \ + "$(_json_string "${_GENERATION_METADATA["generated_at"]}")" + printf ' "config_source": %s,\n' \ + "$(_json_string "${_GENERATION_METADATA["config_source"]}")" + printf ' "template": {\n' + printf ' "name": %s,\n' \ + "$(_json_string "${_GENERATION_METADATA["template_name"]}")" + printf ' "directory": %s\n' \ + "$(_json_string "${_GENERATION_METADATA["template_directory"]}")" + printf ' },\n' + printf ' "source": {\n' + printf ' "incoming_dir": %s,\n' \ + "$(_json_string "${_GENERATION_METADATA["source_incoming_dir"]}")" + printf ' "image_count": %s\n' \ + "${_GENERATION_METADATA["source_image_count"]}" + printf ' },\n' + printf ' "generated": {\n' + printf ' "photo_count": %s,\n' \ + "${_GENERATION_METADATA["generated_photo_count"]}" + printf ' "thumb_count": %s,\n' \ + "${_GENERATION_METADATA["generated_thumb_count"]}" + printf ' "html_count": %s\n' \ + "${_GENERATION_METADATA["generated_html_count"]}" + printf ' },\n' + printf ' "tarball": {\n' + printf ' "included": %s,\n' \ + "$(_json_bool "${_GENERATION_METADATA["tarball_included"]}")" + printf ' "file": %s\n' \ + "$(_json_string "${_GENERATION_METADATA["tarball_file"]}")" + printf ' },\n' + printf ' "settings": {\n' + printf ' "title": %s,\n' \ + "$(_json_string "${_GENERATION_METADATA["settings_title"]}")" + printf ' "height": %s,\n' \ + "$(_json_string "${_GENERATION_METADATA["settings_height"]}")" + printf ' "thumbheight": %s,\n' \ + "$(_json_string "${_GENERATION_METADATA["settings_thumbheight"]}")" + printf ' "maxpreviews": %s,\n' \ + "$(_json_string "${_GENERATION_METADATA["settings_maxpreviews"]}")" + printf ' "image_jobs": %s,\n' \ + "$(_json_string "${_GENERATION_METADATA["settings_image_jobs"]}")" + printf ' "random_seed": %s,\n' \ + "$(_json_string "${_GENERATION_METADATA["settings_random_seed"]}")" + printf ' "shuffle": %s,\n' \ + "$(_json_bool "${_GENERATION_METADATA["settings_shuffle"]}")" + printf ' "splash_page": %s,\n' \ + "$(_json_bool "${_GENERATION_METADATA["settings_splash_page"]}")" + printf ' "original_basepath": %s\n' \ + "$(_json_string "${_GENERATION_METADATA["settings_original_basepath"]}")" + printf ' }\n' + printf '}\n' +} + write_generation_metadata() { local -r tarball_file="$1"; shift - local -r generated_at=$(current_timestamp_iso) - local -r config_source="${SHURIKEN_CONFIG_SOURCE:-}" - local -r template_name=$(basename "$TEMPLATE_DIR") - local -r source_image_count=$(count_incoming_images) - local -r generated_photo_count=$(count_files "$DIST_DIR/photos") - local -r generated_thumb_count=$(count_files "$DIST_DIR/thumbs") - local -r generated_html_count=$(count_tree_files "$DIST_DIR" '*.html') + _collect_generation_metadata "$tarball_file" { - printf '{\n' - printf ' "generator": {\n' - printf ' "name": "shuriken",\n' - printf ' "version": %s\n' "$(_json_string "$VERSION")" - printf ' },\n' - printf ' "generated_at": %s,\n' "$(_json_string "$generated_at")" - printf ' "config_source": %s,\n' "$(_json_string "$config_source")" - printf ' "template": {\n' - printf ' "name": %s,\n' "$(_json_string "$template_name")" - printf ' "directory": %s\n' "$(_json_string "$TEMPLATE_DIR")" - printf ' },\n' - printf ' "source": {\n' - printf ' "incoming_dir": %s,\n' "$(_json_string "$INCOMING_DIR")" - printf ' "image_count": %s\n' "$source_image_count" - printf ' },\n' - printf ' "generated": {\n' - printf ' "photo_count": %s,\n' "$generated_photo_count" - printf ' "thumb_count": %s,\n' "$generated_thumb_count" - printf ' "html_count": %s\n' "$generated_html_count" - printf ' },\n' - printf ' "tarball": {\n' - printf ' "included": %s,\n' "$(_json_bool "${TARBALL_INCLUDE:-no}")" - printf ' "file": %s\n' "$(_json_string "$tarball_file")" - printf ' },\n' - printf ' "settings": {\n' - printf ' "title": %s,\n' "$(_json_string "${TITLE:-}")" - printf ' "height": %s,\n' "$(_json_string "${HEIGHT:-}")" - printf ' "thumbheight": %s,\n' "$(_json_string "${THUMBHEIGHT:-}")" - printf ' "maxpreviews": %s,\n' "$(_json_string "${MAXPREVIEWS:-}")" - printf ' "image_jobs": %s,\n' "$(_json_string "${IMAGE_JOBS:-}")" - printf ' "random_seed": %s,\n' "$(_json_string "${RANDOM_SEED:-}")" - printf ' "shuffle": %s,\n' "$(_json_bool "${SHUFFLE:-no}")" - printf ' "splash_page": %s,\n' "$(_json_bool "${SPLASH_PAGE:-yes}")" - printf ' "original_basepath": %s\n' \ - "$(_json_string "${ORIGINAL_BASEPATH:-}")" - printf ' }\n' - printf '}\n' + _generation_metadata_json } > "$DIST_DIR/shuriken.json" } |
