Quoi de neuf dans Drush 5 ?

Durant la DrupalCon Denver cette semaine a eu lieu une conférence par Moshe Weitzman, Jonathan Hedstrom, Owen Barton et Mark Sonnabaum. À l'issue de celle-ci devait être releasée la version 5 stable de Drush (je suis peut-être un peu en avance sur ceci).

Drush est votre ami, si vous êtes un développeur, vous devez forcément l'avoir installé, et je vais donc partir du principe que vous avez utilisé la version 4. Je vais vous présenter dans cet article les nouvelles fonctionnalités de la version 5.

Emplacement de configuration

Les configurations, au travers de fichiers drushrc.php, peuvent maintenant être placées à plusieurs endroits :

  • Relatif à l'utilisateur unix : ~/.drush/drushrc.php
  • Relatif au site Drupal : sites/{default|example.com}/drushrc.php
  • Relatif au système/serveur : /etc/drush/drushrc.php

Alias shell

Vous pouvez maintenant fournir vos propres alias de commandes Drush dans la configuration, exemple :

1
2
3
4
$options['shell-aliases'] => array(
  'pull' => '!git pull',
  'pulldb' => '!git pull && drush updatedb',
);

Vous pouvez donc renseigner des commandes drush mais aussi des commandes système tel que git ou rm.

Gestion des options

Les options non reconnues renvoient maintenant une erreur, plus de "Mais pourquoi ma commande n'a pas marché ?", les erreurs de syntaxe sont ainsi plus facilement évitées.

L'aide des commandes Drush a adopté uniformément une syntaxe pour les paramètres des options :

  • --option=<valeur> pour les paramètres obligatoires
  • --option=[valeur] pour les paramètres optionnels

Compatibilité Windows

Enfin ! Oui, ils ont fait du bon boulot... Sponsorisés par Microsoft en personne, un installer est maintenant dispo, et plus (forcément) besoin de cygwin.

Tracking

Il est maintenant possible de garder un log des commandes utilisées, celles-ci peuvent être anonymisées et envoyées à MongoLab (sponsor des développeurs de Drush) pour faire évoluer Drush dans la bonne voie.
Ceci peut également être utilisé par les sysadmins pour garder un œil sur ce que font les développeurs.
Cette option est désactivée par défaut.

Drush make

Le célèbre gestionnaire de paquet s'invite dans le core de Drush, il est dès à présent possible de créer ses fichiers .make out-of-the-box pour installer ses modules et thèmes préférés toujours plus vite.
Ce n'est pas tout, les différents téléchargements sont maintenant réalisés en parallèle (4 processus par défaut), pour toujours plus de rapidité !
D'ailleurs si vous ne le saviez pas, il existe un cache dans Drush qui permet de récupérer les tarball déjà dans le système au lieu de toujours aller les chercher sur le réseau.

Autocomplétion

Oui, mesdames et messieurs ! L'autocomplétion des alias de sites, des commandes, des alias de shell, des options et des modules est maintenant disponible. Une gestion des contextes permet de ne pas être surchargés par toutes les possibilités. Je vous invite à le tester à l'usage ou à regarder la vidéo pour en savoir plus.
Pour l'activer il suffit de copier/coller drush.complete.sh vers /etc/bash_completion.d, ou, si vous n'avez pas les droits, il suffit d'inclure un petit bout de code dans votre ~/.bashrc

Certaines options vous permettent même de vous passer du mot-clé drush en début de commande, exemple :
@monsite dl views

Built-in WebServer

Drush propose maintenant un serveur HTTP léger afin d'exécuter vos sites Drupal. "À quoi cela sert" me direz-vous, et bien si vous voulez tester une configuration Drupal sans vous embêter avec les VHosts d'Apache, cette commande est très utile. Outre le fait d'afficher les logs d'accès aux pages, elle affiche également les messages watchdog.
Ainsi, la commande drush run-server :8889/ ouvrira une page dans votre navigateur vers le site Drupal courant. Ceci requiert php-cgi et PHP 5.3

Ce n'est pas tout, on peut maintenant faire du Drupal jetable avec la commande quick-drupal. C'est parfait si vous voulez épater Marcel et son site Joomla en quelques secondes :
cd /tmp
drush quick-drupal

Cela télécharge un Drupal 7, crée une base SQLite (donc dans un fichier), et installe le profil d'installation standard. Vous pouvez ensuite jouer avec les très nombreuses options :
drush qd "Ma boutique" --core=commerce_kickstart --profile=commerce_kickstart --yes --watchdog (Marcel va avoir une attaque après celle-ci)

Si vous n'en avez plus besoin, rm -r du dossier, au revoir.

Je l'avoue, j'ai applaudi tout seul chez moi là...

Queue API

Il semblerait que le fonctionnement de la nouvelle Queue API de Drupal 7 soit un peu trop cachée et éxécutable dans le cron, Drush résout maintenant ce problème avec deux commandes :

  • drush queue-list liste toutes les queues recensées par les modules
  • drush queue-run exécute ces queues

Multisites

Pour les gens qui bossent sur les multisites, il peut être frustrant de ne pas exécuter la commande dans le bon site ou même que celle-ci s'exécute dans sites/default, Drush 5 fournit les commandes drush site-set et drush site-reset pour que ce paramètre devienne persistant.

Beaucoup de nouveautés, et de taille ! Un conseil personnel, pour bénéficier des dernières fonctionnalités de Drush au jour le jour, clonez le dépôt directement. Celles-ci présentent encore quelques bugs et ils semblerait que les développeurs n'ont pas pu sortir la version stable à temps. Bravo à eux quand même !

"We'll see you on the command line" — Moshe Weitzman

La vidéo de la présentation est disponible ici.