Ubiquity commandes

Note

Cette partie est accessible à partir des webtools, donc si vous avez créé votre projet avec l’option -a ou avec la commande create-project.

Commandes

A partir des webtools, aller dans la partie commands,

../_images/commands-elm.png

ou directement à l’adresse http://127.0.0.1:8090/Admin/commands.

Liste des commandes

Activer l’onglet Commands pour obtenir la liste des commandes devtools.

../_images/commands-list.png

Informations sur une commande

Il est possible d’obtenir de l’aide sur une commande (ce qui produit un résultat équivalent à Ubiquity help cmdName).

../_images/command-help.png

Exécution de commandes

Un clic sur le bouton run d’une commande affiche un formulaire pour saisir ses paramètres (ou l’exécute directement si elle n’en prend aucun).

../_images/command-run.png

Après avoir saisi les paramètres, l’exécution produit un résultat.

../_images/command-exec.png

Suite de commandes

Retourner à l’onglet My commands : Il est possible de sauvegarder une séquence de commandes (avec des paramètres enregistrés), puis d’exécuter cette même séquence :

Création de suite

Cliquer sur add command suite

../_images/new-suite-btn.png

Ajouter les commandes souhaitées et modifier les paramètres :

../_images/new-commands-suite.png

La validation génère la suite :

../_images/commands-suite-created.png

Exécution d’une suite de commandes

En cliquant sur le bouton « run » de la suite, on exécute la liste des commandes qu’elle contient :

../_images/commands-suite-exec.png

Création d’une commande personnalisée

Cliquer sur le bouton Create devtools command.

../_images/create-devtools-command-btn.png

Saisir les caractéristiques de la nouvelle commande :

  • Le nom de la commande

  • Sa valeur : nom de l’argument principal

  • Les paramètres de la commande : avec plusieurs paramètres, les séparer avec une virgule

  • La description de la commande

  • Les alias de la commande : En cas d’alias multiples, utilisez la virgule comme séparateur.

../_images/create-command.png

Note

Les commandes personnalisées sont créées dans le dossier app/commands du projet.

../_images/custom-command-exec.png

La classe générée :

app/commands/CreateArray.php
 1namespace commands;
 2
 3use Ubiquity\devtools\cmd\commands\AbstractCustomCommand;
 4use Ubiquity\devtools\cmd\ConsoleFormatter;
 5use Ubiquity\devtools\cmd\Parameter;
 6
 7class CreateArray extends AbstractCustomCommand {
 8
 9     protected function getValue(): string {
10             return 'jsonValue';
11     }
12
13     protected function getAliases(): array {
14             return array("createarray","arrayFromJson");
15     }
16
17     protected function getName(): string {
18             return 'createArray';
19     }
20
21     protected function getParameters(): array {
22             return ['f' => Parameter::create('fLongName', 'The f description.', [])];
23     }
24
25     protected function getExamples(): array {
26             return ['Sample use of createArray'=>'Ubiquity createArray jsonValue'];
27     }
28
29     protected function getDescription(): string {
30             return 'Creates an array from JSON and save to file';
31     }
32
33     public function run($config, $options, $what, ...$otherArgs) {
34             //TODO implement command behavior
35             echo ConsoleFormatter::showInfo('Run createArray command');
36     }
37}

La commande CreateArray implémentée :

app/commands/CreateArray.php
 1namespace commands;
 2
 3use Ubiquity\devtools\cmd\commands\AbstractCustomCommand;
 4use Ubiquity\devtools\cmd\ConsoleFormatter;
 5use Ubiquity\devtools\cmd\Parameter;
 6use Ubiquity\utils\base\UFileSystem;
 7
 8class CreateArray extends AbstractCustomCommand {
 9
10     protected function getValue(): string {
11             return 'jsonValue';
12     }
13
14     protected function getAliases(): array {
15             return array(
16                     "createarray",
17                     "arrayFromJson"
18             );
19     }
20
21     protected function getName(): string {
22             return 'createArray';
23     }
24
25     protected function getParameters(): array {
26             return [
27                     'f' => Parameter::create('filename', 'The filename to create.', [])
28             ];
29     }
30
31     protected function getExamples(): array {
32             return [
33                     'Save an array in test.php' => "Ubiquity createArray \"{\\\"created\\\":true}\" -f=test.php"
34             ];
35     }
36
37     protected function getDescription(): string {
38             return 'Creates an array from JSON and save to file';
39     }
40
41     public function run($config, $options, $what, ...$otherArgs) {
42             echo ConsoleFormatter::showInfo('Run createArray command');
43             $array = \json_decode($what, true);
44             $error = \json_last_error();
45             if ($error != 0) {
46                     echo ConsoleFormatter::showMessage(\json_last_error_msg(), 'error');
47             } else {
48                     $filename = self::getOption($options, 'f', 'filename');
49                     if ($filename != null) {
50                             UFileSystem::save($filename, "<?php\nreturn " . var_export($array, true) . ";\n");
51                             echo ConsoleFormatter::showMessage("$filename succefully created!", 'success', 'CreateArray');
52                     } else {
53                             echo ConsoleFormatter::showMessage("Filename must have a value!", 'error');
54                     }
55             }
56     }
57}

Exécution d’une commande personnalisée

La nouvelle commande est accessible depuis les devtools, à condition qu’elle soit bien présente dans le projet :

Ubiquity help createArray
../_images/custom-command-help.png
Ubiquity createArray "{\"b\":true,\"i\":5,\"s\":\"string\"}" -f=test.php
../_images/custom-command-devtools.png