Cómo crear un comando de Drush

Captura de pantalla 2018-12-30 a las 22.13.04.png
Solucionex
04
Ene 19

Para empezar, es igual que un módulo custom de Drupal, ni que decir tiene que necesitamos tener instalado Drush, bien sea local o global. Y comenzamos...

Creamos un directorio con el nombre de nuestra batería de comandos custom dentro de nuestro directorio raíz de Drupal /modules/custom/nombre_bateria_comandos

Drush0

 

Necesitamos 2 archivos base para empezar, "nombre_bateria_comandos.info.yml" y drush.services.yml

Para el archivo nombre_bateria_comandos.info.yml:

drush1

name: Custom commands
type: module
description: Comandos de drush Custom
core: 8.x
package: CustomCommands

 

(Yo os adjunto un ejemplo, ajustadlo como vosotros lo necesitéis)

Para el archivo drush.services.yml:

drush2


services:
  custom_commands.commands:
    class: \Drupal\custom_commands\Commands\CustomCommands
    tags:
      - { name: drush.command }

 

Luego dentro de un directorio llamado "src" al nivel de los archivos anteriores, creamos el archivo que contendrá la clase para nuestra batería de comandos, en mi caso es "CustomCommands.php":

Drush3

<?php

namespace Drupal\custom_commands\Commands;

use Drush\Commands\DrushCommands;

/**
 * A Drush commandfile.
 *
 * In addition to this file, you need a drush.services.yml
 * in root of your module, and a composer.json file that provides the name
 * of the services file to use.
 *
 * See these files for an example of injecting Drupal services:
 *   - http://cgit.drupalcode.org/devel/tree/src/Commands/DevelCommands.php
 *   - http://cgit.drupalcode.org/devel/tree/drush.services.yml
 */
class CustomCommands extends DrushCommands {

  /**
   * Comando de ejemplo
   * Aquí ya lo que necesitéis, llamadas a BD transformaciones etc...
   *
   * @command custom-commands:mycommand
   */

  public function mycommand() {
    $this->io()->writeln("Hola soy el nuevo comando custom!!!!");
  }

}
 

Con esto ya podemos probar, si necesitamos más comandos, solo hay que replicar la estructura de la función previa y crear más funciones con su "@command" correspondiente, y listo.

solo nos queda borrar cache, activar nuestro modulo, y ejecutarlo:

Drush4

;) LISTO!!!