* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Mage; use Phar; use RecursiveIteratorIterator; use RecursiveDirectoryIterator; /** * Compiles the library into a .phar file * * @author Ismael Ambrosi */ class Compiler { /** * Compiles the library * * @param string $file */ public function compile($file = 'mage.phar') { if (file_exists($file)) { unlink($file); } $phar = new Phar($file, 0, 'mage.phar'); $phar->setSignatureAlgorithm(Phar::SHA1); $phar->startBuffering(); $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(__DIR__), RecursiveIteratorIterator::CHILD_FIRST); /** @var $path SplFileInfo */ foreach ($iterator as $path) { if ($path->isFile()) { $phar->addFromString(str_replace(dirname(__DIR__).'/', '', $path->getPathname()), file_get_contents($path)); } } $binary = file(__DIR__.'/../bin/mage'); unset($binary[0]); $binary = implode(PHP_EOL, $binary); $phar->addFromString('mage', str_replace( '$baseDir = dirname(dirname(__FILE__));', '$baseDir = __DIR__;', $binary )); $phar->setStub("#!/usr/bin/env php\nstopBuffering(); unset($phar); chmod($file, 0755); } }