示例#1
0
文件: cli.php 项目: netspencer/fuel
 public static function init($args)
 {
     try {
         if (!isset($args[1])) {
             static::help();
             return;
         }
         switch ($args[1]) {
             case 'g':
             case 'generate':
                 switch ($args[2]) {
                     case 'controller':
                     case 'model':
                     case 'view':
                     case 'views':
                     case 'migration':
                         call_user_func('Oil\\Generate::' . $args[2], array_slice($args, 3));
                         break;
                     case 'scaffold':
                         call_user_func('Oil\\Scaffold::generate', array_slice($args, 3));
                         break;
                     default:
                         Generate::help();
                 }
                 break;
             case 'c':
             case 'console':
                 new Console();
             case 'r':
             case 'refine':
                 $task = isset($args[2]) ? $args[2] : null;
                 call_user_func('Oil\\Refine::run', $task, array_slice($args, 3));
                 break;
             case 'p':
             case 'package':
                 switch ($args[2]) {
                     case 'install':
                     case 'uninstall':
                         call_user_func_array('Oil\\Package::' . $args[2], array_slice($args, 3));
                         break;
                     default:
                         Package::help();
                 }
                 break;
             case '-v':
             case '--version':
                 \Cli::write('Fuel: ' . \Fuel::VERSION);
                 break;
             case 'test':
                 \Fuel::add_package('octane');
                 call_user_func('\\Fuel\\Octane\\Tests::run_' . $args[2], array_slice($args, 3));
                 break;
             default:
                 static::help();
         }
     } catch (Exception $e) {
         \Cli::write(\Cli::color('Error: ' . $e->getMessage(), 'light_red'));
         \Cli::beep();
     }
 }
 private function main()
 {
     \Cli::write(sprintf('Fuel %s - PHP %s (%s) (%s) [%s]', \Fuel::VERSION, phpversion(), php_sapi_name(), self::build_date(), PHP_OS));
     // Loop until they break it
     while (TRUE) {
         if (\Cli::$readline_support) {
             readline_completion_function(array(__CLASS__, 'tab_complete'));
         }
         if (!($__line = rtrim(trim(trim(\Cli::input('>>> ')), PHP_EOL), ';'))) {
             continue;
         }
         if ($__line == 'quit') {
             break;
         }
         // Add this line to history
         //$this->history[] = array_slice($this->history, 0, -99) + array($line);
         if (\Cli::$readline_support) {
             readline_add_history($__line);
         }
         if (self::is_immediate($__line)) {
             $__line = "return ({$__line})";
         }
         ob_start();
         // Unset the previous line and execute the new one
         $random_ret = \Str::random();
         try {
             $ret = eval("unset(\$__line); {$__line};");
         } catch (\Exception $e) {
             $ret = $random_ret;
             $__line = $e->getMessage();
         }
         // Error was returned
         if ($ret === $random_ret) {
             \Cli::error('Parse Error - ' . $__line);
             \Cli::beep();
         }
         if (ob_get_length() == 0) {
             if (is_bool($ret)) {
                 echo $ret ? 'true' : 'false';
             } elseif (is_string($ret)) {
                 echo addcslashes($ret, "....ÿ");
             } elseif (!is_null($ret)) {
                 var_export($ret);
             }
         }
         unset($ret);
         $out = ob_get_contents();
         ob_end_clean();
         if (strlen($out) > 0 && substr($out, -1) != PHP_EOL) {
             $out .= PHP_EOL;
         }
         echo $out;
         unset($out);
     }
 }
