it-swarm.com.de

Wie rufe ich einen Post-Drush-Befehl auf?

Ich verwende Drush 9 und Drupal 8. Wenn ich drush site:install Ausführe, stelle ich fest, dass dadurch auch die Berechtigung des Verzeichnisses web/site/default in r-xr-x- geändert wird -x, was mich später beim Löschen dieses Verzeichnisses stört. Ich möchte, dass dieses Verzeichnis in meinem Fall 740 ist. Daher kamen mir zwei Methoden in den Sinn: Eine besteht darin, ein benutzerdefiniertes Shell-Skript als Post drush si auszuführen oder das zu überschreiben Standardbefehl dush si. Ich habe versucht, einige Blogs durchzugehen, konnte sie jedoch nicht verstehen. Bitte erläutern Sie dies schrittweise.

Wie kann ich ein benutzerdefiniertes Shell-Skript für drush site:install Aufrufen, das unmittelbar nach Ausführung dieses Befehls ausgeführt wird?.

Wie kann ich den Standardbefehl site:install Überschreiben?

Hinweis: Ich verwende Drupal composer Projekt . Ich habe also einen Drush-Ordner außerhalb der Webroot, aber ich weiß nicht, ob ich kann Bearbeiten Sie einige Dateien in diesem Verzeichnis und schreiben Sie meine benutzerdefinierten Befehle.

3
SkyRar

Gregs Antwort ist großartig. Um diese spezielle Frage genauer zu beantworten, befolgen Sie die folgenden Schritte.

1- Während Sie Drupal composer Projektvorlage) verwenden, wechseln Sie in das Verzeichnis your_drupal_project/drush Und erstellen Sie eine Datei mit dem Namen SiteInstallCommands.php Sie können sehen, dass es eine andere ähnliche Datei gibt PolicyCommands.php.

2- SiteInstallCommands.php sollte folgende Codeausschnitte enthalten. installTest() sind Ihre benutzerdefinierten Befehle, die nach der Site ausgeführt werden sollen: install. Ändern Sie es also entsprechend Ihren Bedürfnissen.

<?php

namespace Drush\Commands;


class SiteInstallCommands extends DrushCommands
{

    /**
     * Executing command just after `drush site:install`
     *
     * @hook post-command site-install
     *
     */
    public function installTest() {
        drush_Shell_exec('echo test');
    }
}
2
Aditi

Siehe die Beispieldatei PolicyCommands.php im Druhs-Beispielverzeichnis. Erstellen Sie ein Verzeichnis mit dem Namen "Befehle" im Verzeichnis "drush" Ihrer Site und legen Sie dort Ihre Befehlsdatei ab. Sein Name muss mit "Commands.php" oder "Hooks.php" enden.

Erstellen Sie einen Hook ähnlich dem in der Beispieldatei gezeigten. Sie wollen @hook post-command site:install.

3
greg_1_anderson

So erstellen Sie eine Site: Install Hook: Ich musste nur eine Datei SiteInstallCommands.php in drush/Commands dir erstellen. dann drush cc drush um den Drush-Cache zu leeren und mein benutzerdefinierter Post-Befehl ist aktiv. Vielen Dank an @ greg_1_anderson für die Anleitung. Beachten Sie, dass Sie @hook post-command site-install nicht @hook post site:install.

<?php

namespace Drush\Commands;


class InstallCommands extends DrushCommands
{

    /**
     * Modify files/directory permission as per project's need executing just after `drush site:install`
     *
     * @hook post-command site-install
     *
     */
    public function installChmod() {
        $this->logger()->success(dt('Executing post site:install commands'));
        drush_Shell_exec('chmod -R 740 sites/default');

    }
}
0
SkyRar