splitbrain /
dokuwiki
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
| 1 | #!/usr/bin/php |
||
| 2 | <?php |
||
| 3 | |||
| 4 | use splitbrain\phpcli\CLI; |
||
| 5 | use splitbrain\phpcli\Colors; |
||
| 6 | use splitbrain\phpcli\Options; |
||
| 7 | |||
| 8 | if(!defined('DOKU_INC')) define('DOKU_INC', realpath(dirname(__FILE__) . '/../') . '/'); |
||
| 9 | define('NOSESSION', 1); |
||
| 10 | require_once(DOKU_INC . 'inc/init.php'); |
||
| 11 | |||
| 12 | class pluginCLI extends CLI { |
||
| 13 | |||
| 14 | /** |
||
| 15 | * Register options and arguments on the given $options object |
||
| 16 | * |
||
| 17 | * @param Options $options |
||
| 18 | * @return void |
||
| 19 | */ |
||
| 20 | protected function setup(Options $options) { |
||
| 21 | $options->setHelp('Excecutes Plugin command line tools'); |
||
| 22 | $options->registerArgument('plugin', 'The plugin CLI you want to run. Leave off to see list', false); |
||
| 23 | } |
||
| 24 | |||
| 25 | /** |
||
| 26 | * Your main program |
||
| 27 | * |
||
| 28 | * Arguments and options have been parsed when this is run |
||
| 29 | * |
||
| 30 | * @param Options $options |
||
| 31 | * @return void |
||
| 32 | */ |
||
| 33 | protected function main(Options $options) { |
||
| 34 | global $argv; |
||
| 35 | $argv = $options->getArgs(); |
||
| 36 | |||
| 37 | if($argv) { |
||
|
0 ignored issues
–
show
|
|||
| 38 | $plugin = $this->loadPlugin($argv[0]); |
||
| 39 | if($plugin !== null) { |
||
| 40 | $plugin->run(); |
||
| 41 | } else { |
||
| 42 | $this->fatal('Command {cmd} not found.', ['cmd' => $argv[0]]); |
||
| 43 | } |
||
| 44 | } else { |
||
| 45 | echo $options->help(); |
||
| 46 | $this->listPlugins(); |
||
| 47 | } |
||
| 48 | } |
||
| 49 | |||
| 50 | /** |
||
| 51 | * List available plugins |
||
| 52 | */ |
||
| 53 | protected function listPlugins() { |
||
| 54 | /** @var Doku_Plugin_Controller $plugin_controller */ |
||
| 55 | global $plugin_controller; |
||
| 56 | |||
| 57 | echo "\n"; |
||
| 58 | echo "\n"; |
||
| 59 | echo $this->colors->wrap('AVAILABLE PLUGINS:', Colors::C_BROWN); |
||
| 60 | echo "\n"; |
||
| 61 | |||
| 62 | $list = $plugin_controller->getList('cli'); |
||
| 63 | sort($list); |
||
| 64 | if(!count($list)) { |
||
| 65 | echo $this->colors->wrap(" No plugins providing CLI components available\n", Colors::C_RED); |
||
| 66 | } else { |
||
| 67 | $tf = new \splitbrain\phpcli\TableFormatter($this->colors); |
||
| 68 | |||
| 69 | foreach($list as $name) { |
||
| 70 | $plugin = $this->loadPlugin($name); |
||
| 71 | if($plugin === null) continue; |
||
| 72 | $info = $plugin->getInfo(); |
||
| 73 | |||
| 74 | echo $tf->format( |
||
| 75 | [2, '30%', '*'], |
||
| 76 | ['', $name, $info['desc']], |
||
| 77 | ['', Colors::C_CYAN, ''] |
||
| 78 | |||
| 79 | ); |
||
| 80 | } |
||
| 81 | } |
||
| 82 | } |
||
| 83 | |||
| 84 | /** |
||
| 85 | * Instantiate a CLI plugin |
||
| 86 | * |
||
| 87 | * @param string $name |
||
| 88 | * @return DokuWiki_CLI_Plugin|null |
||
| 89 | */ |
||
| 90 | protected |
||
| 91 | function loadPlugin($name) { |
||
| 92 | // execute the plugin CLI |
||
| 93 | $class = "cli_plugin_$name"; |
||
| 94 | if(class_exists($class)) { |
||
| 95 | return new $class(); |
||
| 96 | } |
||
| 97 | return null; |
||
| 98 | } |
||
| 99 | } |
||
| 100 | |||
| 101 | // Main |
||
| 102 | $cli = new PluginCLI(); |
||
| 103 | $cli->run(); |
||
| 104 |
This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.
Consider making the comparison explicit by using
empty(..)or! empty(...)instead.