pif-gen-vendor-json-files.sh 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #!/bin/sh
  2. # Crawl recursively and generate custom JSON files for PIF module from stock Xiaomi vendor-build.prop files,
  3. # provided by zgfg @ xda
  4. echo "Crawl recursively and generate custom vendor.pif.json files for PIF module from Xiaomi stock vendor-build.prop files\
  5. \n - provided by zgfg @ xda\n"
  6. FOLDERS_DEPTH="4" # Increase for crawling deeper than to sub-sub-sub-sub-folders
  7. script_path=${0%/*}
  8. test_path="$1"; [ -z "$test_path" ] && test_path="$script_path"
  9. results="$test_path/pif-gen-vendor-results.txt"; rm -f "$results"
  10. echo "results=$results"
  11. exec 4>&2 3>&1 2>"$results" 1>&2
  12. module_path="/data/adb/modules/playintegrityfix"
  13. gen_script="$script_path/gen_pif_vendor.sh"
  14. [ ! -f "$gen_script" ] || [ ! -s "$gen_script" ] && gen_script="$module_path/gen_pif_vendor.sh"
  15. [ ! -f "$gen_script" ] || [ ! -s "$gen_script" ] && gen_script=""
  16. echo "PID=$$" | tee -a "$results"
  17. echo "script_path=$script_path" | tee -a "$results"
  18. echo "test_path=$test_path" | tee -a "$results"
  19. echo "gen_script=$gen_script" | tee -a "$results"
  20. echo "" | tee -a "$results"
  21. (( folders = 0 )); (( created = 0 ))
  22. function f_gen_json()
  23. {
  24. local folder="$1"; local vendor="$2"
  25. echo "$vendor" | tee -a "$results"
  26. (( val = 2 ))
  27. [ -f "$gen_script" ] && sh "$gen_script" "$folder" && (( val = $? ))
  28. (( val == 0 )) && (( created++ ))
  29. # echo "created=$created" | tee -a "$results"
  30. echo "" | tee -a "$results"
  31. }
  32. function f_process_folder()
  33. {
  34. local folder="$1"
  35. [[ "$folder" != *essi* ]] && [[ "$folder" != *missi* ]] && [[ "$folder" != *mssi* ]] && [[ "$folder" != *qssi* ]] && return
  36. local list=$( ls "$folder"/vendor-build.prop 2>/dev/null )
  37. [ -z "$list" ] && return
  38. (( folders++ ))
  39. for vendor in $list
  40. do
  41. [ -n "$vendor" ] && [ -f "$vendor" ] && [ -r "$vendor" ] && [ -s "$vendor" ] && f_gen_json "$folder" "$vendor"
  42. done
  43. }
  44. list=$( find "$test_path" -maxdepth $FOLDERS_DEPTH -type d 2>/dev/null )
  45. for folder in $list
  46. do
  47. [ -n "$folder" ] && [ -e "$folder" ] && f_process_folder "$folder"
  48. done
  49. echo "folders=$folders, created=$created" | tee -a "$results"
  50. echo "" | tee -a "$results"
  51. exec 2>&4 1>&3 4>&- 3>&-