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ère un sh avec les "git clone" de tous les plugins d'un SPIP
  4. #
  5. # chaque ligne du fichier générée est de la forme:
  6. # git clone https://github.com/nom_repo/nom_plugin.git nom_plugin
  7. #
  8. # ce fichier sera lancé dans le rep plugins/ d'un SPIP
  9. #
  10.  
  11. # chemin du répertoire des plugins du SPIP
  12. REP_PLUGINS=./
  13.  
  14. # chemin du fichier sh à  créer
  15. FICHIER_SH=./dupliquer_plugins.sh
  16. # initialiser le fichier
  17. echo "# commandes des plugins a installer" > $FICHIER_SH
  18.  
  19. for i in `ls $REP_PLUGINS`; do
  20.   if [ -d  $REP_PLUGINS/$i/.git ]; then
  21.     grep "url"  $REP_PLUGINS/$i/.git/config |sed 's/.*url = /git clone /;s/.*\/\([^\/]*\).git$/\0 \1/' >>>
  22.   fi
  23. done
  24.  
  25. # passer le fichier sh en executable
  26. chmod +x $FICHIER_SH

Télécharger

Une fois ce script lancé en étant dans le sous dossier `plugins`, 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