<?php
/**
 * Example for Console_Getargs class
 * 
 * $Id$
 */

require_once 'Console/Getargs.php';

$config = array(
            // Option takes 2 values
            'files|images' => array('short' => 'f|i',
				    'min' => 2,
				    'max' => 2,
				    'desc' => 'Set the source and destination image files.'),
            // Option takes 1 value
            'width' => array('short' => 'w',
			     'min' => 1,
			     'max' => 1,
			     'desc' => 'Set the new width of the image.'),
            // Option is a switch
            'debug' => array('short' => 'd',
			     'max' => 0,
			     'desc' => 'Switch to debug mode.'),
            // Option takes from 1 to 3 values, using the default value(s) if the arg is not present
            'formats' => array('min' => 1,
			       'max' => 3,
			       'desc' => 'Set the image destination format.',
			       'default' => array('jpegbig', 'jpegsmall')),
            // Option takes from 1 to an unlimited number of values
            'filters' => array('short' => 'fi',
			       'min' => 1,
			       'max' => -1,
			       'desc' => 'Set the filters to be applied to the image upon conversion. The filters will be used in the order they are set.'),
            // Option accept 1 value or nothing. If nothing, then the default value is used
            'verbose' => array('short' => 'v',
			       'min' => 0,
			       'max' => 1,
			       'desc' => 'Set the verbose level.',
			       'default' => 3),
            // Parameters. Anything leftover at the end of the command line is added.
            CONSOLE_GETARGS_PARAMS => array('min' => 1,
					    'max' => 2,
					    'desc' =>
					    'Set the application parameters.',
					    'default' => 'DEFAULT')
            );

$args =& Console_Getargs::factory($config);

// Use the following two lines to test passing an array
// other than $_SERVER['argv']
//$test =  array('-dvw', 500, 'foo1', 'foo2');
//$args =& Console_Getargs::factory($config, $test);

if (PEAR::isError($args)) {
    $header = "Console_Getargs Example\n".
              'Usage: '.basename($_SERVER['SCRIPT_NAME'])." [options]\n\n";
    if ($args->getCode() === CONSOLE_GETARGS_ERROR_USER) {
        echo Console_Getargs::getHelp($config, $header, $args->getMessage())."\n";
    } else if ($args->getCode() === CONSOLE_GETARGS_HELP) {
        echo Console_Getargs::getHelp($config, $header)."\n";
        // To see the automatic header uncomment this line
        //echo Console_Getargs::getHelp($config)."\n";
    }
    exit;
}

echo 'Verbose: '.$args->getValue('verbose')."\n";
echo 'Formats: '.(is_array($args->getValue('formats')) ? implode(', ', $args->getValue('formats'))."\n" : $args->getValue('formats')."\n");
echo 'Files: '.($args->isDefined('files') ? implode(', ', $args->getValue('files'))."\n" : "undefined\n");
if ($args->isDefined('fi')) {
    echo 'Filters: '.(is_array($args->getValue('fi')) ? implode(', ', $args->getValue('fi'))."\n" : $args->getValue('fi')."\n");
} else {
    echo "Filters: undefined\n";
}
echo 'Width: '.$args->getValue('w')."\n";
echo 'Debug: '.($args->isDefined('d') ? "YES\n" : "NO\n");
echo 'Parameters: '.($args->isDefined('parameters') ? is_array($args->getValue('parameters')) ? implode(', ', $args->getValue('parameters')) : $args->getValue('parameters') : "undefined") . "\n";

// Test with:
// ----------
// Get the help message
// php -q example.php -h
//
// Pass two files
// php -q example.php -v -f src.tiff dest.tiff
//
// Set verbose level 5, pass two files, and debug
// php -q example.php -v5 -f src.tiff dest.tiff -d
//
// Set verbose level 1, pass two files, debug, and set width to 100
// php -q example.php -v 1 -f src.tiff dest.tiff -d --width=100
//
// Set verbose (defaults to 3), pass two files, and pass two filters
// php -q example.php -v -f src.tiff dest.tiff -fi sharp blur
//
// Set three formats
// php -q example.php --format gif jpeg png
//
// Debug, set verbose to default level and width to 100
// php -q example.php -dvw 100
//
// Pass two application parameters
// php -q example.php foo1 foo2
//
// Debug, set verbose level 5, pass two files, and pass two application parameters
// php -q examples/example.php -dv5 -f src.tiff dest.tiff foo1 foo2 

?>