<?php
/**
*+-----------------------------------------------------------------------+
*| CliParser v0.2 - 19 Oct 2011 |
*+-----------------------------------------------------------------------+
*| Olivier Bourdoux |
*| olivier.bourdoux@gmail.com |
*| www.xurei-design.be |
*| |
*| Original code from : |
*| Diego do Nascimento Feitosa |
*| diego@dnfeitosa.com |
*| www.dnfeitosa.com |
*| São Paulo/SP - Brasil |
*+-----------------------------------------------------------------------+
*| CliParser is free software; you can redistribute it and/or modify |
*| it under the terms of the GNU General Public License as published by |
*| the Free Software Foundation; either version 2 of the License, or |
*| (at your option) any later version. |
*| |
*| CliParser is distributed in the hope that it will be useful, but |
*| WITHOUT ANY WARRANTY; without even the implied warranty of |
*| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
*| General Public License for more details. |
*| |
*| You should have received a copy of the GNU General Public License |
*| along with CliParser; if not, write to the Free Software |
*| Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA |
*| 02111-1307 USA |
*+-----------------------------------------------------------------------+
**/
require_once('CliParser.inc');
$clistring = new CliTokenString("-c");
$clistring->setDescription("It requires a string");
$clihelp = new CliTokenBoolean("--help");
$clihelp->setDescription("Token that shows a help message");
$clisingleton = new CliTokenBoolean("-e");
$clisingleton->setDescription("It doesn't require any value. The existence of this argument is enough");
$clibool = new CliTokenBoolean("-b");
$clibool->setDescription("Boolean token");
$clidir = new CliTokenDirectory("-d");
$clidir->setDescription("This token requires a directory path as argument. If the argument isn't a directory path, an error message will appear.");
$clifile = new CliTokenDirectory("-f");
$clifile->setDescription("This token requires a file path as argument. If the argument isn't a file path, an error message will appear.");
$cliint = new CliTokenInteger("-i");
$cliint->setDescription("This token requires an integer path as argument. If the argument isn't an integer, an error message will appear.");
$clienum = new CliTokenEnum("-enum", array('the', 'different', 'values', 'accepted'));
$clienum->setDescription("This token requires its argument to be one of the values specified");
class MyCliParser extends CliParser
{
public function getHelpMessage()
{
global $argv;
echo sprintf("Usage: %s [options] <file(s)>\nOptions :\n", $argv[0]);
$this->getDescriptions();
echo "\n";
exit;
}
}
//Building the parser and parsing the arguments
$cli = new MyCliParser($_SERVER["argv"]);
$cli->register($clihelp, false); // false because it not require an argument
$cli->register($clistring);
$cli->register($clisingleton, false); // false because it not require an argument
$cli->register($clibool);
$cli->register($clidir);
$cli->register($clifile);
$cli->register($cliint);
$cli->register($clienum);
$cli->parse();
//Showing the help message if asked
if ($clihelp->getValue())
{
$cli->getHelpMessage();
exit;
}
//Showing the options
var_dump($clistring->getValue());
var_dump($clisingleton->getValue());
var_dump($clibool->getValue());
var_dump($clidir->getValue());
var_dump($clifile->getValue());
var_dump($cliint->getValue());
//Showing the non options
var_dump($cli->getNonOptions());
//Some commands :
// php example.php --help => will show the help message
// php example.php -c foo => the $clistring token will be set
// php example.php -e -c foo => the $clisingleton token will be set
// php example.php nonoption1 -i 42 => one non-option argument : nonoption1
// php example.php -i 42 nonoption1 => same thing, different order
// php example.php -i 42.5 => shows an error : 42.5 is not an integer
?>
|