La majorité d'entre nous, chez Raincity Studios, utilisons MAMP pour travailler localement sur nos projets ou comme environnement de test. Ayant découvert hier soir la merveille qu'est Drush, je suis allé l'essayer sur mon poste local.
Drush, vous dites?
« Drush est un interpréteur de commandes et une interface de script Unix pour Drupal, un véritable couteau suisse conçu pour faciliter la vie de ceux d'entre nous qui passent la plus grande partie de leurs heures de travail à pianoter à l'invite de commande. »
Drush vous permet de gérer, de mettre à jour et d'entretenir facilement vos modules en ligne de commande, sans avoir à garder un aide-mémoire CVS à portée de main.
Dans ce guide pas à pas, nous verrons comment faire fonctionner Drush sur votre poste local, en supposant que vous utilisez MAMP.
Pour commencer
Il vous faut à la fois une installation MAMP fonctionnelle et le projet Drush de drupal.org.
Le problème
En suivant les instructions fournies dans l'archive de Drush, j'ai rencontré un problème en essayant d'exécuter le fichier drush.php. À l'exécution, il renvoyait toute la structure HTML, comme si j'essayais de l'afficher dans un navigateur. C'est parce que PHP doit être compilé avec le mode CLI (interface en ligne de commande) activé. Ce mode permet d'exécuter des fichiers PHP en ligne de commande, et le mode CLI n'est que l'un des types de SAPI (System API) offerts. Pour en savoir plus sur les types de SAPI, visitez PHP.net.
Utiliser le PHP fourni avec MAMP
En examinant le fichier drush.php situé dans le dossier sites/all/modules/drush/, j'ai constaté qu'il faisait appel à la commande bash php, qui pointe vers la compilation PHP du système plutôt que vers celle de MAMP.
Premièrement, liez la commande bash php au PHP de MAMP :
$ sudo ln -f /Applications/MAMP/bin/php5/bin/php /usr/bin/php
L'option -f supprime le lien du fichier cible actuel, s'il existe, et le recrée avec le chemin fourni.
Deuxièmement, créez un lien vers drush.php dans un répertoire qui se trouve dans votre $PATH, par exemple (c'est une étape qui figure dans le fichier README.txt fourni avec l'archive de Drush) :
$ ln /path/to/drush.php /usr/bin/drush
Dans mon cas, c'était :
$ ln /Applications/MAMP/htdocs/d5.7/sites/all/modules/drush/drush.php /usr/bin/drush
Enfin, initialisez Drush en vous rendant tranquillement dans le répertoire racine de votre Drupal; dans mon cas, c'était :
$ cd /Applications/MAMP/htdocs/d5.7
/Applications/MAMP/htdocs/d5.7 $ drush
Usage: drush.php [options] <command> <command> ...
Options:
-r <path>, --root=<path> Drupal root directory to use (default: current directory)
-l <uri> , --uri=<uri> URI of the drupal site to use (only needed in multisite environments).....
Fonctionnalités supplémentaires
Drush offre d'autres fonctionnalités, comme la possibilité d'installer et de mettre à jour vos modules en ligne de commande au moyen de CVS, de wget ou de curl. D'autres modules sont requis ou suggérés pour activer ces fonctionnalités : le module Update Status, qui vérifie une fois par jour auprès de drupal.org s'il existe de nouvelles versions officielles de Drupal et des modules que vous utilisez, et CVS Deploy, qui aide les sites déployés directement à partir d'un espace de travail CVS. D'emblée, Update Status ne connaît pas l'état des modules qui n'ont pas été installés à partir d'une archive produite par drupal.org; c'est pourquoi nous utilisons CVS Deploy.
Un dernier exemple est le module provisioning, un ensemble d'extensions à Drush qui traite des sites entiers et des profils d'installation. Le module provisioning est l'interface dorsale de notre profil d'installation d'hébergement de masse hostmaster. Un exemple simple est fourni directement sur la page du projet provisioning; il montre comment installer un tout nouveau site à partir d'un profil d'installation :
drush.php provision install somesite.com
Le cadre provisioning, comme Drush, est lui aussi extensible; les sauvegardes, les mises à niveau et les retours en arrière seront donc éventuellement gérés de la même façon. Vous pouvez aussi utiliser simplement le cadre provisioning avec Drush pour automatiser votre flux de travail, sans utiliser le reste du cadre hostmaster.