#!/usr/bin/env php <?php // Hubzilla plugin management utility function usage() { echo <<< EOT Usage: util/addons list # list installed addons util/addons list all # list all addons (*)= installed, (!)= disabled due to version compatibility util/addons install foo # install addon named 'foo' util/addons uninstall foo # uninstall addon named 'foo' EOT; } require_once('include/cli_startup.php'); cli_startup(); $a = get_app(); $plugs = get_config('system', 'addon'); $plugins_arr = array(); if($plugs) $plugins_arr = explode(',', str_replace(' ', '', $plugs)); App::$plugins = $plugins_arr; $plugins = array(); $files = glob('addon/*/'); if($files) { foreach($files as $file) { if(is_dir($file)){ list($tmp, $id) = array_map('trim', explode('/', $file)); $info = get_plugin_info($id); $enabled = in_array($id,App::$plugins); $x = check_plugin_versions($info); if($enabled && ! $x) { $enabled = false; $idz = array_search($id, App::$plugins); if ($idz !== false) { unset(App::$plugins[$idz]); uninstall_plugin($id); set_config("system","addon", implode(", ",App::$plugins)); } } $info['disabled'] = 1-intval($x); $plugins[] = array( $id, (($enabled)? '*' : '') , $info); } } } if($argc == 1) { usage(); killme(); } if($argc == 2 && $argv[1] === 'list') { if($plugins) { foreach($plugins as $p) { if($p[1]) { echo $p[0] . "\n"; } } } killme(); } if($argc == 3 && $argv[1] === 'list' && $argv[2] === 'all') { if($plugins) { foreach($plugins as $p) { echo $p[0] . (($p[1]) ? $p[1] : (($p[2]['disabled']) ? '!' : '')) . "\n"; } } killme(); } if($argc == 3 && $argv[1] === 'install') { if($plugins) { foreach($plugins as $p) { if($p[0] === $argv[2]) { if($p[1]) echo $p[0] . ' already installed.' . "\n"; elseif($p[2]['disabled']) echo $p[0] . ' disabled (version compatibility).' . "\n"; else { App::$plugins[] = $p[0]; install_plugin($p[0]); set_config("system","addon", implode(", ",App::$plugins)); echo $p[0] . ' installed.' . "\n"; } } } } killme(); } if($argc == 3 && $argv[1] === 'uninstall') { if($plugins) { foreach($plugins as $p) { if($p[0] === $argv[2]) { if(! $p[1]) echo $p[0] . ' not installed.' . "\n"; elseif($p[2]['disabled']) echo $p[0] . ' disabled (version compatibility).' . "\n"; else { $idx = array_search($p[0], App::$plugins); if ($idx !== false) unset(App::$plugins[$idx]); uninstall_plugin($p[0]); set_config("system","addon", implode(", ",App::$plugins)); echo $p[0] . ' uninstalled.' . "\n"; } } } } killme(); }