<?php 
 
namespace App\Commands; 
 
class CLI extends \Jackbooted\Html\WebPage { 
    const DEF = '\App\Commands\CLI->index()'; 
 
    private static $commands = [ 
        'JACK:check_system'   => '\App\Commands\JackCLI->checkSystem()', 
        'JACK:version'        => '\App\Commands\JackCLI->version()', 
        'JACK:set_var'        => '\App\Commands\JackCLI::setVar()', 
 
        'DB:migrate'          => '\Jackbooted\DB\Migrations::migrate()', 
        'DB:initialize'       => '\App\Commands\InstallationCLI::initialize()', 
    ]; 
 
    private static $helpText = <<<TXT 
php jack.php <command> 
<command> is one of the following: 
    JACK 
    ---- 
    JACK:check_system   - Returns the status of the system queues, etc 
    JACK:version        - Current vesion of the system 
    JACK:set_var        - Sets a config value in the database 
 
    DB 
    ------ 
    DB:initialize     - Set up the base database 
    DB:migrate        - will install the database and install all models 
 
TXT; 
 
    public static function init () { 
        self::$log = \Jackbooted\Util\Log4PHP::logFactory ( __CLASS__ ); 
    } 
 
    public function index() 
    { 
        global $argv; 
        if ( count( $argv ) < 2 ) return $this->help(); 
 
        if ( isset( self::$commands[$argv[1]] ) ) { 
            return self::execAction ( self::$commands[$argv[1]] ); 
        } 
        else { 
            return $this->help(); 
        } 
    } 
 
    public function help() { 
        // Check the commands are valid 
        foreach ( self::$commands as $cmd ) { 
            $parts = preg_split ( '/(->)|(::)/' , $cmd ); 
            $clazz = $parts[0]; 
 
            if ( $clazz != '\\' . get_class( new $clazz ) ) { 
                echo "Error: $clazz not found\n"; 
            } 
        } 
 
        return self::$helpText; 
    } 
} 
 
 |