示例#3
0
 private function main()
 {
     echo sprintf('Fuel %s - PHP %s (%s) (%s) [%s]', \Fuel::VERSION, phpversion(), php_sapi_name(), self::build_date(), PHP_OS) . PHP_EOL;
     // Loop until they break it
     while (TRUE) {
         echo ">>> ";
         if (!($__line = rtrim(trim(trim(fgets(STDIN)), PHP_EOL), ';'))) {
             continue;
         }
         if ($__line == 'quit') {
             break;
         }
         if (self::is_immediate($__line)) {
             $__line = "return ({$__line})";
         }
         ob_start();
         // Unset the previous line and execute the new one
         $ret = eval("unset(\$__line); {$__line};");
         // Error was returned
         if ($ret === false) {
             \Cli::write(\Cli::color('Parse Error - ' . $__line, 'light_red'));
             \Cli::beep();
         }
         if (ob_get_length() == 0) {
             if (is_bool($ret)) {
                 echo $ret ? "true" : "false";
             } else {
                 if (is_string($ret)) {
                     echo addcslashes($ret, "....ÿ");
                 } else {
                     if (!is_null($ret)) {
                         var_export($ret);
                     }
                 }
             }
         }
         unset($ret);
         $out = ob_get_contents();
         ob_end_clean();
         if (strlen($out) > 0 && substr($out, -1) != PHP_EOL) {
             $out .= PHP_EOL;
         }
         echo $out;
         unset($out);
     }
 }
示例#4
0
 public static function init($args)
 {
     // Remove flag options from the main argument list
     for ($i = 0; $i < count($args); $i++) {
         if (strpos($args[$i], '-') === 0) {
             unset($args[$i]);
         }
     }
     try {
         if (!isset($args[1])) {
             if (\Cli::option('v', \Cli::option('version'))) {
                 \Cli::write('Fuel: ' . \Fuel::VERSION);
                 return;
             }
             static::help();
             return;
         }
         switch ($args[1]) {
             case 'g':
             case 'generate':
                 $action = isset($args[2]) ? $args[2] : 'help';
                 $subfolder = 'default';
                 if (is_int(strpos($action, 'scaffold/'))) {
                     $subfolder = str_replace('scaffold/', '', $action);
                     $action = 'scaffold';
                 }
                 switch ($action) {
                     case 'controller':
                     case 'model':
                     case 'views':
                     case 'migration':
                         call_user_func('Oil\\Generate::' . $action, array_slice($args, 3));
                         break;
                     case 'scaffold':
                         call_user_func('Oil\\Scaffold::generate', array_slice($args, 3), $subfolder);
                         break;
                     default:
                         Generate::help();
                 }
                 break;
             case 'c':
             case 'console':
                 new Console();
             case 'r':
             case 'refine':
                 // Developers of third-party tasks may not be displaying PHP errors. Report any error and quit
                 set_error_handler(function ($errno, $errstr, $errfile, $errline) {
                     \Cli::error("Error: {$errstr} in {$errfile} on {$errline}");
                     \Cli::beep();
                     exit;
                 });
                 $task = isset($args[2]) ? $args[2] : null;
                 call_user_func('Oil\\Refine::run', $task, array_slice($args, 3));
                 break;
             case 'p':
             case 'package':
                 $action = isset($args[2]) ? $args[2] : 'help';
                 switch ($action) {
                     case 'install':
                     case 'uninstall':
                         call_user_func_array('Oil\\Package::' . $action, array_slice($args, 3));
                         break;
                     default:
                         Package::help();
                 }
                 break;
             case 't':
             case 'test':
                 // Suppressing this because if the file does not exist... well thats a bad thing and we can't really check
                 // I know that supressing errors is bad, but if you're going to complain: shut up. - Phil
                 @(include_once 'PHPUnit/Autoload.php');
                 // Attempt to load PHUnit.  If it fails, we are done.
                 if (!class_exists('PHPUnit_Framework_TestCase')) {
                     throw new Exception('PHPUnit does not appear to be installed.' . PHP_EOL . PHP_EOL . "\tPlease visit http://phpunit.de and install.");
                 }
                 // CD to the root of Fuel and call up phpunit with a path to our config
                 $command = 'cd ' . DOCROOT . '; phpunit -c "' . COREPATH . 'phpunit.xml"';
                 // Respect the group option
                 \Cli::option('group') and $command .= ' --group ' . \Cli::option('group');
                 // Respect the coverage-html option
                 \Cli::option('coverage-html') and $command .= ' --coverage-html ' . \Cli::option('coverage-html');
                 passthru($command);
                 break;
             default:
                 static::help();
         }
     } catch (Exception $e) {
         \Cli::error('Error: ' . $e->getMessage());
         \Cli::beep();
     }
 }
