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(); } }
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(); } }
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()}"`; } }
public static function init($args) { 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': if ( ! isset($args[2]) OR $args[2] == 'help') { Refine::help(); return; } call_user_func('Oil\Refine::run', $args[2], array_slice($args, 3)); break; case 'install': case 'uninstall': call_user_func('Oil\Package::'.$args[1], $args[2]); 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(); } }
public static function init($args) { \Config::load('oil', true); // 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 . ' running in "' . \Fuel::$env . '" mode'); 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': case 'task': 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 '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 'r': case 'refine': $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 $phpunit_autoload_path = \Config::get('oil.phpunit.autoload_path', 'PHPUnit/Autoload.php'); @(include_once $phpunit_autoload_path); // 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."); } // Check for a custom phpunit config, but default to the one from core if (file_exists(APPPATH . 'phpunit.xml')) { $phpunit_config = APPPATH . 'phpunit.xml'; } else { $phpunit_config = COREPATH . 'phpunit.xml'; } // CD to the root of Fuel and call up phpunit with the path to our config $phpunit_command = \Config::get('oil.phpunit.binary_path', 'phpunit'); $command = 'cd ' . DOCROOT . '; ' . $phpunit_command . ' -c "' . $phpunit_config . '"'; // Respect the group options \Cli::option('group') and $command .= ' --group ' . \Cli::option('group'); \Cli::option('exclude-group') and $command .= ' --exclude-group ' . \Cli::option('exclude-group'); // Respect the coverage-html option \Cli::option('coverage-html') and $command .= ' --coverage-html ' . \Cli::option('coverage-html'); \Cli::option('coverage-clover') and $command .= ' --coverage-clover ' . \Cli::option('coverage-clover'); \Cli::option('coverage-text') and $command .= ' --coverage-text=' . \Cli::option('coverage-text'); \Cli::option('coverage-php') and $command .= ' --coverage-php ' . \Cli::option('coverage-php'); \Cli::option('log-junit') and $command .= ' --log-junit ' . \Cli::option('log-junit'); \Cli::option('file') and $command .= ' ' . \Cli::option('file'); \Cli::write('Tests Running...This may take a few moments.', 'green'); $return_code = 0; foreach (explode(';', $command) as $c) { passthru($c, $return_code_task); // Return failure if any subtask fails $return_code |= $return_code_task; } exit($return_code); break; case 's': case 'server': if (version_compare(PHP_VERSION, '5.4.0') < 0) { \Cli::write('The PHP built-in webserver is only available on PHP 5.4+', 'red'); break; } $php = \Cli::option('php', 'php'); $port = \Cli::option('p', \Cli::option('port', '8000')); $host = \Cli::option('h', \Cli::option('host', 'localhost')); $docroot = \Cli::option('d', \Cli::option('docroot', 'public/')); $router = \Cli::option('r', \Cli::option('router', __DIR__ . DS . '..' . DS . 'phpserver.php')); \Cli::write("Listening on http://{$host}:{$port}"); \Cli::write("Document root is {$docroot}"); \Cli::write("Press Ctrl-C to quit."); passthru("{$php} -S {$host}:{$port} -t {$docroot} {$router}"); break; default: static::help(); } } catch (\Exception $e) { static::print_exception($e); exit(1); } }
public static function init($args) { \Config::load('oil', true); // 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 . ' running in "' . \Fuel::$env . '" mode'); 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 'module': case 'migration': case 'task': case 'package': 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': if (isset($args[2]) and $args[2] == 'help') { Console::help(); } else { new Console(); } break; case 'p': case 'package': $action = isset($args[2]) ? $args[2] : 'help'; switch ($action) { case 'install': case 'uninstall': call_fuel_func_array('Oil\\Package::' . $action, array_slice($args, 3)); break; default: Package::help(); } break; case 'r': case 'refine': $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_fuel_func_array('Oil\\Cell::' . $action, array_slice($args, 3)); break; case 'info': case 'details': call_fuel_func_array('Oil\\Cell::info', array_slice($args, 3)); break; default: Cell::help(); } break; case 't': case 'test': if (isset($args[2]) and $args[2] == 'help') { $output = <<<HELP Usage: php oil [t|test] Runtime options: --file=<file> # Run a test on a specific file only. --group=<group> # Only runs tests from the specified group(s). --exclude-group=<group> # Exclude tests from the specified group(s). --testsuite=<testsuite> # Only runs tests from the specified testsuite(s). --coverage-clover=<file> # Generate code coverage report in Clover XML format. --coverage-html=<dir> # Generate code coverage report in HTML format. --coverage-php=<file> # Serialize PHP_CodeCoverage object to file. --coverage-text=<file> # Generate code coverage report in text format. --log-junit=<file> # Generate report of test execution in JUnit XML format to file. --debug # Display debugging information during test execution. Description: Run phpunit on all or a subset of tests defined for the current application. Examples: php oil test Documentation: http://fuelphp.com/docs/packages/oil/test.html HELP; \Cli::write($output); } else { $phpunit_command = \Config::get('oil.phpunit.binary_path', 'phpunit'); // Check if we might be using the phar library $is_phar = false; foreach (explode(':', getenv('PATH')) as $path) { if (is_file($path . DS . $phpunit_command)) { $handle = fopen($path . DS . $phpunit_command, 'r'); $is_phar = fread($handle, 18) == '#!/usr/bin/env php'; fclose($handle); if ($is_phar) { break; } } } // 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 $phpunit_autoload_path = \Config::get('oil.phpunit.autoload_path', 'PHPUnit/Autoload.php'); @(include_once $phpunit_autoload_path); // Attempt to load PHUnit. If it fails, we are done. if (!$is_phar and !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."); } // Check for a custom phpunit config, but default to the one from core if (is_file(APPPATH . 'phpunit.xml')) { $phpunit_config = APPPATH . 'phpunit.xml'; } else { $phpunit_config = COREPATH . 'phpunit.xml'; } // CD to the root of Fuel and call up phpunit with the path to our config $command = 'cd ' . DOCROOT . '; ' . $phpunit_command . ' -c "' . $phpunit_config . '"'; // Respect the group options \Cli::option('group') and $command .= ' --group ' . \Cli::option('group'); \Cli::option('exclude-group') and $command .= ' --exclude-group ' . \Cli::option('exclude-group'); // Respect the testsuite options \Cli::option('testsuite') and $command .= ' --testsuite ' . \Cli::option('testsuite'); // Respect the debug options \Cli::option('debug') and $command .= ' --debug'; // Respect the coverage-html option \Cli::option('coverage-html') and $command .= ' --coverage-html ' . \Cli::option('coverage-html'); \Cli::option('coverage-clover') and $command .= ' --coverage-clover ' . \Cli::option('coverage-clover'); \Cli::option('coverage-text') and $command .= ' --coverage-text=' . \Cli::option('coverage-text'); \Cli::option('coverage-php') and $command .= ' --coverage-php ' . \Cli::option('coverage-php'); \Cli::option('log-junit') and $command .= ' --log-junit ' . \Cli::option('log-junit'); \Cli::option('file') and $command .= ' ' . \Cli::option('file'); \Cli::write('Tests Running...This may take a few moments.', 'green'); $return_code = 0; foreach (explode(';', $command) as $c) { passthru($c, $return_code_task); // Return failure if any subtask fails $return_code |= $return_code_task; } exit($return_code); } break; case 's': case 'server': if (isset($args[2]) and $args[2] == 'help') { $output = <<<HELP Usage: php oil [s|server] Runtime options: --php=<file> # The full pathname of your PHP-CLI binary if it's not in the path. --port=<port> # TCP port number the webserver should listen too. Defaults to 8000. --host=<host> # Hostname the webserver should run at. Defaults to "localhost". --docroot=<dir> # Your FuelPHP docroot. Defaults to "public". --router=<file> # PHP router script. Defaults to "fuel/packages/oil/phpserver.php". Description: Starts a local webserver to run your FuelPHP application, using PHP 5.4+ internal webserver. Examples: php oil server -p=8080 Documentation: http://fuelphp.com/docs/packages/oil/server.html HELP; \Cli::write($output); } else { if (version_compare(PHP_VERSION, '5.4.0') < 0) { \Cli::write('The PHP built-in webserver is only available on PHP 5.4+', 'red'); break; } $php = \Cli::option('php', 'php'); $port = \Cli::option('p', \Cli::option('port', '8000')); $host = \Cli::option('h', \Cli::option('host', 'localhost')); $docroot = \Cli::option('d', \Cli::option('docroot', 'public')); $router = \Cli::option('r', \Cli::option('router', __DIR__ . DS . '..' . DS . 'phpserver.php')); \Cli::write("Listening on http://{$host}:{$port}"); \Cli::write("Document root is {$docroot}"); \Cli::write("Press Ctrl-C to quit."); passthru("{$php} -S {$host}:{$port} -t {$docroot} {$router}"); } break; case 'create': \Cli::write('You can not use "oil create", a valid FuelPHP installation already exists in this directory', 'red'); break; default: static::help(); } } catch (\Exception $e) { static::print_exception($e); exit(1); } }