[ID] SCRIPT_NAME: synomap_chain_preview_v1.0.sh PROJECT: SEED_MOVER [ROLE] - Orchestrateur PREVIEW du pipeline synomap, conçu pour enchaîner les trois étapes principales : génération de plan, application séquentielle du plan et nettoyage final côté OMV. - Sert à vérifier la cohérence globale des mappings, des SRC/DST et de l’arborescence sans toucher aux données (aucun write). - Facilite les tests manuels et les validations rapides avant un run complet en mode WRITE. [CONTEXT] - À exécuter sur le serveur OMV où résident tous les scripts seed_mover/synomap. Peut être lancé manuellement ou via cron/systemd. - Environnement requis : /bin/sh + outils POSIX (mkdir, date, grep, rm). Le script ne parle à aucun service extérieur : toute interaction API est déléguée aux sous-scripts. - Charge SYNO_ENV s’il est défini, afin de récupérer MAP_FILE, LIMIT, LOG_DIR ou d’autres paramètres globaux du projet. - Structure des chemins : - PLAN_DIR : sous-dossier local (plans/) pour stocker les plans temporaires. - LOG_DIR : laissé à la charge des sous-scripts (daily/apply/cleanup) qui écrivent leur propre log. - Sous-scripts requis : - daily_qbittorrent_update_v1.32c_synomap.sh (générateur de plan), - synomap_apply_from_plan_v1.2.6.sh (appliqueur de plan), - synomap_cleanup_omv_only_v1.0.sh (nettoyage OMV). - Tous les sous-scripts sont appelés en mode PREVIEW : aucune propagation de --write, aucune opération destructive. [INPUTS] - Arguments CLI : - --limit N : limite les entrées produites par le daily (défaut : 20). - --map-file PATH : fichier mapping_entries à utiliser pour la génération du plan. - --plan-out PATH : emplacement du plan généré (défaut : plans/_auto_plan_.txt). - --keep-plan : conserve le plan au lieu de le supprimer automatiquement. - --no-apply : saute l’étape d’application du plan. - --no-cleanup : saute l’étape de cleanup OMV. - --help : affiche l’aide et quitte. - Variables d’environnement : - SYNO_ENV : permet d’injecter MAP_FILE, LIMIT, LOG_DIR, etc. - MAP_FILE, LIMIT, LOG_DIR : surcharges possibles (priorité CLI > env > défauts script). - Entrées essentielles : - Fichier mapping_entries.txt ou équivalent passé via --map-file. - Permissions suffisantes pour créer PLAN_DIR et écrire le fichier PLAN_OUT. [OUTPUTS] - Plan intermédiaire : fichier texte listant les opérations proposées par le daily (SRC→DST) sans effet réel. Son contenu est directement la sortie du daily. - Résultat de l’appliqueur de plan : appelé sans mode WRITE ; toute sortie est visible sur stdout/stderr. - Résultat du cleanup OMV : appelé en mode PREVIEW si disponible, ou en mode défaut (non destructif tant que --write n’est pas utilisé). - Nettoyage du plan généré : rm plan sauf si --keep-plan est fourni. - Aucune écriture persistante hors du plan éventuellement conservé ; pas de fichier log dédié. [FAILURE_MODES] - Sous-scripts manquants ou non exécutables → [NOK] et exit 2. - MAP_FILE introuvable → [NOK] mapping file not found → exit 2. - Erreur mkdir sur PLAN_DIR ou PLAN_OUT → exit ≠ 0 (set -e). - Échec daily → le plan peut être vide ; l’orchestrateur continue mais signale le problème. - Échec apply ou cleanup : l’orchestrateur n’interrompt pas systématiquement l’exécution (usage de “|| true”), mais la trace d’erreur est affichée. - Échec rm du plan (hors --keep-plan) : message d’avertissement mais script non bloquant. [HISTORIQUE] - Version initiale (v1.0) conçue comme wrapper PREVIEW unifié autour du workflow synomap (circa 2024–2025). - Première itération regroupant daily / apply / cleanup sous un orchestrateur unique. - À COMPLÉTER via historique Git pour évaluer l’introduction d’un mode WRITE et les évolutions potentielles (ex : support sequential_apply v1.6.x).