示例#5
0
 public static function init($args)
 {
     // Remove flag options from the main argument list
     $args = self::_clear_args($args);
     try {
         if (!isset($args[1])) {
             if (\Cli::option('v', \Cli::option('version'))) {
                 \Cli::write('Fuel: ' . \Fuel::VERSION);
                 return;
             }
             static::help();
             return;
         }
         switch ($args[1]) {
             case 'g':
             case 'generate':
                 $action = isset($args[2]) ? $args[2] : 'help';
                 $subfolder = 'orm';
                 if (is_int(strpos($action, '/'))) {
                     list($action, $subfolder) = explode('/', $action);
                 }
                 switch ($action) {
                     case 'config':
                     case 'controller':
                     case 'model':
                     case 'migration':
                         call_user_func('Oil\\Generate::' . $action, array_slice($args, 3));
                         break;
                     case 'views':
                         call_user_func('Oil\\Generate::views', array_slice($args, 3), $subfolder);
                         break;
                     case 'admin':
                         call_user_func('Oil\\Generate_Admin::forge', array_slice($args, 3), $subfolder);
                         break;
                     case 'scaffold':
                         call_user_func('Oil\\Generate_Scaffold::forge', array_slice($args, 3), $subfolder);
                         break;
                     default:
                         Generate::help();
                 }
                 break;
             case 'c':
             case 'console':
                 new Console();
             case 'r':
             case 'refine':
                 // Developers of third-party tasks may not be displaying PHP errors. Report any error and quit
                 set_error_handler(function ($errno, $errstr, $errfile, $errline) {
                     if (!error_reporting()) {
                         return;
                     }
                     // If the error was supressed with an @ then we ignore it!
                     \Cli::error("Error: {$errstr} in {$errfile} on {$errline}");
                     \Cli::beep();
                     exit;
                 });
                 $task = isset($args[2]) ? $args[2] : null;
                 call_user_func('Oil\\Refine::run', $task, array_slice($args, 3));
                 break;
             case 'cell':
             case 'cells':
                 $action = isset($args[2]) ? $args[2] : 'help';
                 switch ($action) {
                     case 'list':
                         call_user_func('Oil\\Cell::all');
                         break;
                     case 'search':
                     case 'install':
                     case 'upgrade':
                     case 'uninstall':
                         call_user_func_array('Oil\\Cell::' . $action, array_slice($args, 3));
                         break;
                     case 'info':
                     case 'details':
                         call_user_func_array('Oil\\Cell::info', array_slice($args, 3));
                         break;
                     default:
                         Cell::help();
                 }
                 break;
             case 't':
             case 'test':
                 // Suppressing this because if the file does not exist... well thats a bad thing and we can't really check
                 // I know that supressing errors is bad, but if you're going to complain: shut up. - Phil
                 @(include_once 'PHPUnit/Autoload.php');
                 // Attempt to load PHUnit.  If it fails, we are done.
                 if (!class_exists('PHPUnit_Framework_TestCase')) {
                     throw new Exception('PHPUnit does not appear to be installed.' . PHP_EOL . PHP_EOL . "\tPlease visit http://phpunit.de and install.");
                 }
                 // CD to the root of Fuel and call up phpunit with a path to our config
                 $command = 'cd ' . DOCROOT . '; phpunit -c "' . COREPATH . 'phpunit.xml"';
                 // Respect the group option
                 \Cli::option('group') and $command .= ' --group ' . \Cli::option('group');
                 // Respect the coverage-html option
                 \Cli::option('coverage-html') and $command .= ' --coverage-html ' . \Cli::option('coverage-html');
                 \Cli::write('Tests Running...This may take a few moments.', 'green');
                 foreach (explode(';', $command) as $c) {
                     passthru($c);
                 }
                 break;
             default:
                 static::help();
         }
     } catch (Exception $e) {
         \Cli::error('Error: ' . $e->getMessage());
         \Cli::beep();
         \Cli::option('speak') and `say --voice="Trinoids" "{$e->getMessage()}"`;
     }
 }
