lib/plugins/cli.php
Table des matières
Extensions CLI
Les extensions CLI (Command Line Interface) vous donnent un moyen facile de fournir des fonctionnalités DokuWiki accessibles depuis la ligne de commande. Ceci est surtout utile en tant que composant dans une extension plus importante où certaines fonctionnalités doivent être exécutées à partir de travaux Cron ou par des administrateurs expérimentés uniquement.
Les extensions se basent sur la librairie php-cli et sa documentation pourrait être une aide supplémentaire.
Exécution des extensions CLI
DokuWiki est livré avec bin/plugin.php
. Appelé sans paramètres, il vous liste toutes les extensions CLI disponibles. Donner simplement le nom de l'extension comme premier argument pour appeler cette extension.
Dans l' extension Exemple dessous, on appelle
./bin/plugin.php example -v
Synopsis
Une extension CLI Example nécessite :
- un nom de classe
auth_plugin_example
- qui étend DokuWiki_CLI_Plugin1).
- à sauvegarder dans un fichier
lib/plugins/example/cli.php
.
Pour plus de détails sur les extensions et leurs fichiers et comment créer plus de composants CLI, reportez-vous à la section plugin file structure (anglais).
Implémentation requise
Héritant de DokuWiki_CLI_Plugin
, plusieurs méthodes doivent être implémentées dans votre classe.
setup()
Cette méthode est passée à un objet “Option” sur lequel vous devez appeler plusieurs méthodes pour configurer le comportement de votre outil CLI. Ceci permet de configurer quels arguments et paramètres sont acceptés et requis pour votre outil.
Reportez-vous à la documentation des Options sur les méthodes disponibles.
main()
Cette méthode est passée à un objet “ Option ” à partir duquel vous pouvez obtenir tous les arguments et paramètres analysés.
C'est ici que vous devez appeler votre code principal. Vous voudrez peut-être utiliser un Helper Plugin ici.
Exemple
if(!defined('DOKU_INC')) die(); use splitbrain\phpcli\Options; class cli_plugin_example extends DokuWiki_CLI_Plugin { // register options and arguments protected function setup(Options $options) { $options->setHelp('A very minimal example that does nothing but print the plugin version info'); $options->registerOption('version', 'print version', 'v'); } // implement your code protected function main(Options $options) { if ($options->getOpt('version')) { $info = $this->getInfo(); // method available in all DokuWiki plugins $this->success($info['date']); } else { echo $options->help(); } } }
Crédits
Traduction : — Digitalin 2018-05-05 11:48