PharPHP打包工具 无 #!/usr/bin/env php?phpdefine("PHAR_BUILDER_VERSION", "0.1.0");function usage($self, $ln = PHP_EOL) { echo "Usage: {$self} phar [options]{$ln}"; echo "phar Path to an existing Phar archive or to-be-created archive.{$ln}";
Phar PHP 打包工具
#!/usr/bin/env php
0) { // -p=value --param=value param=value
list($arg_name, $arg_value) = explode('=', ltrim($arg, '-'), 2);
$ret[$arg_name] = $arg_value;
continue;
}
if ($arg{0} !== '-') {
continue;
}
if (($arg{1} !== '-') && isset($arg{2})) {// -pVALUE
$ret[$arg{1}] = substr($arg, 2);
continue;
} else if (isset($argv[$i + 1]) && ($argv[$i + 1]{0} !== '-') && (false === strpos($arg, '='))) {
$ret[ltrim($arg, '-')] = $argv[$i + 1];
++$i;
} else {
$ret[ltrim($arg, '-')] = true;
}
}
return $ret;
}
info("Phar Builder " . PHAR_BUILDER_VERSION);
if ('cli' !== PHP_SAPI) {
error("Run for command line only.");
}
if (false === Phar::canWrite()) {
error("Phar can not write, Set \"phar.readonly = Off\" in php.ini.");
}
$self = array_shift($argv);
if (empty($argv[0])) {
usage($self);
}
$path = array_shift($argv);
$args = args_parse($argv);
$stub = empty($args['stub']) ? '' : $args['stub'];
$flags = 0;
$files = empty($args['files']) ? '' : $args['files'];
$alias = empty($args['alias']) ? basename($path) : $args['alias'];
$regex = empty($args['filter']) ? null : $args['filter'];
$base_dir = empty($args['path']) ? '' : $args['path'];
$arg_compress = empty($args['compress']) ? '' : $args['compress'];
$index = empty($args['index']) ? '' : $args['index'];
$webindex = empty($args['webindex']) ? '' : $args['webindex'];
switch ($arg_compress) {
case 'gz':
$compress = Phar::GZ;
$compress_type = 'gz';
break;
case 'bz2':
$compress = Phar::BZ2;
$compress_type = 'bz2';
break;
default :
$compress = Phar::NONE;
$compress_type = 'none';
break;
}
if (!empty($base_dir) && !is_dir($base_dir)) {
error("Dir not Exists!");
}
try {
$p = new Phar($path, $flags, $alias);
$p->startBuffering();
$p->compress($compress);
info("API Version: " . Phar::apiVersion());
info("File: {$path}");
info("Alias: {$alias}");
info("Compress: {$compress_type}");
if (!empty($base_dir)) {
info("Build From: {$base_dir}");
if ($regex) {
info("Filter: {$regex}");
}
$p->buildFromDirectory($base_dir, $regex);
}
if (!empty($files)) {
foreach (explode(',', $files) as $file) {
info("Add File: {$file}");
$p->addFile($file, basename($file));
}
}
if ($index && $webindex) {
info("Index: {$index}");
info("Web Index: {$webindex}");
$p->setDefaultStub($index, $webindex);
} else if ($index) {
info("Index: {$index}");
$p->setDefaultStub($index);
} else if ($webindex) {
info("Web Index: {$webindex}");
$p->setDefaultStub(null, $webindex);
}
if ($stub) {
info("Stub: {$stub}");
if (is_file($stub)) {
$stub = file_get_contents($stub);
}
$p->setStub($stub);
}
$p->stopBuffering();
info("Files: {$p->count()}");
} catch (\Exception $e) {
error($e->getMessage());
}










