From 9b3b9cdfbfd897f2a4b6feeab57f110399da54cc Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sat, 12 Aug 2017 23:31:09 -0400 Subject: [PATCH] initial json file generator --- keyboards.json | 312 ++++++++++++++++++++++++++ util/supported_keyboards_generator.sh | 48 ++++ 2 files changed, 360 insertions(+) create mode 100644 keyboards.json create mode 100644 util/supported_keyboards_generator.sh diff --git a/keyboards.json b/keyboards.json new file mode 100644 index 0000000000..b631b29257 --- /dev/null +++ b/keyboards.json @@ -0,0 +1,312 @@ +[ + { + "name": "Alps64 keyboard firmware", + "shortname": "alps64", + "date_added": "2016-06-21T22:39:54-04:00" + }, + { + "name": "AMJ40 keyboard firmware", + "shortname": "amj40", + "date_added": "2017-07-26T12:46:04+02:00" + }, + { + "name": "AMJ60 keyboard firmware", + "shortname": "amj60", + "date_added": "2016-08-18T13:06:16+02:00" + }, + { + "name": "amjpad", + "shortname": "amjpad", + "date_added": "2016-12-31T13:19:05-05:00" + }, + { + "name": "Atomic", + "shortname": "atomic", + "date_added": "2016-06-21T22:39:54-04:00" + }, + { + "name": "atreus keyboard firmware", + "shortname": "atreus", + "date_added": "2016-06-21T22:39:54-04:00" + }, + { + "name": "atreus62 keyboard firmware", + "shortname": "atreus62", + "date_added": "2016-11-16T23:52:36-05:00" + }, + { + "name": "bananasplit", + "shortname": "bananasplit", + "date_added": "2017-08-03T03:51:34+02:00" + }, + { + "name": "Bantam44 keyboard firmware", + "shortname": "bantam44", + "date_added": "2016-06-21T22:39:54-04:00" + }, + { + "name": "chibios_test", + "shortname": "chibios_test", + "date_added": "2016-07-05T13:48:12+03:00" + }, + { + "name": "Clueboard 66%", + "shortname": "clueboard", + "date_added": "2016-06-29T16:21:41-04:00" + }, + { + "name": "Cluecard", + "shortname": "cluecard", + "date_added": "2016-08-08T16:11:54-07:00" + }, + { + "name": "Cluepad", + "shortname": "cluepad", + "date_added": "2016-06-21T22:39:54-04:00" + }, + { + "name": "DeltaSplit75", + "shortname": "deltasplit75", + "date_added": "2017-07-23T16:30:51-04:00" + }, + { + "name": "DK60", + "shortname": "dk60", + "date_added": "2017-05-07T22:56:27+02:00" + }, + { + "name": "ECO", + "shortname": "eco", + "date_added": "2017-07-04T14:14:26-04:00" + }, + { + "name": "Ergodox EZ", + "shortname": "ergodox-ez", + "date_added": "2016-07-07T22:28:28+03:00" + }, + { + "name": "Ergodox Infinity", + "shortname": "ergodox-infinity", + "date_added": "2016-07-07T22:28:28+03:00" + }, + { + "name": "frosty_flake keyboard firmware", + "shortname": "frosty_flake", + "date_added": "2017-03-18T15:38:03-07:00" + }, + { + "name": "#gh60 Rev C keyboard firmware", + "shortname": "gh60", + "date_added": "2016-06-21T22:39:54-04:00" + }, + { + "name": "gherkin", + "shortname": "gherkin", + "date_added": "2017-06-02T12:32:00+01:00" + }, + { + "name": "GON NerD keyboard firmware", + "shortname": "gonnerd", + "date_added": "2017-02-11T16:46:13+01:00" + }, + { + "name": "", + "shortname": "hadron", + "date_added": "2017-07-11T13:53:50-04:00" + }, + { + "name": "hhkb_qmk keyboard firmware", + "shortname": "hhkb", + "date_added": "2016-06-21T22:39:54-04:00" + }, + { + "name": "Infinity 60% keyboard firmware", + "shortname": "infinity60", + "date_added": "2016-08-27T23:14:27+03:00" + }, + { + "name": "JC65", + "shortname": "jc65", + "date_added": "2017-08-04T16:05:10-07:00" + }, + { + "name": "#jd40 mkii keyboard firmware", + "shortname": "jd40", + "date_added": "2016-09-02T16:14:40-07:00" + }, + { + "name": "JD45 keyboard firmware", + "shortname": "jd45", + "date_added": "2016-06-21T22:39:54-04:00" + }, + { + "name": "kbd75", + "shortname": "kbd75", + "date_added": "2017-06-19T22:59:17-07:00" + }, + { + "name": "KC60 (version 2.0) keyboard firmware", + "shortname": "kc60", + "date_added": "2016-06-21T22:39:54-04:00" + }, + { + "name": "kinesis-advantage keyboard firmware", + "shortname": "kinesis-alvicstep", + "date_added": "2017-01-08T22:02:01-08:00" + }, + { + "name": "kinesis_stapelberg keyboard firmware", + "shortname": "kinesis-stapelberg", + "date_added": "2017-01-08T22:02:01-08:00" + }, + { + "name": "kitten_paw keyboard firmware", + "shortname": "kitten_paw", + "date_added": "2016-08-22T20:34:29+02:00" + }, + { + "name": "KMAC keyboard firmware", + "shortname": "kmac", + "date_added": "2017-06-04T22:13:17+02:00" + }, + { + "name": "Let's Split", + "shortname": "lets_split", + "date_added": "2016-07-05T23:27:10-04:00" + }, + { + "name": "m10a", + "shortname": "m10a", + "date_added": "2017-05-18T18:55:07-04:00" + }, + { + "name": "Maxipad keyboard firmware", + "shortname": "maxipad", + "date_added": "2016-11-10T18:19:13-05:00" + }, + { + "name": "mechmini", + "shortname": "mechmini", + "date_added": "2017-06-09T10:11:34-04:00" + }, + { + "name": "MiniDox", + "shortname": "minidox", + "date_added": "2017-07-10T00:46:19-04:00" + }, + { + "name": "Mitosis Keyboard Firmware", + "shortname": "mitosis", + "date_added": "2017-04-19T20:12:50+10:00" + }, + { + "name": "miuni32 keyboard firmware", + "shortname": "miuni32", + "date_added": "2016-11-21T08:22:14-08:00" + }, + { + "name": "The Nyquist Keyboard", + "shortname": "nyquist", + "date_added": "2017-05-29T15:37:19-04:00" + }, + { + "name": "QMK Firmware for 大橘子外设 (Large Orange Peripheral)'s 60% Org60 PCB", + "shortname": "org60", + "date_added": "2017-08-09T09:47:16-04:00" + }, + { + "name": "Orthodox", + "shortname": "orthodox", + "date_added": "2017-06-25T22:30:07-03:00" + }, + { + "name": "pegasushoof", + "shortname": "pegasushoof", + "date_added": "2016-05-29T02:48:56+02:00" + }, + { + "name": "Phantom keyboard firmware", + "shortname": "phantom", + "date_added": "2016-06-21T22:39:54-04:00" + }, + { + "name": "Planck", + "shortname": "planck", + "date_added": "2016-06-21T22:39:54-04:00" + }, + { + "name": "Preonic", + "shortname": "preonic", + "date_added": "2016-06-21T22:39:54-04:00" + }, + { + "name": "ps2avrGB", + "shortname": "ps2avrGB", + "date_added": "2017-01-21T12:30:06-05:00" + }, + { + "name": "roadkit keyboard firmware", + "shortname": "roadkit", + "date_added": "2017-02-27T21:42:25-05:00" + }, + { + "name": "S60-x keyboard firmware", + "shortname": "s60_x", + "date_added": "2017-04-30T10:48:17-04:00" + }, + { + "name": "S65-x keyboard firmware", + "shortname": "s65_x", + "date_added": "2017-06-10T21:04:16-04:00" + }, + { + "name": "Satan GH60 keyboard firmware", + "shortname": "satan", + "date_added": "2016-06-21T22:39:54-04:00" + }, + { + "name": "Techkeys SixKeyBoard", + "shortname": "sixkeyboard", + "date_added": "2016-06-21T22:39:54-04:00" + }, + { + "name": "TADA68 keyboard firmware", + "shortname": "tada68", + "date_added": "2016-09-22T23:33:22-04:00" + }, + { + "name": "tiger_lily keyboard firmware", + "shortname": "tiger_lily", + "date_added": "2017-05-07T17:23:19-04:00" + }, + { + "name": "tv44 keyboard firmware", + "shortname": "tv44", + "date_added": "2016-08-13T10:36:08-07:00" + }, + { + "name": "UK78", + "shortname": "uk78", + "date_added": "2017-08-06T22:23:40+01:00" + }, + { + "name": "vision_division keyboard firmware", + "shortname": "vision_division", + "date_added": "2016-08-20T10:26:36-05:00" + }, + { + "name": "WhiteFox keyboard firmware", + "shortname": "whitefox", + "date_added": "2017-01-03T23:41:52-08:00" + }, + { + "name": "QMK Firmware for XIUDI's 60% XD60 PCB", + "shortname": "xd60", + "date_added": "2016-12-18T15:35:03-08:00" + }, + { + "name": "xd75 keyboard firmware", + "shortname": "xd75", + "date_added": "2017-07-29T14:22:09-06:00" + }, +] \ No newline at end of file diff --git a/util/supported_keyboards_generator.sh b/util/supported_keyboards_generator.sh new file mode 100644 index 0000000000..33f4baab61 --- /dev/null +++ b/util/supported_keyboards_generator.sh @@ -0,0 +1,48 @@ +#/bin/bash +# { +# "name": "Planck", +# "shortname": "planck" +# } +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 \ No newline at end of file