| 
#!/usr/bin/env php<?php
 
 /*
 * This file is part of the Predis package.
 *
 * (c) Daniele Alessandri <[email protected]>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
 
 // -------------------------------------------------------------------------- //
 // In order to be able to execute this script to create a Phar archive of Predis,
 // the Phar module must be loaded and the "phar.readonly" directive php.ini must
 // be set to "off". You can change the values in the $options array to customize
 // the creation of the Phar archive to better suit your needs.
 // -------------------------------------------------------------------------- //
 
 $options = array(
 'name'           => 'predis',
 'project_path'   => __DIR__ . '/../src',
 'compression'    => Phar::NONE,
 'append_version' => true,
 );
 
 function getPharFilename($options)
 {
 $filename = $options['name'];
 
 // NOTE: do not consider "append_version" with Phar compression do to a bug in
 // Phar::compress() when renaming phar archives containing dots in their name.
 if ($options['append_version'] && $options['compression'] === Phar::NONE) {
 $versionFile = @fopen(__DIR__ . '/../VERSION', 'r');
 
 if ($versionFile === false) {
 throw new Exception("Could not locate the VERSION file.");
 }
 
 $version = trim(fgets($versionFile));
 fclose($versionFile);
 $filename .= "_$version";
 }
 
 return "$filename.phar";
 }
 
 function getPharStub($options)
 {
 return <<<EOSTUB
 <?php
 Phar::mapPhar('predis.phar');
 spl_autoload_register(function (\$class) {
 if (strpos(\$class, 'Predis\\\\') === 0) {
 \$file = 'phar://predis.phar/'.strtr(substr(\$class, 7), '\\\', '/').'.php';
 if (file_exists(\$file)) {
 require \$file;
 return true;
 }
 }
 });
 __HALT_COMPILER();
 EOSTUB;
 }
 
 // -------------------------------------------------------------------------- //
 
 $phar = new Phar(getPharFilename($options));
 $phar->compress($options['compression']);
 $phar->setStub(getPharStub($options));
 $phar->buildFromDirectory($options['project_path']);
 
 |