cleaning up artisan.
This commit is contained in:
parent
007863a6fa
commit
fc927aa63a
|
@ -15,7 +15,7 @@
|
||||||
* retrieve them from the various parts of the CLI code. We can use
|
* retrieve them from the various parts of the CLI code. We can use
|
||||||
* the Request class to access them conveniently.
|
* the Request class to access them conveniently.
|
||||||
*/
|
*/
|
||||||
list($arguments, $_SERVER['CLI']) = Console::options($_SERVER['argv']);
|
list($arguments, $_SERVER['CLI']) = Command::options($_SERVER['argv']);
|
||||||
|
|
||||||
$_SERVER['CLI'] = array_change_key_case($_SERVER['CLI'], CASE_UPPER);
|
$_SERVER['CLI'] = array_change_key_case($_SERVER['CLI'], CASE_UPPER);
|
||||||
|
|
||||||
|
|
|
@ -9,28 +9,35 @@ class Command {
|
||||||
/**
|
/**
|
||||||
* Run a CLI task with the given arguments.
|
* Run a CLI task with the given arguments.
|
||||||
*
|
*
|
||||||
|
* <code>
|
||||||
|
* // Call the migrate artisan task
|
||||||
|
* Command::run(array('migrate'));
|
||||||
|
*
|
||||||
|
* // Call the migrate task with some arguments
|
||||||
|
* Command::run(array('migrate:rollback', 'bundle-name'))
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
* @param array $arguments
|
* @param array $arguments
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public static function run($arguments = array())
|
public static function run($arguments = array())
|
||||||
{
|
{
|
||||||
if ( ! isset($arguments[0]))
|
static::validate($arguments);
|
||||||
{
|
|
||||||
throw new \Exception("Whoops! You forgot to provide the task name.");
|
|
||||||
}
|
|
||||||
|
|
||||||
list($bundle, $task, $method) = static::parse($arguments[0]);
|
list($bundle, $task, $method) = static::parse($arguments[0]);
|
||||||
|
|
||||||
// If the task exists within a bundle, we will start the bundle so that
|
// If the task exists within a bundle, we will start the bundle so that any
|
||||||
// any dependencies can be registered in the application IoC container.
|
// dependencies can be registered in the application IoC container. If the
|
||||||
// If the task is registered in the container, it will be resolved
|
// task is registered in the container, it will be resolved via the
|
||||||
// via the container instead of by this class.
|
// container instead of by this class.
|
||||||
if (Bundle::exists($bundle)) Bundle::start($bundle);
|
if (Bundle::exists($bundle)) Bundle::start($bundle);
|
||||||
|
|
||||||
// Once the bundle has been started, we will attempt to resolve the
|
// Once the bundle has been started, we will attempt to resolve the task
|
||||||
// task instance. Tasks may be resolved through the file system or
|
// instance. Tasks may be resolved through the file system or through
|
||||||
// through the application IoC container.
|
// the application IoC container.
|
||||||
if (is_null($task = static::resolve($bundle, $task)))
|
$task = static::resolve($bundle, $task);
|
||||||
|
|
||||||
|
if (is_null($task))
|
||||||
{
|
{
|
||||||
throw new \Exception("Sorry, I can't find that task.");
|
throw new \Exception("Sorry, I can't find that task.");
|
||||||
}
|
}
|
||||||
|
@ -38,6 +45,20 @@ public static function run($arguments = array())
|
||||||
$task->$method(array_slice($arguments, 1));
|
$task->$method(array_slice($arguments, 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine if the given command arguments are valid.
|
||||||
|
*
|
||||||
|
* @param array $arguments
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
protected static function validate($arguments)
|
||||||
|
{
|
||||||
|
if ( ! isset($arguments[0]))
|
||||||
|
{
|
||||||
|
throw new \Exception("You forgot to provide the task name.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse the task name to extract the bundle, task, and method.
|
* Parse the task name to extract the bundle, task, and method.
|
||||||
*
|
*
|
||||||
|
@ -66,6 +87,14 @@ protected static function parse($task)
|
||||||
/**
|
/**
|
||||||
* Resolve an instance of the given task name.
|
* Resolve an instance of the given task name.
|
||||||
*
|
*
|
||||||
|
* <code>
|
||||||
|
* // Resolve an instance of a task
|
||||||
|
* $task = Command::resolve('application', 'migrate');
|
||||||
|
*
|
||||||
|
* // Resolve an instance of a task wtihin a bundle
|
||||||
|
* $task = Command::resolve('bundle', 'foo');
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
* @param string $bundle
|
* @param string $bundle
|
||||||
* @param string $task
|
* @param string $task
|
||||||
* @return object
|
* @return object
|
||||||
|
@ -95,6 +124,54 @@ public static function resolve($bundle, $task)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse the command line arguments and return the results.
|
||||||
|
*
|
||||||
|
* @param array $argv
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function options($argv)
|
||||||
|
{
|
||||||
|
$options = array();
|
||||||
|
|
||||||
|
$arguments = array();
|
||||||
|
|
||||||
|
for ($i = 0, $count = count($argv); $i < $count; $i++)
|
||||||
|
{
|
||||||
|
$argument = $argv[$i];
|
||||||
|
|
||||||
|
// If the CLI argument starts with a double hyphen, it is an option,
|
||||||
|
// so we will extract the value and add it to the array of options
|
||||||
|
// to be returned by the method.
|
||||||
|
if (starts_with($argument, '--'))
|
||||||
|
{
|
||||||
|
// By default, we will assume the value of the options is true,
|
||||||
|
// but if the option contains an equals sign, we will take the
|
||||||
|
// value to the right of the equals sign as the value and
|
||||||
|
// remove the value from the option key.
|
||||||
|
list($key, $value) = array(substr($argument, 2), true);
|
||||||
|
|
||||||
|
if (($equals = strpos($argument, '=')) !== false)
|
||||||
|
{
|
||||||
|
$key = substr($argument, 2, $equals - 2);
|
||||||
|
|
||||||
|
$value = substr($argument, $equals + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
$options[$key] = $value;
|
||||||
|
}
|
||||||
|
// If the CLI argument does not start with a double hyphen it's
|
||||||
|
// simply an argument to be passed to the console task so we'll
|
||||||
|
// add it to the array of "regular" arguments.
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$arguments[] = $argument;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return array($arguments, $options);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Format a bundle and task into a task class name.
|
* Format a bundle and task into a task class name.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,53 +0,0 @@
|
||||||
<?php namespace Laravel\CLI;
|
|
||||||
|
|
||||||
class Console {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Parse the command line arguments and return the results.
|
|
||||||
*
|
|
||||||
* @param array $argv
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
public static function options($argv)
|
|
||||||
{
|
|
||||||
$options = array();
|
|
||||||
|
|
||||||
$arguments = array();
|
|
||||||
|
|
||||||
for ($i = 0, $count = count($argv); $i < $count; $i++)
|
|
||||||
{
|
|
||||||
$argument = $argv[$i];
|
|
||||||
|
|
||||||
// If the CLI argument starts with a double hyphen, it is an option,
|
|
||||||
// so we will extract the value and add it to the array of options
|
|
||||||
// to be returned by the method.
|
|
||||||
if (starts_with($argument, '--'))
|
|
||||||
{
|
|
||||||
// By default, we will assume the value of the options is true,
|
|
||||||
// but if the option contains an equals sign, we will take the
|
|
||||||
// value to the right of the equals sign as the value and
|
|
||||||
// remove the value from the option key.
|
|
||||||
list($key, $value) = array(substr($argument, 2), true);
|
|
||||||
|
|
||||||
if (($equals = strpos($argument, '=')) !== false)
|
|
||||||
{
|
|
||||||
$key = substr($argument, 2, $equals - 2);
|
|
||||||
|
|
||||||
$value = substr($argument, $equals + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
$options[$key] = $value;
|
|
||||||
}
|
|
||||||
// If the CLI argument does not start with a double hyphen it is
|
|
||||||
// simply an argument to be passed to the console task so we'll
|
|
||||||
// add it to the array of "regular" arguments.
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$arguments[] = $argument;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return array($arguments, $options);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in New Issue