Exemplo n.º 1
0
/**
 * Preps the application for running, then runs it. If this function is called more than once, an E_USER_ERROR is triggered.
 * 
 * @param string $root_dir The path to the root of the installation.
 * @return void
 */
function StartCurator()
{
    static $did_start = false;
    // set up the exit status.
    $exit_status = 0;
    // make sure this is only run once.
    if ($did_start === false) {
        $autoload = Autoload::singleton();
        // configure the autoloader.
        try {
            $autoload->setBaseDir(CURATOR_APP_DIR);
            $autoload->register();
        } catch (\Exception $e) {
            Console::stderr('** Could not register the autoloader:');
            Console::stderr('   ' . $e->getMessage());
            die;
        }
        // once the autoloader is in place, we are started up.
        $did_start = true;
        try {
            $app = new Application();
            $exit_status = $app->run();
        } catch (\Exception $e) {
            Console::stderr('** Could not run the application:');
            Console::stderr('   ' . $e->getMessage());
            die;
        }
    } else {
        // if we are called again, bail.
        trigger_error('StartCurator called after already being called.', E_USER_ERROR);
    }
    // send the status back.
    return $exit_status;
}
Exemplo n.º 2
0
 /**
  * Runs the application, returning the status to exit with.
  * 
  * @return integer The exit status.
  * @access public
  */
 public function run()
 {
     $exit_status = 0;
     // Curator doesn't do anything without at least one argument, besides the curator command itself.
     if ($this->argc === 0) {
         Console::stdout('Use \'' . $this->cmd . ' --help\' for usage information.');
     } else {
         try {
             $parser = $this->buildCommandLineParser();
             $result = $parser->parse();
             // determine where our relevant directories are.
             if (!empty($result->options['proj_path'])) {
                 $project_dir = realpath($result->options['proj_path']);
             }
             if (empty($project_dir)) {
                 $project_dir = $_SERVER['PWD'];
             }
             $this->createDirectoryAtPath($project_dir);
             try {
                 $project = new Project($project_dir);
                 switch ($result->command_name) {
                     case 'new':
                         $project->install();
                         break;
                     case 'clean':
                         $project->clean();
                         break;
                     case 'build':
                         $project->build();
                         break;
                 }
             } catch (\Exception $e) {
                 Console::stderr('** Command \'' . $result->command_name . '\' has failed:');
                 Console::stderr('  ' . $e->getMessage());
             }
         } catch (\Exception $e) {
             $parser->displayError($e->getMessage());
             $exit_status = $e->getCode();
         }
     }
     return $exit_status;
 }