api de gestion de ticket, basé sur php-crud-api. Le but est de décorrélé les outils de gestion des données, afin
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

build.php 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. function removeIgnored(string $dir, array &$entries, array $ignore)
  3. {
  4. foreach ($entries as $i => $entry) {
  5. if (isset($ignore[$dir . '/' . $entry])) {
  6. unset($entries[$i]);
  7. }
  8. }
  9. }
  10. function runDir(string $base, string $dir, array &$lines, array $ignore): int
  11. {
  12. $count = 0;
  13. $entries = scandir($dir);
  14. removeIgnored($dir, $entries, $ignore);
  15. sort($entries);
  16. foreach ($entries as $entry) {
  17. if ($entry === '.' || $entry === '..') {
  18. continue;
  19. }
  20. $filename = "$base/$dir/$entry";
  21. if (is_dir($filename)) {
  22. $count += runDir($base, "$dir/$entry", $lines, $ignore);
  23. }
  24. }
  25. foreach ($entries as $entry) {
  26. $filename = "$base/$dir/$entry";
  27. if (is_file($filename)) {
  28. if (substr($entry, -4) != '.php') {
  29. continue;
  30. }
  31. $data = file_get_contents($filename);
  32. $data = trim(preg_replace('/\s*<\?php\s+/s', '', $data, 1));
  33. array_push($lines, "// file: $dir/$entry");
  34. foreach (explode("\n", $data) as $line) {
  35. if (preg_match('/vendor\/autoload|declare\s*\(\s*strict_types\s*=\s*1/', $line)) {
  36. continue;
  37. }
  38. if ($line) {
  39. $line = ' ' . $line;
  40. }
  41. $line = preg_replace('/^\s*(namespace[^;]+);/', '\1 {', $line);
  42. array_push($lines, $line);
  43. }
  44. array_push($lines, '}');
  45. array_push($lines, '');
  46. $count++;
  47. }
  48. }
  49. return $count;
  50. }
  51. function addHeader(array &$lines)
  52. {
  53. $head = <<<EOF
  54. <?php
  55. /**
  56. * PHP-CRUD-API v2 License: MIT
  57. * Maurits van der Schee: maurits@vdschee.nl
  58. * https://github.com/mevdschee/php-crud-api
  59. *
  60. * Dependencies:
  61. * - vendor/psr/*: PHP-FIG
  62. * https://github.com/php-fig
  63. * - vendor/nyholm/*: Tobias Nyholm
  64. * https://github.com/Nyholm
  65. **/
  66. EOF;
  67. foreach (explode("\n", $head) as $line) {
  68. array_push($lines, $line);
  69. }
  70. }
  71. function run(string $base, array $dirs, string $filename, array $ignore)
  72. {
  73. $lines = [];
  74. $start = microtime(true);
  75. addHeader($lines);
  76. $ignore = array_flip($ignore);
  77. $count = 0;
  78. foreach ($dirs as $dir) {
  79. $count += runDir($base, $dir, $lines, $ignore);
  80. }
  81. $data = implode("\n", $lines);
  82. $data = preg_replace('/\n({)?\s*\n\s*\n/', "\n$1\n", $data);
  83. file_put_contents('tmp_' . $filename, $data);
  84. ob_start();
  85. include 'tmp_' . $filename;
  86. ob_end_clean();
  87. rename('tmp_' . $filename, $filename);
  88. $end = microtime(true);
  89. $time = ($end - $start) * 1000;
  90. echo sprintf("%d files combined in %d ms into '%s'\n", $count, $time, $filename);
  91. }
  92. $ignore = [
  93. 'vendor/nyholm/psr7/src/Factory/HttplugFactory.php',
  94. ];
  95. run(__DIR__, ['vendor/psr', 'vendor/nyholm', 'src'], 'api.php', $ignore);