#!/bin/bash manifestCollect() { local app_name="$1" local app_dir="$containers_dir$app_name" local libreportal_commit libreportal_commit=$(git -C "${install_scripts_dir%/scripts/}" rev-parse --short HEAD 2>/dev/null || echo "unknown") local compose_file="" for candidate in "$app_dir/docker-compose.yml" "$app_dir/compose.yml"; do [[ -f "$candidate" ]] && compose_file="$candidate" && break done local compose_hash="unknown" [[ -n "$compose_file" ]] && compose_hash=$(sha256sum "$compose_file" 2>/dev/null | cut -d' ' -f1) local images_json="[]" if [[ -n "$compose_file" ]]; then local images=() while IFS= read -r line; do local img img=$(echo "$line" | sed -E 's/^[[:space:]]*image:[[:space:]]*["'\'']?([^"'\'' ]+)["'\'']?.*/\1/') [[ -n "$img" ]] && images+=("\"$img\"") done < <(grep -E '^[[:space:]]+image:' "$compose_file" 2>/dev/null) if [[ ${#images[@]} -gt 0 ]]; then images_json="[$(IFS=,; echo "${images[*]}")]" fi fi local volumes_json="[]" if [[ -d "$app_dir" ]]; then local vols=() while IFS= read -r d; do [[ -n "$d" ]] && vols+=("\"$(basename "$d")\"") done < <(find "$app_dir" -mindepth 1 -maxdepth 1 -type d 2>/dev/null) if [[ ${#vols[@]} -gt 0 ]]; then volumes_json="[$(IFS=,; echo "${vols[*]}")]" fi fi local size_bytes size_bytes=$(sudo du -sb "$app_dir" 2>/dev/null | awk '{print $1}') [[ -z "$size_bytes" ]] && size_bytes=0 local file_count file_count=$(sudo find "$app_dir" -type f 2>/dev/null | wc -l | tr -d ' ') cat <