Merge commit '1392bd3a96045302b60d845a90901a4b2234c475' as 'seatmap-webapi'
This commit is contained in:
113
seatmap-webapi/build.php
Normal file
113
seatmap-webapi/build.php
Normal file
@@ -0,0 +1,113 @@
|
||||
<?php
|
||||
|
||||
// combine src and vendor directories into a single file
|
||||
|
||||
function removeIgnored(string $dir, array &$entries, array $ignore)
|
||||
{
|
||||
foreach ($entries as $i => $entry) {
|
||||
if (isset($ignore[$dir . '/' . $entry])) {
|
||||
unset($entries[$i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function runDir(string $base, string $dir, array &$lines, array $ignore): int
|
||||
{
|
||||
$count = 0;
|
||||
$entries = scandir($dir);
|
||||
removeIgnored($dir, $entries, $ignore);
|
||||
sort($entries);
|
||||
foreach ($entries as $entry) {
|
||||
if ($entry === '.' || $entry === '..') {
|
||||
continue;
|
||||
}
|
||||
$filename = "$base/$dir/$entry";
|
||||
if (is_dir($filename)) {
|
||||
$count += runDir($base, "$dir/$entry", $lines, $ignore);
|
||||
}
|
||||
}
|
||||
foreach ($entries as $entry) {
|
||||
$filename = "$base/$dir/$entry";
|
||||
if (is_file($filename)) {
|
||||
if (substr($entry, -4) != '.php') {
|
||||
continue;
|
||||
}
|
||||
$data = file_get_contents($filename);
|
||||
$data = preg_replace('/\s*<\?php\s+/s', '', $data, 1);
|
||||
$data = preg_replace('/^.*?(vendor\/autoload|declare\s*\(\s*strict_types\s*=\s*1).*?$/m', '', $data);
|
||||
array_push($lines, "// file: $dir/$entry");
|
||||
if (!preg_match('/^\s*(namespace[^;]*);/', $data)) {
|
||||
$data = "namespace;\n" . $data;
|
||||
}
|
||||
foreach (explode("\n", trim($data)) as $line) {
|
||||
if ($line) {
|
||||
$line = ' ' . $line;
|
||||
}
|
||||
$line = preg_replace('/^\s*(namespace[^;]*);/', '\1 {', $line);
|
||||
array_push($lines, $line);
|
||||
}
|
||||
array_push($lines, '}');
|
||||
array_push($lines, '');
|
||||
$count++;
|
||||
}
|
||||
}
|
||||
return $count;
|
||||
}
|
||||
|
||||
function addHeader(array &$lines)
|
||||
{
|
||||
$head = <<<EOF
|
||||
<?php
|
||||
/**
|
||||
* PHP-CRUD-API v2 License: MIT
|
||||
* Maurits van der Schee: maurits@vdschee.nl
|
||||
* https://github.com/mevdschee/php-crud-api
|
||||
*
|
||||
* Dependencies:
|
||||
* - vendor/psr/*: PHP-FIG
|
||||
* https://github.com/php-fig
|
||||
* - vendor/nyholm/*: Tobias Nyholm
|
||||
* https://github.com/Nyholm
|
||||
**/
|
||||
|
||||
EOF;
|
||||
foreach (explode("\n", $head) as $line) {
|
||||
array_push($lines, $line);
|
||||
}
|
||||
}
|
||||
|
||||
function run(string $base, array $dirs, string $filename, array $ignore)
|
||||
{
|
||||
$lines = [];
|
||||
$start = microtime(true);
|
||||
addHeader($lines);
|
||||
$ignore = array_flip($ignore);
|
||||
$count = 0;
|
||||
foreach ($dirs as $dir) {
|
||||
$count += runDir($base, $dir, $lines, $ignore);
|
||||
}
|
||||
$data = implode("\n", $lines);
|
||||
$data = preg_replace('/\n({)?\s*\n\s*\n/', "\n$1\n", $data);
|
||||
file_put_contents('tmp_' . $filename, $data);
|
||||
ob_start();
|
||||
include 'tmp_' . $filename;
|
||||
ob_end_clean();
|
||||
rename('tmp_' . $filename, $filename);
|
||||
$data = substr($data, 0, strrpos($data, "\n// file: src/index.php"));
|
||||
file_put_contents(str_replace('.php', '.include.php', $filename), $data);
|
||||
$end = microtime(true);
|
||||
$time = ($end - $start) * 1000;
|
||||
echo sprintf("%d files combined in %d ms into '%s'\n", $count, $time, $filename);
|
||||
}
|
||||
|
||||
$ignore = [
|
||||
'vendor/nyholm/psr7/src/Factory/HttplugFactory.php',
|
||||
];
|
||||
|
||||
$directories = ['vendor/nyholm', 'src'];
|
||||
|
||||
if (!extension_loaded('psr')) {
|
||||
array_unshift($directories, 'vendor/psr');
|
||||
}
|
||||
|
||||
run(__DIR__, $directories, 'api.php', $ignore);
|
||||
Reference in New Issue
Block a user