Image

Drush avancé, installation avec composer, alias et autocomplétion

Dans un précédent article je faisais un petit tour de base de Drush et des commandes utiles, nous allons maintenant aller un peu plus loin en configurant pleinement Drush sur notre système *nix.

Installation manuelle de la dernière version de Drush

Il est probable qu'un paquet drush existe pour votre système, mais si vous voulez profiter de la dernière version de cette application vous devez en passer par l'installation manuelle.
Il y a encore peu Drush était disponnible avec pear, et son installation était relativement simple, maintenant vous devrez utilser composer pour profiter de Drush, et la documentation officielle est un peu légère à ce sujet, pour une installation complète sous *nix (je vais prendre comme exemple une distribution qui utilise Yum), vous devez d'abord installer composer de préférence depuis votre répertoire utilisateur

cd

Installation de composer globalement sur votre système :

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

Ajout du chemin du binaire Drush dans votre PATH

sed -i '1i export PATH="$HOME/.composer/vendor/bin:$PATH"' $HOME/.bashrc
source $HOME/.bashrc

Installation de la dernière version de Drush, mais avant, assurez-vous d'avoir git sur votre système :

yum install git
composer global require drush/drush:dev-master

Pour les mises à jour il suffira de faire

composer global update

Si tout c'est bien passé la commande drush est maintenant disponible sur votre environnement, si vous avez une erreur de type

c'est probablement que vous n'avez pas sourcé votre .bashrc !

Ajout des alias de Drush à votre système *nix

Pour cela nous allons simplement récupérer un fichier fourni avec Drush

cp $HOME/.composer/vendor/drush/drush/examples/example.bashrc $HOME/.drush_bashrc

Puis nous allons ajouter dans notre .bashrc ou .bash_profile

if [ -f ~/.drush_bashrc ] ; then
    . ~/.drush_bashrc
fi

Enfin on source notre bash

source .bashrc

Nous avons maintenant pas mal d'alias sur notre système pour Drush, vous en avez la liste dans ce fichier .drush_bashrc, les plus utiles seront

cca = 'drush cache-clear all'
dl = 'drush pm-download'
st = 'drush core-status'
dis = 'drush pm-disable'
en = 'drush pm-enable'

Ajout de la complétion pour Drush

Très pratique, la complétion sous *nix vous permet d'avoir la liste des programme ou commandes grace à la touche TAB, c'est comme pour la complétion des dossier ou noms de fichiers.

Vous devez d'abord vous assurez de bien avoir la complétion bash sur votre système :

yum install bash-completion

Vous pouvez ensuite faire un lien symbolique du fichier fourni par Drush

ln -s $HOME/.composer/vendor/drush/drush/drush.complete.sh /etc/bash_completion.d/drush.complete.sh

Et relancer votre bash (pour complete)

exec bash

Seulement pour une raison que j'ignore, il est probable que la prochaine fois que vous lancez un shell, la complétion Drush ne fonctionne plus et que vous ayez un message :

which: no drush in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin)

Pour résoudre ce problème, ajoutez un lien symbolique vers le binaire Drush, ici j'ai choisi /usr/local/bin mais vous pouvez le mettre dans l'un des autres répertoires

ln -s $(which drush) /usr/local/bin/drush

Pour tester commencer par taper une commande Drush la commande devrait se compléter :

drush pm

Utilisez TAB pour avoir la liste des commandes possibles (le premier TAB peut mettre un peu de temps...) ce qui vous donnera

drush pm
pm-disable pm-enable pm-info pm-list pm-releasenotes pmu pm-update pm-updatecode-postupdate pm-download pmi

Les alias de sites Drush pour un Drupal multisite ou un serveur avec plusieurs sites...

Un dernier point utile avec Drush sera la création d'alias, si vous créé un site en utilisant la gestion de répertoire de Drupal (sites/monsite) au lieu du default, ou que vous utilisez la gestion multiste cette fonctionnalité vous fera gagner du temps.
Vous aurez au préalable besoin de l'extesion php-posix sur votre système (php-process sous centos).

Vous pouvez créer un alias depuis Drush si vous êtes déjà dans un site

drush site-set @test

Ensuite vous pouvez lancer des commandes Drush pour ce site depuis n'importe où

drush @test status

Mais cet alias ne fonctionnera que sur la session en cours, pour avoir des alias qui durent vous devez copier le fichier drush dans votre environnement

cp $HOME/.composer/vendor/drush/drush/examples/example.aliases.drushrc.php $HOME/.drush/aliases.drushrc.php

Vous pouvez alors adapter les alias en fin de fichier, ce qui vous permettra d'exécuter une commande drush pour un site, même si vous n'ètes pas dans son répertoire, exemple du fichier aliases.drushrc.php

<?php
$aliases['test'] = array(
  'uri' => 'www.url-de-mon-site.com',
  'root' => '/chemin/vers/racine/drupal',
);
?>

Depuis n'importe où vous pouvez faire un

drush @test status

Commentaires