HummingBirdAnimeClient/build/update_header_comments.php

95 lines
1.8 KiB
PHP
Raw Normal View History

2015-11-16 11:40:01 -05:00
<?php
2016-12-20 12:58:37 -05:00
declare(strict_types=1);
2015-11-16 11:40:01 -05:00
2016-12-20 12:58:37 -05:00
$file_patterns = [
2016-08-30 10:57:41 -04:00
'app/bootstrap.php',
2016-12-20 12:58:37 -05:00
'migrations/*.php',
'src/**/*.php',
'src/*.php',
2016-12-20 12:58:37 -05:00
'tests/**/*.php',
2017-03-30 16:49:48 -04:00
'tests/*.php',
'index.php',
'Robofile.php'
2015-11-16 11:40:01 -05:00
];
if ( ! function_exists('glob_recursive'))
{
2015-12-09 14:54:11 -05:00
// Does not support flag GLOB_BRACE
2015-11-16 11:40:01 -05:00
2015-12-09 14:54:11 -05:00
function glob_recursive($pattern, $flags = 0)
{
$files = glob($pattern, $flags);
2015-11-16 11:40:01 -05:00
foreach (glob(dirname($pattern) . '/*', GLOB_ONLYDIR | GLOB_NOSORT) as $dir)
2015-12-09 14:54:11 -05:00
{
$files = array_merge($files, glob_recursive($dir . '/' . basename($pattern), $flags));
2015-12-09 14:54:11 -05:00
}
2015-11-16 11:40:01 -05:00
2015-12-09 14:54:11 -05:00
return $files;
}
2015-11-16 11:40:01 -05:00
}
2019-12-09 14:41:04 -05:00
function get_text_to_replace(array $tokens): string
2015-11-16 11:40:01 -05:00
{
2016-10-20 22:09:36 -04:00
$output = '';
2015-11-16 11:40:01 -05:00
2016-10-20 22:09:36 -04:00
// Tokens have the follow structure if arrays:
// [0] => token type constant
2019-12-06 09:15:49 -05:00
// [1] => raw syntax parsed to that token
2016-10-20 22:09:36 -04:00
// [2] => line number
foreach($tokens as $token)
2015-11-16 11:40:01 -05:00
{
2016-10-20 22:09:36 -04:00
// Since we only care about opening docblocks,
// bail out when we get to the namespace token
if (is_array($token) && $token[0] === T_NAMESPACE)
{
break;
}
if (is_array($token))
{
$token = $token[1];
}
$output .= $token;
2015-11-16 11:40:01 -05:00
}
2016-10-20 22:09:36 -04:00
return $output;
2015-11-16 11:40:01 -05:00
}
2019-12-09 14:41:04 -05:00
function get_tokens($source): array
2015-11-16 11:40:01 -05:00
{
return token_get_all($source);
}
function replace_files(array $files, $template)
{
print_r($files);
foreach ($files as $file)
2015-11-16 11:40:01 -05:00
{
$source = file_get_contents($file);
2016-10-20 22:09:36 -04:00
if (stripos($source, 'namespace') === FALSE)
{
continue;
}
2015-11-16 11:40:01 -05:00
$tokens = get_tokens($source);
$text_to_replace = get_text_to_replace($tokens);
$header = file_get_contents(__DIR__ . $template);
2016-10-20 22:09:36 -04:00
$new_text = "<?php declare(strict_types=1);\n{$header}";
2015-11-16 11:40:01 -05:00
$new_source = str_replace($text_to_replace, $new_text, $source);
file_put_contents($file, $new_source);
}
}
2016-12-20 12:58:37 -05:00
foreach ($file_patterns as $glob)
2015-11-16 11:40:01 -05:00
{
$files = glob_recursive($glob);
2016-12-20 12:58:37 -05:00
replace_files($files, '/header_comment.txt');
2015-11-16 11:40:01 -05:00
}
2016-12-20 12:58:37 -05:00
echo "Successfully updated headers \n";