Table of Contents

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 :

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

1)
défini dans lib/plugins/cli.php