#liste_articles {display:block}
designbyinook

|

Technologies

|

Bouts de codes et développements

|

Script de migration depuis SPIP 1.8.x

 

Script de migration depuis SPIP 1.8.x

Résumé

La méthode de migration d’une version de SPIP 1.8 ou antérieure vers SPIP 1.9 est bien décrite sur le tutoriel du site officiel : Migration vers SPIP 1.9.

Néanmoins cette opération peut s’avérer longue et fastidieuse surtout si le webmaster a en charge plusieurs sites comportant eux mêmes plusieurs jeux de squelettes.

L’objet de cet article est de proposer l’utilisation d’un script bash pour automatiser les remplacements à effectuer dans les squelettes.

Utilisation

Ce script est un script Shell nécessitant une version de Bash > 3.
Il s’éxécute en ligne commande sous Linux ou un émulateur Windows type Cygwin.

Les manipulations suivantes peuvent se faire en local (conseillé) ou sur votre serveur :

1. Avant toute chose, effectuez une copie du dossier contenant votre jeu de squelettes.

2. Enregistrer le script joint dans un répertoire, idéalement le répertoire contenant le répertoire de vos squelettes (racine du site en général).

3. Lancer le script migration4.sh depuis le répertoire en question :

pvincent@pvincent-laptop : $ ./migration4.sh

4. Indiquer le dossier contenant les squelettes :

Indiquer le dossier contenant les squelettes : sq-reseau-v2

Backup du répertoire...

Attention : la sauvegarde existe déjà.
Pour continuer, pressez une touche (la sauvegarde précédente sera écrasée)

5. Les remplacements s’effectuent

0 : remplacement de < *INCLURE *(\(.+\)[.]php3 *)> par [(#INCLUREfond=\1)]

1 : remplacement de < *INCLURE *(\(.+\)[.]php3 *) *\(.+\) *> par [(#INCLUREfond=\1\2)]

...

6. Gestion du cache

Voulez vous conserver le cache, si existant : O\N ?
O

Quelle valeur par défault voulez vous appliquer au cache en secondes (Cache nul : 0) ?
52*3600

7. Exécution de Tidy

Voulez vous éxécuter Tidy (http://www.w3.org/People/Raggett/tidy/)
pour avoir une indication des MAJ de conformité à effectuer
ou des boucles non fermées dans vos squelettes
O/N ?

Travail de Tidy sur sq-sssc/article-forum.html

Presser la touche Entrée pour commencer

line 26 column 49 - Error: unexpected </BOUCLE_mots_forum> in <li>
...

Principe

Les remplacements sont indiqués sous forme de couples d’expressions régulières recherche (rec[xxx]) / remplacement (rep[xxx]).

#Remplacement des INCLURE

        rec[0]='< *INCLURE *(\(.\+\)[.]php3 *)>'
        rep[0]='[(#INCLURE{fond=\1})]'

        rec[1]='< *INCLURE *(\(.\+\)[.]php3 *) *\({.\+}\) *>'
        rep[1]='[(#INCLURE{fond=\1}\2)]'

#Remplacements spécifiques au squelette - ici vierge - à modifier en cas de besoin

#Remplacement des écritures statiques

        rec[4]='article.php3?id_article=#ID_ARTICLE'
        rep[4]='#URL_ARTICLE'

        rec[5]='rubrique.php3?id_rubrique=#ID_RUBRIQUE'
        rep[5]='#URL_RUBRIQUE'

        rec[6]='breve.php3?id_breve=#ID_BREVE'
        rep[6]='#URL_BREVE'

        rec[7]='auteur.php3?id_auteur=#ID_AUTEUR'
        rep[7]='#URL_AUTEUR'

        rec[8]='mot.php3?id_mot=#ID_MOT'
        rep[8]='#URL_MOT'

# Cas d’adressages génériques : remplacement des .php3 par spip.php ?page=

        rec[9]='\([0-9a-zA-Z_-]\+\).php3?'
        rep[9]='spip.php?page=\1\&'

        rec[10]='\([0-9a-zA-Z_-]\+\).php3'
        rep[10]='spip.php?page=\1'

# Traitement du cas de la recherche

        rec[11]='\(<input.\+recherche\)'
        rep[11]='<input name="page" value="recherche" type="hidden" \/>\1'

# Quelques mises en confirmité XHTML - W3C

        rec[12]='< *\([hb]r\) *>'
        rep[12]='<\1 \/>'

        rec[13]='\(<link.*\?[^-?\/]\)>'
        rep[13]='\1 \/>'

        rec[14]='\(<input.*\?[^-?\/]\)>'
        rep[14]='\1 \/>'

        rec[15]='\(<img.*\?[^-?\/]\)>'
        rep[15]='\1 \/>'

        rec[16]='\(<meta.*\?[^-?\/]\)>'
        rep[16]='\1 \/>'

Evolutions

1. Ce script a permis de traiter un certain nombre de modifications simples en lien avec nos besoins. Cependant il n’est garanti exempt d’erreurs lors de son exécution dans un contexte particulier, ni exhaustif.
C’est une base de travail mais il sera certainement nécessaire de l’améliorer en lien avec les particularités de chaque site.

2. Certains remplacements génériques n’ont pas été traités pour le moment :

- Remplacement #DOSSIER_SQUELETTE -> #CHEMIN
- Ajout des balises d’entête : #HTTP_HEADER

3. Ce script sera bientôt proposé en version PHP.

4. Un second script est à l’étude pour la migration du
site lui-même afin d’automatiser les étapes décrites sur le site officiel et que chacun effectue aujourd’hui à la main. Cette partie n’a d’intérêt que sur un grand nombre de sites.

Téléchargement

Le script est téléchargeable ci-dessous :

samedi 17 mars 2007 par Patrick Vincent


Migration4.sh
(Shell Script)

Migration5.sh (avec gestion du cache)
(Shell Script)