mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-03 13:58:55 +08:00
Refactored usage error in console commands.
This commit is contained in:
@ -93,8 +93,7 @@ class Application extends \yii\base\Application
|
||||
if ($request->getIsConsoleRequest()) {
|
||||
return $this->runAction($request->route, $request->params);
|
||||
} else {
|
||||
echo "Error: this script must be run from the command line.";
|
||||
return 1;
|
||||
throw new BadUsageException(\Yii::t('yii', 'this script must be run from the command line.'));
|
||||
}
|
||||
}
|
||||
|
||||
@ -106,14 +105,14 @@ class Application extends \yii\base\Application
|
||||
* @param string $route the route that specifies the action.
|
||||
* @param array $params the parameters to be passed to the action
|
||||
* @return integer the status code returned by the action execution. 0 means normal, and other values mean abnormal.
|
||||
* @throws BadUsageException if the route is invalid
|
||||
*/
|
||||
public function runAction($route, $params = array())
|
||||
{
|
||||
try {
|
||||
return parent::runAction($route, $params);
|
||||
} catch (InvalidRouteException $e) {
|
||||
echo "Error: unknown command \"$route\".\n";
|
||||
return 1;
|
||||
throw new BadUsageException(\Yii::t('yii', 'Unknown command "{command}".', array('{command}' => $route)));
|
||||
}
|
||||
}
|
||||
|
||||
@ -148,9 +147,4 @@ class Application extends \yii\base\Application
|
||||
),
|
||||
));
|
||||
}
|
||||
|
||||
public function usageError($message)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
33
framework/console/BadUsageException.php
Normal file
33
framework/console/BadUsageException.php
Normal file
@ -0,0 +1,33 @@
|
||||
<?php
|
||||
/**
|
||||
* BadUsageException class file.
|
||||
*
|
||||
* @link http://www.yiiframework.com/
|
||||
* @copyright Copyright © 2008 Yii Software LLC
|
||||
* @license http://www.yiiframework.com/license/
|
||||
*/
|
||||
|
||||
namespace yii\console;
|
||||
|
||||
/**
|
||||
* BadUsageException represents an exception caused by incorrect usage of the end user.
|
||||
*
|
||||
* @author Qiang Xue <qiang.xue@gmail.com>
|
||||
* @since 2.0
|
||||
*/
|
||||
class BadUsageException extends \yii\base\Exception
|
||||
{
|
||||
/**
|
||||
* @var boolean whether this exception is caused by end user's mistake (e.g. wrong URL)
|
||||
*/
|
||||
public $causedByUser = true;
|
||||
|
||||
/**
|
||||
* @return string the user-friendly name of this exception
|
||||
*/
|
||||
public function getName()
|
||||
{
|
||||
return \Yii::t('yii', 'Bad Usage');
|
||||
}
|
||||
}
|
||||
|
||||
@ -11,7 +11,6 @@ namespace yii\console;
|
||||
|
||||
use Yii;
|
||||
use yii\base\Action;
|
||||
use yii\base\InvalidRequestException;
|
||||
use yii\base\InvalidRouteException;
|
||||
|
||||
/**
|
||||
@ -70,16 +69,16 @@ class Controller extends \yii\base\Controller
|
||||
* @param Action $action the currently requested action
|
||||
* @param array $missingParams the names of the missing parameters
|
||||
* @param array $unknownParams the unknown parameters (name=>value)
|
||||
* @throws InvalidRequestException if there are missing or unknown parameters
|
||||
* @throws BadUsageException if there are missing or unknown parameters
|
||||
*/
|
||||
public function validateActionParams($action, $missingParams, $unknownParams)
|
||||
{
|
||||
if (!empty($missingParams)) {
|
||||
throw new InvalidRequestException(Yii::t('yii', 'Missing required options: {params}', array(
|
||||
throw new BadUsageException(Yii::t('yii', 'Missing required options: {params}', array(
|
||||
'{params}' => implode(', ', $missingParams),
|
||||
)));
|
||||
} elseif (!empty($unknownParams)) {
|
||||
throw new InvalidRequestException(Yii::t('yii', 'Unknown options: {params}', array(
|
||||
throw new BadUsageException(Yii::t('yii', 'Unknown options: {params}', array(
|
||||
'{params}' => implode(', ', $unknownParams),
|
||||
)));
|
||||
}
|
||||
@ -103,12 +102,6 @@ class Controller extends \yii\base\Controller
|
||||
}
|
||||
}
|
||||
|
||||
public function usageError($message)
|
||||
{
|
||||
echo "\nError: $message\n";
|
||||
Yii::$application->end(1);
|
||||
}
|
||||
|
||||
public function globalOptions()
|
||||
{
|
||||
return array();
|
||||
|
||||
@ -9,7 +9,9 @@
|
||||
|
||||
namespace yii\console\controllers;
|
||||
|
||||
use Yii;
|
||||
use yii\base\Application;
|
||||
use yii\console\BadUsageException;
|
||||
use yii\base\InlineAction;
|
||||
use yii\console\Controller;
|
||||
use yii\util\StringHelper;
|
||||
@ -47,27 +49,28 @@ class HelpController extends Controller
|
||||
* @param array $args additional anonymous command line arguments.
|
||||
* You may provide a command name to display its detailed information.
|
||||
* @return integer the exit status
|
||||
* @throws BadUsageException if the command for help is unknown
|
||||
*/
|
||||
public function actionIndex($args = array())
|
||||
{
|
||||
if (empty($args)) {
|
||||
$status = $this->getHelp();
|
||||
$this->getHelp();
|
||||
} else {
|
||||
$result = \Yii::$application->createController($args[0]);
|
||||
$result = Yii::$application->createController($args[0]);
|
||||
if ($result === false) {
|
||||
echo "Error: no help for unknown command \"{$args[0]}\".\n";
|
||||
return 1;
|
||||
throw new BadUsageException(Yii::t('yii', 'No help for unknown command "{command}".', array(
|
||||
'{command}' => $args[0],
|
||||
)));
|
||||
}
|
||||
|
||||
list($controller, $actionID) = $result;
|
||||
|
||||
if ($actionID === '') {
|
||||
$status = $this->getControllerHelp($controller);
|
||||
$this->getControllerHelp($controller);
|
||||
} else {
|
||||
$status = $this->getActionHelp($controller, $actionID);
|
||||
$this->getActionHelp($controller, $actionID);
|
||||
}
|
||||
}
|
||||
return $status;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -76,7 +79,7 @@ class HelpController extends Controller
|
||||
*/
|
||||
public function getCommands()
|
||||
{
|
||||
$commands = $this->getModuleCommands(\Yii::$application);
|
||||
$commands = $this->getModuleCommands(Yii::$application);
|
||||
sort($commands);
|
||||
return array_unique($commands);
|
||||
}
|
||||
@ -91,7 +94,6 @@ class HelpController extends Controller
|
||||
$actions = array_keys($controller->actions());
|
||||
$class = new \ReflectionClass($controller);
|
||||
foreach ($class->getMethods() as $method) {
|
||||
/** @var $method \ReflectionMethod */
|
||||
$name = $method->getName();
|
||||
if ($method->isPublic() && !$method->isStatic() && strpos($name, 'action') === 0 && $name !== 'actions') {
|
||||
$actions[] = StringHelper::camel2id(substr($name, 6));
|
||||
@ -136,7 +138,6 @@ class HelpController extends Controller
|
||||
|
||||
/**
|
||||
* Displays all available commands.
|
||||
* @return integer the exit status
|
||||
*/
|
||||
protected function getHelp()
|
||||
{
|
||||
@ -152,13 +153,11 @@ class HelpController extends Controller
|
||||
} else {
|
||||
echo "\nNo commands are found.\n";
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays the overall information of the command.
|
||||
* @param Controller $controller the controller instance
|
||||
* @return integer the exit status
|
||||
*/
|
||||
protected function getControllerHelp($controller)
|
||||
{
|
||||
@ -199,22 +198,21 @@ class HelpController extends Controller
|
||||
}
|
||||
echo "\n";
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays the detailed information of a command action.
|
||||
* @param Controller $controller the controller instance
|
||||
* @param string $actionID action ID
|
||||
* @return integer the exit status
|
||||
* @throws BadUsageException if the action does not exist
|
||||
*/
|
||||
protected function getActionHelp($controller, $actionID)
|
||||
{
|
||||
$action = $controller->createAction($actionID);
|
||||
if ($action === null) {
|
||||
echo 'Error: no help for unknown sub-command "' . $controller->getUniqueId() . "/$actionID\".\n";
|
||||
return 1;
|
||||
throw new BadUsageException(Yii::t('yii', 'No help for unknown sub-command "{command}".', array(
|
||||
'{command}' => $controller->getUniqueId() . "/$actionID",
|
||||
)));
|
||||
}
|
||||
if ($action instanceof InlineAction) {
|
||||
$method = new \ReflectionMethod($controller, 'action' . $action->id);
|
||||
@ -245,8 +243,6 @@ class HelpController extends Controller
|
||||
}
|
||||
echo "\n";
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user