Improve getopt feature for command line scripts

pull/13/head
Thomas Bruederli 12 years ago
parent 2950ce49ef
commit 5218701a4a

@ -5,7 +5,7 @@
| program/include/clisetup.php | | program/include/clisetup.php |
| | | |
| This file is part of the Roundcube Webmail client | | This file is part of the Roundcube Webmail client |
| Copyright (C) 2010, The Roundcube Dev Team | | Copyright (C) 2010-2012, The Roundcube Dev Team |
| | | |
| Licensed under the GNU General Public License version 3 or | | Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. | | any later version with exceptions for skins & plugins. |
@ -31,27 +31,29 @@ require_once INSTALL_PATH . 'program/include/iniset.php';
/** /**
* Parse commandline arguments into a hash array * Parse commandline arguments into a hash array
*/ */
function get_opt($aliases=array()) function get_opt($aliases = array())
{ {
$args = array(); $args = array();
for ($i=1; $i<count($_SERVER['argv']); $i++) for ($i=1; $i < count($_SERVER['argv']); $i++) {
{
$arg = $_SERVER['argv'][$i]; $arg = $_SERVER['argv'][$i];
if (substr($arg, 0, 2) == '--') $value = true;
{ $key = null;
if ($arg[0] == '-') {
$key = preg_replace('/^-+/', '', $arg);
$sp = strpos($arg, '='); $sp = strpos($arg, '=');
$key = substr($arg, 2, $sp - 2); if ($sp > 0) {
$value = substr($arg, $sp+1); $key = substr($key, 0, $sp - 2);
} $value = substr($arg, $sp+1);
else if ($arg{0} == '-') }
{ else if (strlen($_SERVER['argv'][$i+1]) && $_SERVER['argv'][$i+1][0] != '-') {
$key = substr($arg, 1); $value = $_SERVER['argv'][++$i];
$value = $_SERVER['argv'][++$i]; }
$args[$key] = is_string($value) ? preg_replace(array('/^["\']/', '/["\']$/'), '', $value) : $value;
} }
else else
continue; $args[] = $arg;
$args[$key] = preg_replace(array('/^["\']/', '/["\']$/'), '', $value);
if ($alias = $aliases[$key]) if ($alias = $aliases[$key])
$args[$alias] = $args[$key]; $args[$alias] = $args[$key];

Loading…
Cancel
Save