You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
qmk_firmware/util/supported_keyboards_generat...

49 lines
1.9 KiB
Bash

#/bin/bash
# {
# "name": "Planck",
# "shortname": "planck",
# "date_added": "2016-06-21T22:39:54-04:00"
# }
printf "[" > keyboards.json
for project in $(find . -regex '\./keyboards/[a-z0-9_\-]+/config.h')
do
shortname=$(printf $project | sed -r "s/\.\/keyboards\/([a-zA-Z0-9_\-]+).*/\1/g")
subprojects=$(find . -regex "\./keyboards/$shortname/[a-z0-9_\-]+/readme.md" | grep -vwE "keymaps")
if [ -z "$subprojects" ]; then
readme=$(find . -regex "\./keyboards/$shortname/readme.md")
if [ -z $readme ]; then
name=$shortname
else
name=$(head -n 1 $readme | sed -r "s/# //")
fi
# https://stackoverflow.com/questions/2390199/finding-the-date-time-a-file-was-first-added-to-a-git-repository
date_added=$(git log --diff-filter=A --follow --format=%aI -- keyboards/$shortname | tail -1)
printf "
{
\"name\": \"%s\",
\"shortname\": \"%s\",
\"date_added\": \"%s\"
}," "$name" "$shortname" "$date_added" >> keyboards.json
else
for subproject in $subprojects
do
subproject_name=$(printf $subproject | sed -r "s/\.\/keyboards\/${shortname}\/([a-zA-Z0-9_\-]+).*/\1/g")
readme=$(find . -regex "\./keyboards/$shortname/$subproject_name/readme.md")
if [ -z $readme ]; then
name=$shortname
else
name=$(head -n 1 $readme | sed -r "s/# //")
fi
# https://stackoverflow.com/questions/2390199/finding-the-date-time-a-file-was-first-added-to-a-git-repository
date_added=$(git log --diff-filter=A --follow --format=%aI -- keyboards/$shortname/$subproject_name | tail -1)
printf "
{
\"name\": \"%s\",
\"shortname\": \"%s-%s\",
\"date_added\": \"%s\"
}," "$name" "$shortname" "$subproject_name" "$date_added" >> keyboards.json
done
fi
done
printf "
]" >> keyboards.json