Drush : ajouter des commandes personnalisées

On considère que notre module se nomme [MonModule]. Pour ajouter une commande, il est nécessaire de créer dans le répertoire de votre module un fichier [MonModule].drush.inc. La première chose à faire dans ce fichier est la création d’une fonction hook pour spécifier l’aide de cette fonction. Ci dessous le début de notre exemple :

<?php
/**
 * @file
 * drush commands for cbnmetar
 */
/**
 * Implements hook_drush_help().
 */
function cbnmetar_drush_help($command) {
  switch ($command) {
    case 'cbnmetar:clear-metar-cache':
      return dt('Clear metar cache');
  }
}

Cette fonction hook_help définie l’aide de notre fonction de suppression du cache d’un module cbnmetar

La deuxième chose à faire est la définition de la commande, cela se fait en ajoutant une fonction hook qui implémente hook_drush_commande, ce qui donne :

/**
 * Implements hook_drush_command().
 */
function cbnmetar_drush_command() {
  $items = array();
  $items['clear-metar-cache'] = array(
    'description' => dt('Clear metar cache'),
    'aliases' => array('cmetar'),
  );
  return $items;
}

Il est maintenant possible de lancer la commande drush suivante

drush help cmetar

On aura en sortie de la console l’aide de notre commande

Il ne reste plus qu’à coder la commande. Eh oui, pour l’instant nous n’avons ajouter que de l’aide et la définition. Le code suivant ajoute la fonction qui supprime le cache de notre module

/**
 * Callback function for drush clear-metar-cache.
 */
function drush_cbnmetar_clear_metar_cache() {
  cache_clear_all('cache_metar','cache');
  drush_log('Running clear metar cache', 'ok');
}

Et voilà, en un fichier et 3 fonctions, nous avons une commande drush qui supprime le cache de notre module cbnmetar

Il est bien sûr possible d’ajouter pour un module, plusieurs commandes, il suffit d’ajouter dans les tableaux l’aide pour chaque commande, la définition et enfin le code opur chaque fonction

comments powered by Disqus