Drupal 8 et Drupal 9 - Créer une commande drush personnalisée

Posté le Jeudi 25 juin 2020 - 13:38

Voici un exemple rapide de commande drush appelant une méthode d'un service avec une option lors de l'appel.

À noter : Drupal\mon_module\Service\Resalys est un service existant, je souhaite utiliser la méthode syncResalys de ce service qui accepte un paramètre optionnel : $force

Déclaration de la commande

modules/mon_module/drush.services.yml

services:
  mon_module.drush.resalys: # clé du fichier de commande, à définir vous même
    class: Drupal\mon_module\Command\ResalysCommand # Namespace de la classe contenant la commande
    arguments:
      - '@mon_module.resalys' # Service à injecter dans notre commande
    tags:
      -  { name: drush.command }

Définition de la commande

modules/mon_module/src/Command/ResalysCommand.php

<?php
namespace Drupal\mon_module\Command;

use Drupal\mon_module\Service\Resalys;
use Drush\Commands\DrushCommands;

class ResalysCommand extends DrushCommands {

  protected $resalys;

  public function __construct(Resalys $resalys) {
    parent::__construct();
    $this->resalys = $resalys;
  }

  /**
   * Sync resalys cache
   *
   * @command resalys:sync
   * @usage drush resalys:sync
   * @usage drush resalys:sync --force
   *
   * @param int[] $options
   */
  public function sync($options = ['force' => FALSE]) {
    $force = (bool) $options['force'];
    $this->resalys->syncResalys($force);
  }

}

Utilisation

drush resalys:sync
drush resalys:sync --force

 

Aller plus loin ?

Ajouter un commentaire

Ne sera pas publié

Désolé, pour ça, mais c'est le seul moyen pour éviter le spam...