public function pack()
{
if (file_exists(self::NAME)) {
\Phar::unlinkArchive(self::NAME);
}
$phar = new \Phar(self::NAME);
// Stub
$code = <<<'EOC'
#! /usr/bin/env php
<?php
Phar::mapPhar('phpmig.phar');
define('PHPMIG_PHAR', true);
require 'phar://phpmig.phar/vendor/autoload.php';
$app = new PhpMigration\App();
$app->run();
__HALT_COMPILER();
EOC;
$phar->setStub($code);
// File
foreach ($this->filelist as $file) {
$phar->addFile($file);
}
// Vendor
chdir(__DIR__ . '/../../');
$iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator('vendor'), 0, \RecursiveIteratorIterator::CATCH_GET_CHILD);
foreach ($iterator as $file) {
if (!preg_match('/\\/(\\.|test\\/)/i', $file)) {
$phar->addFile($file);
}
}
// Add execute permission
chmod(self::NAME, 0755);
}