summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoel Challis <git@zvecr.com>2023-01-01 00:46:17 +0000
committerGitHub <noreply@github.com>2023-01-01 11:46:17 +1100
commit5a3594366f2bd8a4aed34f6d085d9c516b9dbc32 (patch)
treec37ea68cbb1bf1e409f7d299e4a87167c6d94f09
parent422fd8aed8d7a985a4f090deb0d166ec81db8cd9 (diff)
Initial DD keycode regen workflow (#19400)
-rw-r--r--.github/workflows/regen.yml33
-rw-r--r--.github/workflows/regen_push.yml43
-rw-r--r--util/lang_conv.py65
-rwxr-xr-xutil/lang_gen.sh8
-rwxr-xr-xutil/regen.sh9
5 files changed, 85 insertions, 73 deletions
diff --git a/.github/workflows/regen.yml b/.github/workflows/regen.yml
new file mode 100644
index 0000000000..ae25bc095e
--- /dev/null
+++ b/.github/workflows/regen.yml
@@ -0,0 +1,33 @@
+name: PR Regenerate Files
+
+permissions:
+ contents: read
+
+on:
+ pull_request:
+ paths:
+ - 'data/constants/**'
+ - 'lib/python/**'
+
+jobs:
+ regen:
+ runs-on: ubuntu-latest
+
+ container: qmkfm/qmk_cli
+
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Run qmk generators
+ run: |
+ util/regen.sh
+ git diff
+
+ - name: Fail when regeneration required
+ run: |
+ git diff
+ for file in $(git diff --name-only); do
+ echo "File '${file}' Requires Regeneration"
+ echo "::error file=${file}::Requires Regeneration"
+ done
+ test -z "$(git diff --name-only)"
diff --git a/.github/workflows/regen_push.yml b/.github/workflows/regen_push.yml
new file mode 100644
index 0000000000..fb3314f319
--- /dev/null
+++ b/.github/workflows/regen_push.yml
@@ -0,0 +1,43 @@
+name: Regenerate Files
+
+permissions:
+ contents: write
+
+on:
+ push:
+ branches:
+ - master
+ - develop
+
+jobs:
+ regen:
+ runs-on: ubuntu-latest
+
+ container: qmkfm/qmk_cli
+
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Run qmk generators
+ run: |
+ util/regen.sh
+ git diff
+
+ - uses: rlespinasse/github-slug-action@v3.x
+
+ - name: Become QMK Bot
+ run: |
+ git config user.name 'QMK Bot'
+ git config user.email 'hello@qmk.fm'
+
+ - name: Create Pull Request
+ uses: peter-evans/create-pull-request@v4
+ if: ${{ github.repository == 'qmk/qmk_firmware'}}
+ with:
+ token: ${{ secrets.QMK_BOT_TOKEN }}
+ delete-branch: true
+ branch: bugfix/format_${{ env.GITHUB_REF_SLUG }}
+ author: QMK Bot <hello@qmk.fm>
+ committer: QMK Bot <hello@qmk.fm>
+ commit-message: Regenerate Files
+ title: '[CI] Regenerate Files'
diff --git a/util/lang_conv.py b/util/lang_conv.py
deleted file mode 100644
index a0da6c392d..0000000000
--- a/util/lang_conv.py
+++ /dev/null
@@ -1,65 +0,0 @@
-from pathlib import Path
-
-langs = set()
-files = Path('quantum/keymap_extras/').glob('keymap_*.h')
-for file in files:
- langs.add(file.stem.replace('keymap_', ''))
-
-for lang in langs:
- try:
- file = Path(f'quantum/keymap_extras/keymap_{lang}.h')
- print(f'Reading:{file}')
- collect = None
- out = []
- out += ['{']
- out += [' "aliases": {']
- lines = file.read_text(encoding='utf-8').split('\n')
- for line in lines:
-
- if line.startswith("// Row"):
- # print(line)
- continue
- elif line.startswith("/*******************************************************************************"):
- raise Exception(f'Skipping:{file}')
- elif '/*' in line:
- collect = [line]
- elif '*/' in line:
- collect += [line]
- if 'copyright' in collect[0].lower():
- collect = None
- continue
- out += collect
- collect = None
- elif collect:
- collect += [line]
-
- elif '#define' in line:
- define = line.split()
- while len(define) < 5:
- define.append("")
-
- if define[4] == "(backslash)":
- define[4] = '\\\\'
-
- define[4] = " ".join(define[4:]).strip()
- define[4] = define[4].replace('"', '\\"')
-
- if define[4]:
- out += [f' "{define[2]}": {{']
- out += [f' "key": "{define[1]}",']
- out += [f' "label": "{define[4]}",']
- out += [f' }}']
- else:
- out += [f' "{define[2]}": {{']
- out += [f' "key": "{define[1]}"']
- out += [f' }}']
-
- out += [' }']
- out += ['}']
-
- dump = Path(f'data/constants/keycodes/extras/keycodes_{lang}_0.0.1.hjson')
- print(f'Writing:{dump}')
- dump.write_text("\n".join(out), encoding='utf-8')
-
- except Exception as e:
- print(e)
diff --git a/util/lang_gen.sh b/util/lang_gen.sh
deleted file mode 100755
index 0b062b1a09..0000000000
--- a/util/lang_gen.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/bash
-
-for lang in $(find data/constants/keycodes/extras/ -type f -printf "%f\n" | sed "s/keycodes_//g" | sed "s/_[0-9].*//"); do
- data=$(qmk generate-keycode-extras --version latest --lang $lang)
- if [ "$?" == "0" ]; then
- echo "$data" > quantum/keymap_extras/keymap_$lang.h
- fi
-done
diff --git a/util/regen.sh b/util/regen.sh
new file mode 100755
index 0000000000..e4c52ec9a1
--- /dev/null
+++ b/util/regen.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+set -e
+
+qmk generate-rgb-breathe-table -o quantum/rgblight/rgblight_breathe_table.h
+qmk generate-keycodes --version latest -o quantum/keycodes.h
+
+for lang in $(find data/constants/keycodes/extras/ -type f -printf "%f\n" | sed "s/keycodes_\(.*\)_[0-9].*/\1/"); do
+ qmk generate-keycode-extras --version latest --lang $lang -o quantum/keymap_extras/keymap_$lang.h
+done