protected static function parseTaskAndParameters(array $args)
{
$options = array();
if (count($args) == 0) {
$task_name = null;
} else {
$task_name = array_shift($args);
for ($i = 0, $max = count($args); $i < $max; $i++) {
if (0 === strpos($args[$i], '--')) {
if (false !== ($pos = strpos($args[$i], '='))) {
$key = substr($args[$i], 2, $pos - 2);
$value = substr($args[$i], $pos + 1);
} else {
$key = substr($args[$i], 2);
$value = true;
}
if ('[]' == substr($key, -2)) {
if (!isset($options[$key])) {
$options[$key] = array();
}
$options[$key][] = $value;
} else {
$options[$key] = $value;
}
unset($args[$i]);
}
}
$args = array_values($args);
}
return array($task_name, $args, $options);
}