PhpBrew\VariantParser::parseCommandArguments PHP Method

parseCommandArguments() public static method

public static parseCommandArguments ( array $args )
$args array
    public static function parseCommandArguments(array $args)
    {
        $extra = array();
        $enabledVariants = array();
        $disabledVariants = array();
        // split variant strings
        $startExtra = false;
        foreach ($args as $arg) {
            if ($arg === '--') {
                $startExtra = true;
                continue;
            }
            if ($startExtra) {
                $extra[] = $arg;
                continue;
            }
            if ($arg[0] === '+' || $arg[0] === '-') {
                if (substr($arg, 0, 2) === '--') {
                    throw new InvalidVariantSyntaxException("Invalid variant syntax exception start with '--': " . $arg);
                }
                preg_match_all('#[+-][\\w_]+(=[\\"\'\\.\\/\\w_-]+)?#', $arg, $variantStrings);
                if (isset($variantStrings[0])) {
                    $variantStrings = array_filter($variantStrings[0]);
                    foreach ($variantStrings as $str) {
                        if ($str[0] == '+') {
                            $a = self::splitVariantValue(substr($str, 1));
                            $enabledVariants = array_merge($enabledVariants, $a);
                        } elseif ($str[0] == '-') {
                            $a = self::splitVariantValue(substr($str, 1));
                            $disabledVariants = array_merge($disabledVariants, $a);
                        } else {
                            throw new InvalidVariantSyntaxException($str . ' is invalid syntax');
                        }
                    }
                }
            } else {
                throw new InvalidVariantSyntaxException("Unsupported variant syntax: {$arg}");
            }
        }
        return array('enabled_variants' => $enabledVariants, 'disabled_variants' => $disabledVariants, 'extra_options' => $extra);
    }

Usage Example

Esempio n. 1
0
 public function testVariantAll()
 {
     $arg = '+all -apxs2 -mysql';
     $args = preg_split('#\\s+#', $arg);
     $info = VariantParser::parseCommandArguments($args);
     ok($info['enabled_variants']);
     ok($info['enabled_variants']['all']);
     ok($info['disabled_variants']);
     ok($info['disabled_variants']['mysql']);
     ok($info['disabled_variants']['apxs2']);
 }
All Usage Examples Of PhpBrew\VariantParser::parseCommandArguments