示例#6
0
 private function _create_admin()
 {
     \Cli::beep(1);
     // get attention
     $create_admin = \Cli::prompt("\nCreate an admin user?", array('y', 'n'));
     if ($create_admin === 'y') {
         $data = array('username' => \Cli::prompt("Please enter an admin username"), 'email' => \Cli::prompt("Please enter an admin email"), 'password' => \Cli::prompt("Please enter an admin password"));
         try {
             $user = new \Model_User($data);
             if (\Config::get('warden.confirmable.in_use') === true) {
                 $user->is_confirmed = true;
             }
             $user->roles[] = new \Model_Role(array('name' => 'Admin', 'description' => 'Site admin role.'));
             $user->save();
             $roles = array();
             foreach ($user->roles as $role) {
                 $roles[] = "<id: {$role->id}, name: {$role->name}>";
             }
             \Cli::write(\Cli::color("\nUsername : {$user->username}", 'blue'));
             \Cli::write(\Cli::color("Email    : {$user->email}", 'blue'));
             \Cli::write(\Cli::color("Password : {$data['password']}", 'blue'));
             if (!empty($roles)) {
                 \Cli::write(\Cli::color('Roles	 : ' . join(', ', $roles), 'blue'));
             }
         } catch (\Exception $e) {
             \Cli::error("\n:( Failed to create admin user because: " . $e->getMessage());
         }
     }
 }
示例#7
0
 private static function print_exception(\Exception $ex)
 {
     \Cli::error('Uncaught exception ' . get_class($ex) . ': ' . $ex->getMessage());
     \Cli::error('Callstack: ');
     \Cli::error($ex->getTraceAsString());
     \Cli::beep();
     \Cli::option('speak') and `say --voice="Trinoids" "{$ex->getMessage()}"`;
     if (($previous = $ex->getPrevious()) != null) {
         \Cli::error('');
         \Cli::error('Previous exception: ');
         static::print_exception($previous);
     }
 }
示例#8
0
 */
register_shutdown_function(function () {
    // reset the autoloader
    \Autoloader::_reset();
    // make sure we're having an output filter so we can display errors
    // occuring before the main config file is loaded
    \Config::get('security.output_filter', null) or \Config::set('security.output_filter', 'Security::htmlentities');
    try {
        // fire any app shutdown events
        \Event::instance()->trigger('shutdown', '', 'none', true);
        // fire any framework shutdown events
        \Event::instance()->trigger('fuel-shutdown', '', 'none', true);
    } catch (\Exception $e) {
        if (\Fuel::$is_cli) {
            \Cli::error("Error: " . $e->getMessage() . " in " . $e->getFile() . " on " . $e->getLine());
            \Cli::beep();
            exit(1);
        }
    }
    return \Error::shutdown_handler();
});
set_exception_handler(function (\Exception $e) {
    // reset the autoloader
    \Autoloader::_reset();
    // deal with PHP bugs #42098/#54054
    if (!class_exists('Error')) {
        include COREPATH . 'classes/error.php';
        class_alias('\\Fuel\\Core\\Error', 'Error');
        class_alias('\\Fuel\\Core\\PhpErrorException', 'PhpErrorException');
    }
    return \Error::exception_handler($e);