Le script Smart-Paquets actuel

, par _Eric_, denisb

Introduction

Smart-Paquets n’est pas une extension SPIP à proprement parlé, mais un script lancé manuellement ou régulièrement via une tache cron. L’objectif de cet outil est de générer les archives zip d’une liste de contributions gérées dans un dépôt SVN.

Aujourd’hui, Smart-Paquets est principalement utilisé sur SPIP-Zone pour les archives des contributions listées dans le fichier archivelist.txt
et pour les archives des versions stables et en développement de SPIP.

Fonctionnement

Le script d’empaquetage
Le script PHP, empaqueteur.php, est le point d’entrée unique de l’outil. Ce script accepte 4 arguments qui sont :

  • l’url du dépôt SVN
  • le répertoire où seront extraits (check-out SVN) les fichiers des contributions à archiver
  • l’email du webmestre qui recevra les rapports de génération
  • l’email de l’émetteur

Cette liste d’arguments est une limitation en regard du prototype de la fonction appelée, empaqueteur() qui autorise d’autres paramètres comme le nom du listing des archives, le nom du fichier xml des contributions... :

Le lancement du script
Smart-Paquets peut être soit lancé manuellement, soit régulièrement par l’intermédiaire de taches cron - ce qui est le cas pour le dépôt SVN de SPIP-Zone. L’outil propose des bash par défaut qui sont en fait ceux utilisés sur SPIP-Zone, à savoir :

  • cron-paquets.sh pour générer une fois par jour l’ensemble des archives des contributions et versions SPIP
  • cron-paquets-00.sh pour générer une fois par heure à 00 les archives des contributions SPIP
  • cron-paquets-30.sh pour générer une fois par heure à 30 les archives des versions SPIP

Ces bash sont fournis à titre d’exemple et doivent être adaptés pour être utilisés sur d’autres dépôts.

L’enchainement des actions
La fonction d’empaquetage déroule les étapes suivantes dans l’ordre :

  1. Création des répertoires de travail - répertoire de check-out, répertoire des paquets, répertoire temporaire. Cette opération n’est effectuée qu’une fois.
  2. Préparation des sources à archiver dans le répertoire dédié. Cette opération peut revêtir deux formes différentes, à savoir :
    • soit un check-out des sources du dépôt SVN. Cette opération n’est faite qu’une fois si le dossier n’existe pas encore.
    • soit un update des sources déjà extraits.
  3. Lecture du fichier archivelist.txt et création du tableau des paquets à archiver.
  4. Pour chaque paquet à créer :
    • création du fichier svn.revision
    • construction du zip incluant le fichier svn.revision
  5. Suppression des paquets obsolètes issus de la génération précédente
  6. Génération du fichier archives.xml