return substr($haystack, -strlen($needle)) == $needle;
}
+ static function cli_arg_typ_loader($arg)
+ {
+ if ($arg == 'auto')
+ {
+ $found = NULL;
+ foreach(split("\n", `pear list-files PHP_Archive`) as $ent)
+ {
+ $matches = NULL;
+ if (preg_match(",^php[ \t]+([^ \t].*pear[\\\\/]PHP[\\\\/]Archive.php)$,", $ent, $matches))
+ {
+ $found = $matches[1];
+ break;
+ }
+ }
+ if (!isset($found) && $arg != 'optional') {
+ echo "Pear package PHP_Archive or Archive.php class file not found.\n";
+ exit(1);
+ }
+ $arg = $found;
+ }
+ return self::cli_arg_typ_file($arg);
+ }
+
static function cli_arg_typ_pharnew($arg)
{
$pharfile = self::cli_arg_typ_filenew($arg);
'f' => array('typ'=>'pharnew', 'val'=>NULL, 'required'=>1, 'inf'=>'<file> Specifies the phar file to work on.'),
'h' => array('typ'=>'select', 'val'=>NULL, 'inf'=>'<method> Selects the hash algorithmn.', 'select'=>array('md5'=>'MD5','sha1'=>'SHA1','sha256'=>'SHA256','sha512'=>'SHA512')),
'i' => array('typ'=>'regex', 'val'=>NULL, 'inf'=>'<regex> Specifies a regular expression for input files.'),
- 'p' => array('typ'=>'file', 'val'=>NULL, 'inf'=>'<loader> Location of PHP_Archive class file (pear list-files PHP_Archive).'),
+ 'p' => array('typ'=>'loader', 'val'=>NULL, 'inf'=>'<loader> Location of PHP_Archive class file (pear list-files PHP_Archive). You can use \'auto\' or \'optional\' to locate it automatically using the mentioned pear command. When using \'optional\' the command does not error out when the class file cannot be located.'),
's' => array('typ'=>'file', 'val'=>NULL, 'inf'=>'<stub> Select the stub file (excluded from list of input files/dirs).'),
'x' => array('typ'=>'regex', 'val'=>NULL, 'inf'=>'<regex> Regular expression for input files to exclude.'),
'' => array('typ'=>'any', 'val'=>NULL, 'required'=>1, 'inf'=>' Any number of input files and directories.'),
'inf' => '<meta> Meta data to store with entry (serialized php data).'
),
'p' => array(
- 'typ' => 'file',
+ 'typ' => 'loader',
'val' => NULL,
- 'inf' => '<loader> Location of PHP_Archive class file (pear list-files PHP_Archive).',
+ 'inf' => '<loader> Location of PHP_Archive class file (pear list-files PHP_Archive). You can use \'auto\' or \'optional\' to locate it automatically using the mentioned pear command. When using \'optional\' the command does not error out when the class file cannot be located.',
),
's' => array(
'typ' => 'file',
return substr($haystack, -strlen($needle)) == $needle;
}
// }}}
+ // {{{ static function cli_arg_typ_loader
+ /**
+ * Argument type loader
+ *
+ * @param string $arg Either 'auto' or an filename that contains class
+ * PHP_Archive
+ * @param string $cfg Configuration to pass to a new file
+ * @param string $key The key
+ * @return string $arg The argument.
+ */
+ static function cli_arg_typ_loader($arg, $cfg, $key)
+ {
+ if ($arg == 'auto' || $arg == 'optional') {
+ $found = NULL;
+ foreach(split("\n", `pear list-files PHP_Archive`) as $ent) {
+ $matches = NULL;
+ if (preg_match(",^php[ \t]+([^ \t].*pear[\\\\/]PHP[\\\\/]Archive.php)$,", $ent, $matches)) {
+ $found = $matches[1];
+ break;
+ }
+ }
+ if (!isset($found) && $arg != 'optional') {
+ self::error("Pear package PHP_Archive or Archive.php class file not found.\n");
+ }
+ $arg = $found;
+ }
+ return self::cli_arg_typ_file($arg);
+ }
+ // }}}
// {{{ static function cli_arg_typ_pharnew
/**
* Argument type new phar