app.php
[--app-options]
[subcommand
--subcommand-options]
[subcommand
--subcommand-options]
[subcommand
--subcommand-options]
[arguments]
ContinuousOptionParser is for the process flow:
init app options,
parse app options
while not end
if stop at command
shift command
parse command options
else if stop at arguments
shift arguments
execute current command with the arguments.
Example code:
subcommand stack
$subcommands = array('subcommand1','subcommand2','subcommand3');
different command has its own options
$subcommand_specs = array(
'subcommand1' => $cmdspecs,
'subcommand2' => $cmdspecs,
'subcommand3' => $cmdspecs,
);
for saved options
$subcommand_options = array();
command arguments
$arguments = array();
$argv = explode(' ','-v -d -c subcommand1 -a -b -c subcommand2 -c subcommand3 arg1 arg2 arg3');
parse application options first
$parser = new ContinuousOptionParser( $appspecs );
$app_options = $parser->parse( $argv );
while( ! $parser->isEnd() ) {
if( $parser->getCurrentArgument() == $subcommands[0] ) {
$parser->advance();
$subcommand = array_shift( $subcommands );
$parser->setSpecs( $subcommand_specs[$subcommand] );
$subcommand_options[ $subcommand ] = $parser->continueParse();
} else {
$arguments[] = $parser->advance();
}
}