Creating custom Drush 9 commands in Drupal 8

Erstellen von benutzerdefinierten Drush 9-Befehlen in Drupal 8

html

In Drupal 8.4.X und späteren Versionen ist Drush 9 die einzige unterstützte und empfohlene Version. Eine der wichtigsten Änderungen, die in dieser Version eingeführt wurden, ist ein neues Modell zum Schreiben von benutzerdefinierten Drush-Befehlen. Ab jetzt sind .inc-Dateien veraltet, und Sie werden sie nicht mehr für Ihre Befehle verwenden, die nun auf Klassen im AnnotatedCommand-Format basieren.

Die Grundstruktur eines Moduls, das Ihren benutzerdefinierten Drush-Befehl enthält, sieht wie folgt aus:

Modulstruktur mit benutzerdefiniertem Drush 9-Befehl

 

Drush9_custom_commands.info.yml Datei

Standard-Informationsdatei mit grundlegenden Informationen zum Modul.

 

name: Drush 9 Custom Commands
description: Beispiel eines benutzerdefinierten Drush 9-Befehls.
core: 8.x
type: module
package: Beispiele

 

Drush.services.yml Datei

Die Verwendung der Standard services.yml-Datei wird nicht mehr funktionieren, und es führt zu einem Fehler, da Drush nun erwartet, dass Sie eine separate drush.services.yml-Datei mit Dienstdefinitions für Ihre benutzerdefinierten Drush-Befehle verwenden.

 

services:
  drush9_custom_commands.commands:
    class: \Drupal\drush9_custom_commands\Commands\Drush9CustomCommands
    tags:
      - { name: drush.command }

 

Drush9CustomCommands.php Datei

Dies ist die wichtigste Datei, die die gesamte Definition Ihrer Befehle enthält. 

 

 FALSE, 'reverse' => FALSE]) {
    if ($options['uppercase']) {
      $text = strtoupper($text);
    }
    if ($options['reverse']) {
      $text = strrev($text);
    }
    $this->output()->writeln($text);
  }
  
}

 

Ihre Befehlsklasse erbt von DrushCommands, und Sie können sie verwenden, um zahlreiche Befehle einzuschließen, von denen alle separate Methoden mit Annotations sind.

Einige der verfügbaren Annotations umfassen:
@command – Befehlsdefinition, die der Modul: Befehl-Struktur folgen muss;
@aliases – Aliase für Ihre Befehle, getrennt durch Leerzeichen;
@param – definiert die Eingabeparameter für Ihren Befehl;
@option – definiert die verfügbaren Optionen für Ihre Befehle, die in einem assoziativen Array angegeben werden sollten, wobei der Name der Option der Schlüssel ist;
@usage – Beispiel, das zeigt, wie der Befehl verwendet werden sollte.


Beispiele zur Verwendung des obigen Befehls:

Drush d9-message 
Hello world!

drush d9-message --uppercase --reverse drupal8
8LAPURD   

 

Fazit

In unserer Drupal-Agentur sind wir ziemlich sicher, dass diejenigen, die ihre benutzerdefinierten Drush-Befehle vor Drush 9 geschrieben haben, hier einige Unterschiede feststellen können, da wir eine Abkehr von der alten, bei Drupal 7-Entwicklern bekannten Methode hin zur neuen Symphony-basierten Lösung erleben. Diejenigen, die noch nicht die Gelegenheit hatten, mit Drush-Befehlen zu arbeiten, finden das obige Beispiel wahrscheinlich ziemlich langweilig. Wofür kann Ihr benutzerdefinierter Drush-Befehl in der Praxis verwendet werden? Beispielsweise hatte ich kürzlich die Gelegenheit, Drupal mit einem externen Blogdienst zu integrieren. Mithilfe von Cron werden die Beiträge in bestimmten Intervallen zu Drupal hinzugefügt. Dank eines benutzerdefinierten Drush-Befehls kann ich eine solche Operation jederzeit ohne Verwendung der Benutzeroberfläche ausführen. Außerdem ermöglicht der Parameter dem Benutzer, eine beliebige Anzahl von Beiträgen mithilfe eines numerischen Wertes oder der Einstellung "alle" herunterzuladen. Die obige Lösung erwies sich während der anfänglichen Migration als sehr nützlich, als alle vorhandenen Beiträge und Einträge heruntergeladen werden mussten. Welche Prozesse werden Sie dank benutzerdefinierter Drush-Befehle erleichtern? 

?>
As part of Drupal support, we maintain existing websites and expand them with new functionalities