packages-clean.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. function packagesToArray($file_path) {
  3. //return strtok(file_get_contents($file_path), "\n\n");
  4. //return explode("\n\n", file_get_contents($file_path));
  5. return explode('Package: ', file_get_contents($file_path));
  6. }
  7. function generateIndex($file_path) {
  8. $packages = [];
  9. foreach (file($file_path) as $line) {
  10. $clean = trim($line);
  11. if (!empty($clean) && strpos($clean, 'Package: ') !== false) {
  12. $filename = trim(str_replace('Package:', '', $clean));
  13. if (!in_array($filename, $packages)) {
  14. $packages[] = $filename;
  15. }
  16. }
  17. }
  18. return $packages;
  19. }
  20. // analysis
  21. $openwrt_base_count = 0;
  22. $openwrt_core_count = 0;
  23. $openwrt_packages_count = 0;
  24. $missing_packages = [];
  25. $packages = generateIndex('packages');
  26. $openwrt_base_packages = generateIndex('openwrt_base_packages');
  27. $openwrt_core_packages = generateIndex('openwrt_core_packages');
  28. $openwrt_packages_packages = generateIndex('openwrt_packages_packages');
  29. foreach ($packages as $key) {
  30. $status = false;
  31. if (in_array($key, $openwrt_base_packages)) {
  32. $status = true;
  33. $openwrt_base_count++;
  34. //echo "[!] {$key} found in 'openwrt_base_packages'\n";
  35. }
  36. if (in_array($key, $openwrt_core_packages)) {
  37. $status = true;
  38. $openwrt_core_count++;
  39. //echo "[!] {$key} found in 'openwrt_core_packages'\n";
  40. }
  41. if (in_array($key, $openwrt_packages_packages)) {
  42. $status = true;
  43. $openwrt_packages_count++;
  44. //echo "[!] {$key} found in 'openwrt_packages_packages'\n";
  45. }
  46. if (!$status) {
  47. $missing_packages[] = $key;
  48. echo "[+] {$key}\n";
  49. }
  50. }
  51. $missing_packages_count = count($missing_packages);
  52. // generate new package file
  53. $clean_packages = [];
  54. $mk6_packages = packagesToArray('packages');
  55. foreach ($mk6_packages as $key) {
  56. $lines = explode("\n", $key);
  57. //$id = trim(str_replace('Package:', '', $lines[0]));
  58. $id = trim($lines[0]);
  59. if (!empty($id) && in_array($id, $missing_packages)) {
  60. // le vuelvo a sumar el separador
  61. $clean_packages[] = "Package: {$key}";
  62. }
  63. }
  64. // resume
  65. echo "
  66. Resume
  67. ============================
  68. openwrt_base : {$openwrt_base_count}
  69. openwrt_core : {$openwrt_core_count}
  70. openwrt_packages : {$openwrt_packages_count}
  71. missing packages : {$missing_packages_count}
  72. Packages
  73. ============================
  74. generate 'packages_clean'
  75. ";
  76. file_put_contents('packages_clean', implode('', $clean_packages));
  77. //var_dump($missing_packages);