133 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			133 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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));
 | |
| 
 | |
| 	$a->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,$a->plugins);
 | |
| 				$x = check_plugin_versions($info);
 | |
| 				if($enabled && ! $x) {
 | |
| 					$enabled = false;
 | |
| 					$idz = array_search($id, $a->plugins);
 | |
| 					if ($idz !== false) {
 | |
| 						unset($a->plugins[$idz]);
 | |
| 						uninstall_plugin($id);
 | |
| 						set_config("system","addon", implode(", ",$a->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 {
 | |
| 					$a->plugins[] = $p[0];
 | |
| 					install_plugin($p[0]);
 | |
| 					set_config("system","addon", implode(", ",$a->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], $a->plugins);
 | |
| 					if ($idx !== false)
 | |
| 						unset($a->plugins[$idx]);
 | |
| 					uninstall_plugin($p[0]);
 | |
| 					set_config("system","addon", implode(", ",$a->plugins));
 | |
| 					echo $p[0] . ' uninstalled.' . "\n";
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 	} 
 | |
| 
 | |
| 	killme();
 | |
| }
 | |
| 
 | |
| 
 |