deployer/build
2014-08-09 14:48:20 +04:00

79 lines
1.8 KiB
PHP
Executable File

#!/usr/bin/env php
<?php
require __DIR__ . '/vendor/autoload.php';
$version = '2.0.0';
$pharName = "deployer-$version.phar";
$pharFile = __DIR__ . '/' . $pharName;
if (file_exists($pharFile)) {
unlink($pharFile);
}
$phar = new \Phar($pharFile, 0, $pharName);
$phar->setSignatureAlgorithm(\Phar::SHA1);
$phar->startBuffering();
$finder = new Symfony\Component\Finder\Finder();
$finder->files()
->ignoreVCS(true)
->name('*.php')
->name('*.json')
->exclude('phpunit')
->exclude('Tests')
->exclude('test')
->exclude('tests')
->in(__DIR__);
foreach ($finder as $fileInfo) {
$file = str_replace(__DIR__, '', $fileInfo->getRealPath());
echo "Add file: " . $file . "\n";
$phar->addFile($fileInfo->getRealPath(), $file);
}
// Add bin/dep file
$depContent = file_get_contents(__DIR__ . '/bin/dep');
$depContent = str_replace("#!/usr/bin/env php\n", '', $depContent);
$phar->addFromString('bin/dep', $depContent);
$stub = <<<STUB
#!/usr/bin/env php
<?php
Phar::mapPhar('{$pharName}');
require 'phar://{$pharName}/bin/dep';
__HALT_COMPILER();
STUB;
$phar->setStub($stub);
$phar->stopBuffering();
unset($phar);
echo "$pharName created successful.\n";
// Generate sha1 sum and put it to manifest.json
$newPharManifest = [
'name' => $pharName,
'sha1' => sha1_file($pharFile),
'url' => "http://deployer.in/$pharName",
'version' => $version,
];
$manifest = json_decode(file_get_contents(__DIR__ . '/manifest.json'), true);
$alreadyExistVersion = null;
foreach ($manifest as $i => $old) {
if ($old['version'] === $version) {
$alreadyExistVersion = $i;
}
}
if (null === $alreadyExistVersion) {
$manifest[] = $newPharManifest;
} else {
$manifest[$alreadyExistVersion] = $newPharManifest;
}
file_put_contents(__DIR__ . '/manifest.json', json_encode($manifest, JSON_PRETTY_PRINT));