Générer un fichier de commandes SVN et GIT pour l’installation d’un ensemble de plugins à partir de ceux d’un SPIP existant

But du script : à partir du répertoire des plugins d’un SPIP existant, générer un script sh qui permet l’installation (par svn checkout... et git clone...) des même plugins dans un autre SPIP.

, par clem

Pour le détail de la construction de la commande sed (qui est le truc compliqué de l’affaire...) voir :
http://www.commentcamarche.net/faq/...

  1. #!/bin/bash
  2. #
  3. # générer un sh avec les "svn checkout" ou "git clone" de tous les plugins d'un SPIP
  4. #
  5. # chaque ligne du fichier généré est de la forme:
  6. # svn co  svn://zone.spip.org/spip-zone/_plugins_/nom_plugin nom_plugin
  7. # ou
  8. # git clone https://github.com/nom_repo/nom_plugin.git nom_plugin
  9. #
  10. # ce fichier sera lancé dans le rep plugins/ d'un SPIP que l'on veut munir des mêmes plugins
  11. #
  12.  
  13. # chemin du répertoire des plugins du SPIP
  14. REP_PLUGINS=/var/www/mon_spip/plugins
  15.  
  16. # chemin du fichier sh à créer
  17. FICHIER_SH=./dupliquer_plugins.sh
  18. # initialiser le fichier
  19. echo "# commandes des plugins a installer" > $FICHIER_SH
  20.  
  21. for i in `ls $REP_PLUGINS`; do
  22.   if [ -d  $REP_PLUGINS/$i/.svn ]; then
  23.     svn info $REP_PLUGINS/$i |sed -r -n '/^URL.?:/{h;G;s/\n/ /;s/URL.?:/svn co/1;s/\/trunk$//;s/\/branches\/[^\/]*$//;s/URL.*\///;p}' >> $FICHIER_SH
  24.   fi
  25.   if [ -d  $REP_PLUGINS/$i/.git ]; then
  26.     grep "url"  $REP_PLUGINS/$i/.git/config |sed 's/.*url = /git clone /;s/.*\/\([^\/]*\).git$/\0 \1/' >> $FICHIER_SH
  27.   fi
  28. done
  29.  
  30. # passer le fichier sh en executable
  31. chmod +x $FICHIER_SH

Télécharger

Une fois ce script lancé, on récupère le fichier dupliquer_plugins.sh généré dont le contenu ressemblera à :

  1. svn co svn://zone.spip.org/spip-zone/_plugins_/acces_restreint/trunk acces_restreint
  2. svn co svn://zone.spip.org/spip-zone/_plugins_/adaptive_images/trunk adaptive_images
  3. git clone https://github.com/nursit/home.git home
  4. svn co svn://zone.spip.org/spip-zone/_plugins_/agenda/trunk agenda
  5. svn co svn://zone.spip.org/spip-zone/_plugins_/alias alias
  6. git clone https://github.com/nursit/bank.git bank
  7. ...

Télécharger

Il ne reste plus qu’a transférer ce fichier dans le répertoire plugins/ du nouveau SPIP, et le lancer en ligne de commande pour avoir les mêmes plugins installés.
On peut également décider de supprimer un certain nombre de lignes correspondantes aux plugins que l’on ne souhaite pas installer.

TODO :

  • ajouter la récupération de la branch git en cours : cf https://stackoverflow.com/a/11868440
    1. git rev-parse --abbrev-ref HEAD
    2. ou
    3. git status | head -1

    Télécharger

    et intégrer l’appel de branche dans le git clone :

    1. git clone --branche xxxx url

Alternative si vos plugins ne sont pas installés en ligne de commande :
voir l’astuce d’Eliaz blog : Migrer facilement ses plugins d’un SPIP à un autre