lundi, mai 1 2006, 18:22
SVN move et nettoyage de scripts
Par Guillaume Lelarge - PostgreSQL - Lien permanent
Maintenant que j'arrive à générer un HTML et un PDF magnifiques (oui, oui, je me la pète
), je suis en train de nettoyer scripts et feuilles de style pour tout commiter sur le dépôt SVN.
J'ai commencé par renommer tous les fichiers SGML en XML :
find . -name "*.sgml" | while read fichier do svn move ${fichier} ${fichier/sgml/xml} done
Ensuite, j'ai corrigé le Makefile et les feuilles de style pour remplacer les LFS par des PG, histoire d'être cohérent. J'ai eu un petit soucis avec le Makefile. Je voulais qu'il crée les répertoires et les fichiers de tel façon que je n'ai plus qu'à les copier sur le serveur. Donc, il me fallait ajouter le numéro de version sur la variable contenant le répertoire de construction. La version se trouve dans le fichier version.xml. En shell, c'est très simple car il suffit de cette ligne :
BASEDIR=~/pgsql-`grep -v major version.xml | cut -c19-23`-fr
Dans un Makefile, cette commande ne fonctionne pas. En effet, il n'exécute pas la commande grep -v .... Il l'exécute quand il utilise la variable, plus exactement quand il exécute l'instruction qui utilise cette variable, ce qui peut poser quelques soucis (par exemple quand cette variable se trouve déjà des guillemets inversés). Bref, en parcourant le manuel de make, j'ai fini par découvrir qu'on pouvait exécuter une commande shell et récupérer le résultat dans une variable (y compris si ce résultat comprend plusieurs lignes) :
BASEDIR := $(shell echo "~/pgsql-`grep -v major version.xml | cut -c19-23`-fr")
Voilà. Tout con mais il fallait le savoir.
Bref, maintenant, mes scripts fonctionnent avec les feuilles de style associées. Il faudra rajouter la feuille de style CSS de Kryskool quand il l'aura terminé. En attendant je commit... et j'obtiens la révision 232.
3 commentaires
Euh, juste pour mettre mon grain de sel
${fichier/sgml/xml}, c'est un peu violent quand même... Pourquoi pas : ${fichier/%sgml/xml} ?
**
Sinon, rien à voir mais, c'est étrange, tes derniers billets n'apparaissent pas sur Planet Traduc.
Oui, un problème avec planet planet... je viens de le mettre à jour, ça marche bien mieux
Merci ! Merci ! Merci ! Après un long moment passé à chercher comment exécuter une commande find dans un Makefile, c'est ton billet qui m'a aiguillée vers la solution... :o)