keyboard_identifier_generator.sh 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #/bin/bash
  2. echo "# Keyboard Identifiers
  3. |Keyboard|Vendor ID|Product ID|Device Ver|" > docs/keyboard_identifiers.md
  4. for project in $(find . -regex '\./keyboards/[a-z0-9_\-]+/config.h')
  5. do
  6. keyboard_name=$(printf $project | sed -r "s/\.\/keyboards\/([a-zA-Z0-9_\-]+).*/\1/g")
  7. vendor_id=$(grep 'VENDOR_ID' $project | \
  8. tr -d '\n' | \
  9. sed -r "s/.*(0x[a-fA-F0-9]+).*/\1/g")
  10. if [ -z $vendor_id ]; then
  11. for subproject in $(find . -regex "\./keyboards/$keyboard_name/[a-z0-9_\-]+/config.h")
  12. do
  13. subproject_name=$(printf $subproject | sed -r "s/\.\/keyboards\/${keyboard_name}\/([a-zA-Z0-9_\-]+).*/\1/g")
  14. subproject_vendor_id=$(grep 'VENDOR_ID' $subproject | \
  15. tr -d '\n' | \
  16. sed -r "s/.*(0x[a-fA-F0-9]+).*/\1/g")
  17. vendor_id+=$(printf "%s: %s<br />" $subproject_name $subproject_vendor_id)
  18. done
  19. fi
  20. product_id=$(grep 'PRODUCT_ID' $project | \
  21. tr -d '\n' | \
  22. sed -r "s/.*(0x[a-fA-F0-9]+).*/\1/g")
  23. if [ -z $product_id ]; then
  24. for subproject in $(find . -regex "\./keyboards/$keyboard_name/[a-z0-9_\-]+/config.h")
  25. do
  26. subproject_name=$(printf $subproject | sed -r "s/\.\/keyboards\/${keyboard_name}\/([a-zA-Z0-9_\-]+).*/\1/g")
  27. subproject_product_id=$(grep 'PRODUCT_ID' $subproject | \
  28. tr -d '\n' | \
  29. sed -r "s/.*(0x[a-fA-F0-9]+).*/\1/g")
  30. product_id+=$(printf "%s: %s<br />" $subproject_name $subproject_product_id)
  31. done
  32. fi
  33. device_ver=$(grep 'DEVICE_VER' $project | \
  34. tr -d '\n' | \
  35. sed -r "s/.*(0x[a-fA-F0-9]+).*/\1/g")
  36. if [ -z $device_ver ]; then
  37. for subproject in $(find . -regex "\./keyboards/$keyboard_name/[a-z0-9_\-]+/config.h")
  38. do
  39. subproject_name=$(printf $subproject | sed -r "s/\.\/keyboards\/${keyboard_name}\/([a-zA-Z0-9_\-]+).*/\1/g")
  40. subproject_device_ver=$(grep 'DEVICE_VER' $subproject | \
  41. tr -d '\n' | \
  42. sed -r "s/.*(0x[a-fA-F0-9]+).*/\1/g")
  43. device_ver+=$(printf "%s: %s<br />" $subproject_name $subproject_device_ver)
  44. done
  45. fi
  46. printf "|%s|%s|%s|%s|\n" "$keyboard_name" "$vendor_id" "$product_id" "$device_ver" >> docs/keyboard_identifiers.md
  47. done