supported_keyboards_generator.sh 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #/bin/bash
  2. # {
  3. # "name": "Planck",
  4. # "shortname": "planck",
  5. # "date_added": "2016-06-21T22:39:54-04:00"
  6. # }
  7. printf "[" > keyboards.json
  8. for project in $(find . -regex '\./keyboards/[a-z0-9_\-]+/config.h')
  9. do
  10. shortname=$(printf $project | sed -r "s/\.\/keyboards\/([a-zA-Z0-9_\-]+).*/\1/g")
  11. subprojects=$(find . -regex "\./keyboards/$shortname/[a-z0-9_\-]+/readme.md" | grep -vwE "keymaps")
  12. if [ -z "$subprojects" ]; then
  13. readme=$(find . -regex "\./keyboards/$shortname/readme.md")
  14. if [ -z $readme ]; then
  15. name=$shortname
  16. else
  17. name=$(head -n 1 $readme | sed -r "s/# //")
  18. fi
  19. # https://stackoverflow.com/questions/2390199/finding-the-date-time-a-file-was-first-added-to-a-git-repository
  20. date_added=$(git log --diff-filter=A --follow --format=%aI -- keyboards/$shortname | tail -1)
  21. printf "
  22. {
  23. \"name\": \"%s\",
  24. \"shortname\": \"%s\",
  25. \"date_added\": \"%s\"
  26. }," "$name" "$shortname" "$date_added" >> keyboards.json
  27. else
  28. for subproject in $subprojects
  29. do
  30. subproject_name=$(printf $subproject | sed -r "s/\.\/keyboards\/${shortname}\/([a-zA-Z0-9_\-]+).*/\1/g")
  31. readme=$(find . -regex "\./keyboards/$shortname/$subproject_name/readme.md")
  32. if [ -z $readme ]; then
  33. name=$shortname
  34. else
  35. name=$(head -n 1 $readme | sed -r "s/# //")
  36. fi
  37. # https://stackoverflow.com/questions/2390199/finding-the-date-time-a-file-was-first-added-to-a-git-repository
  38. date_added=$(git log --diff-filter=A --follow --format=%aI -- keyboards/$shortname/$subproject_name | tail -1)
  39. printf "
  40. {
  41. \"name\": \"%s\",
  42. \"shortname\": \"%s-%s\",
  43. \"date_added\": \"%s\"
  44. }," "$name" "$shortname" "$subproject_name" "$date_added" >> keyboards.json
  45. done
  46. fi
  47. done
  48. printf "
  49. ]" >> keyboards.json