|
|
# console.xml
|
|
|
|
|
|
Mit der **console.xml** können Sie eigene Konsolen Tools QUIQQER hinzufügen.
|
|
|
QUIQQER besitzt eine Konsolen Schnittstelle welche über die bash aufgerufen werden kann.
|
|
|
|
|
|
Über diese Schnittstelle können Testfunktionen mit allen geladenen Modulen schnell und effektiv aufgerufen und gestestet werden.
|
|
|
|
|
|
Mit folgendem Befehl gelangen Sie in die QUIQQER Konsole
|
|
|
|
|
|
```bash
|
|
|
./console
|
|
|
```
|
|
|
|
|
|
Möchten Sie nun die QUIQQER Konsole um ein weiteres Tool erweitern, legen Sie im Root Ordner Ihres Plugins eine console.xml an.
|
|
|
|
|
|
|
|
|
## Aufbau
|
|
|
|
|
|
```xml
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
<console>
|
|
|
<tool exec="CLASS"/>
|
|
|
<tool exec="CLASS" file="USR_DIR/project/lib/console/myConsoleTool.php"/>
|
|
|
</console>
|
|
|
|
|
|
```
|
|
|
|
|
|
+ \<console\> beginnt das Console XML
|
|
|
+ \<tool\> Legt ein Tool fest welches es gibt.
|
|
|
+ \<tool\> Mit der "exec=" verweist man auf eine existierende Klasse innerhalb der gleichnamigen .php Klassen Datei.
|
|
|
+ \<tool\> Innerhalb des Tools ist das "file=" Argument
|
|
|
optional und kann komplett weggelassen werden.
|
|
|
Dieses fungiert lediglich als Alternative für den Datei Pfad.
|
|
|
|
|
|
|
|
|
### \<tool exec=\"\"\>
|
|
|
|
|
|
Ein \<tool\> Node legt ein Konsolen-Tool fest, welches über die Konsole aufgerufen werden kann.
|
|
|
|
|
|
In dem exec Attribut muss die PHP Tool Klasse definiert werden. Diese Klasse muss von \QUI\System\Console\Tool erben.
|
|
|
|
|
|
*Beispiel*
|
|
|
|
|
|
```xml
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
<console>
|
|
|
<tool exec="\Company\Namespace\MyTool" />
|
|
|
</console>
|
|
|
```
|
|
|
|
|
|
Im Folgenden sehen Sie ein Beispiel aus zwei Dateien, welche aus einer durch die Konsole aufrufbaren Klasse besteht und die dazugehörige console.xml:
|
|
|
|
|
|
|
|
|
```php
|
|
|
<?php
|
|
|
/**
|
|
|
* QUIQQER Console Tool: MyTool
|
|
|
*/
|
|
|
|
|
|
namespace Company\Namespace;
|
|
|
|
|
|
use QUI;
|
|
|
|
|
|
class MyTool extends QUI\System\Console\Tool
|
|
|
{
|
|
|
public function __construct()
|
|
|
{
|
|
|
$this->setName('package:my-package') // Hier wird der Paket Name des Konsolen Tools übergeben
|
|
|
->setDescription('Mein Test Paket') // Dies ist eine Beschreibung für das Konsolen Tool
|
|
|
->addArgument('delete-tables', 'Beschreibung'); // Dies ist eine Beschreibung für die in der Konsole ausführbaren Befehle oder Argumente
|
|
|
}
|
|
|
|
|
|
|
|
|
public function execute()
|
|
|
{
|
|
|
|
|
|
$this->writeLn("this is a Test"); // Hier Wird eine Test Message in die Konsole ausgegeben
|
|
|
$this->writeLn("Hello World"); // Hier Wird eine Test Message in die Konsole ausgegeben
|
|
|
$this->writeLn(); // Hier wird eine Leerzeile in der Konsole ausgegeben
|
|
|
|
|
|
// execute bereich
|
|
|
|
|
|
$this->writeLn($this->getArgument('table')); // Hier wird das eingefügte '--table=""' Argument in der Konsole ausgegeben
|
|
|
$this->writeLn();
|
|
|
$this->writeLn();
|
|
|
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
```xml
|
|
|
<!-- console.xml -->
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
<console>
|
|
|
<tool exec="\Company\Namespace\MyTool"/>
|
|
|
</console>
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Um nachher auf Ihr Konsolen Tool zuzugreifen, müssen Sie insofern Ihr Tool nicht als Systemtool deklariert ist, sich mit Ihrem Benutzernamen und Passwort in der Konsole einloggen. Hinter den Nutzerdaten müssen Sie noch auf das von Ihnen genutzte Paket verweisen:
|
|
|
|
|
|
Hier ein Beispiel wie Sie auf das Entwicklungs-Paket zuzugreifen:
|
|
|
|
|
|
```bash
|
|
|
./console --username=admin --password=********** --tool=package:my-package
|
|
|
```
|
|
|
|
|
|
Nun können Sie Ihre Konsolen Ausgabe testen mit folgendem Befehl:
|
|
|
|
|
|
```bash
|
|
|
./console --username=admin --password=********** --tool=package:my-package --table="Hallo Welt über das Table Argument"
|
|
|
```
|
|
|
|
|
|
|
|
|
Die Folgende Konsolen Ausgabe sollte wie folgt aussehen:
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
this is a Test
|
|
|
Hello World
|
|
|
|
|
|
Hallo Welt über das Table Argument
|
|
|
|
|
|
```
|
|
|
|
|
|
## System Konsolen Tool
|
|
|
|
|
|
Ein System Konsolen Tool ist ein Tool welches kein Benutzernamen und Benutzerpassword benötigt. Dieses kann in der Konsole direkt aufgerufen und ausgeführt werden.
|
|
|
|
|
|
Um ein Tool als System Konsolen Tool zu deklarieren, müssen Sie im constructor Ihrer Toolklasse `$this->systemTool = true;` setzen.
|
|
|
|
|
|
```php
|
|
|
<?php
|
|
|
/**
|
|
|
* QUIQQER Console Tool: MyTool
|
|
|
*/
|
|
|
|
|
|
namespace Company\Namespace;
|
|
|
|
|
|
use QUI;
|
|
|
|
|
|
class MyTool extends QUI\System\Console\Tool
|
|
|
{
|
|
|
public function __construct()
|
|
|
{
|
|
|
$this->systemTool = true;
|
|
|
|
|
|
// ...
|
|
|
}
|
|
|
|
|
|
public function execute()
|
|
|
{
|
|
|
// ...
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
## Konsolen Tool Beispiele
|
|
|
|
|
|
Um den Benutzern das Ausführen Ihres Konsolen-Tools zu erleichtern, können Sie Beispiele in Ihrem Tool mitliefern.
|
|
|
|
|
|
```php
|
|
|
<?php
|
|
|
/**
|
|
|
* QUIQQER Console Tool: MyTool
|
|
|
*/
|
|
|
|
|
|
namespace Company\Namespace;
|
|
|
|
|
|
use QUI;
|
|
|
|
|
|
class MyTool extends QUI\System\Console\Tool
|
|
|
{
|
|
|
public function __construct()
|
|
|
{
|
|
|
// ...
|
|
|
|
|
|
$this->addExample(
|
|
|
'./console package:my-package --param1'
|
|
|
);
|
|
|
|
|
|
$this->addExample(
|
|
|
'./console package:my-package --param2 --param2'
|
|
|
);
|
|
|
|
|
|
// ...
|
|
|
}
|
|
|
|
|
|
public function execute()
|
|
|
{
|
|
|
// ...
|
|
|
}
|
|
|
}
|
|
|
``` |