dfg_3dviewer_drupal_module/scripts/convert_multiple.sh
2026-06-25 09:09:16 +02:00

76 lines
1.8 KiB
Bash

#!/usr/bin/env bash
set -uo pipefail
######################################
# Config
######################################
LOG_FILE="convert_$(date +%Y-%m-%d_%H-%M-%S).log"
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
FILES_LIST="$SCRIPT_DIR/convert_files.txt"
[[ -f $FILES_LIST ]] || { echo "Missing file: $FILES_LIST"; exit 1; }
while IFS= read -r line || [[ -n "$line" ]]; do
[[ -z "$line" || "$line" =~ ^[[:space:]]*# ]] && continue
FILES+=("$line")
done < "$FILES_LIST"
[[ ${#FILES[@]} -eq 0 ]] && {
echo "No files to process."
exit 1
}
######################################
# Logging helper
######################################
log() {
echo "[$(date '+%F %T')] $*"
}
######################################
# Start
######################################
echo "Conversion started: $(date)" | tee -a "$LOG_FILE"
echo "Log: $LOG_FILE" | tee -a "$LOG_FILE"
echo | tee -a "$LOG_FILE"
FAILED=()
SUCCESS=()
for file in "${FILES[@]}"; do
START=$(date +%s)
log "Start: $file" | tee -a "$LOG_FILE"
if "$SCRIPT_DIR/convert.sh" \
--input "$file" \
--compression true \
--compression-level 3 \
--binary true \
--force false \
2>&1 | tee -a "$LOG_FILE"
then
log "OK: $file" | tee -a "$LOG_FILE"
SUCCESS+=("$file")
else
log "FAIL: $file" | tee -a "$LOG_FILE"
FAILED+=("$file")
fi
END=$(date +%s)
log "$((END-START))s"
echo | tee -a "$LOG_FILE"
done
######################################
# Summary
######################################
echo "================ SUMMARY ================" | tee -a "$LOG_FILE"
log "Success: ${#SUCCESS[@]}" | tee -a "$LOG_FILE"
log "Errors: ${#FAILED[@]}" | tee -a "$LOG_FILE"
if (( ${#FAILED[@]} )); then
echo "Failed files:" | tee -a "$LOG_FILE"
printf ' - %s\n' "${FAILED[@]}" | tee -a "$LOG_FILE"
fi
echo "End: $(date)" | tee -a "$LOG_FILE"