doom_generate_mods_meta_v2.sh 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #!/bin/sh
  2. for compat_dir in */; do
  3. [ -d "$compat_dir" ] || continue
  4. compat=$(basename "$compat_dir")
  5. cd "$compat_dir" || continue
  6. for tag_dir in */; do
  7. [ -d "$tag_dir" ] || continue
  8. tag=$(basename "$tag_dir")
  9. cd "$tag_dir" || continue
  10. for mod_dir in */; do
  11. [ -d "$mod_dir" ] || continue
  12. cd "$mod_dir" || continue
  13. title=$(basename "$mod_dir")
  14. ini_file="meta.ini"
  15. tags="$tag"
  16. args=""
  17. for txt in *.txt; do
  18. [ -f "$txt" ] || continue
  19. grep -qi "game" "$txt" && {
  20. game_line=$(grep -i "game" "$txt" | head -n 1)
  21. game=$(game_from_text "$game_line")
  22. }
  23. for word in weapons monsters gameplay graphics hud maps tc total_conversion; do
  24. grep -iq "$word" "$txt" && tags="$tags,$word"
  25. done
  26. done
  27. files=$(find . -maxdepth 1 -type f \( -iname "*.wad" -o -iname "*.pk3" -o -iname "*.deh" \) | sort)
  28. for f in $files; do
  29. f_clean=$(basename "$f")
  30. args="$args $f_clean"
  31. done
  32. tags=$(echo "$tags" | sed 's/^,//;s/,,*/,/g')
  33. {
  34. echo "title=$title"
  35. echo "compat=$compat"
  36. echo "game=$game"
  37. echo "tags=$tags"
  38. [ -n "$args" ] && echo "args=$args"
  39. } > "$ini_file"
  40. cd ..
  41. done
  42. cd ..
  43. done
  44. cd ..
  45. done