From 5a3594366f2bd8a4aed34f6d085d9c516b9dbc32 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sun, 1 Jan 2023 00:46:17 +0000 Subject: [PATCH] Initial DD keycode regen workflow (#19400) --- .github/workflows/regen.yml | 33 ++++++++++++++++ .github/workflows/regen_push.yml | 43 +++++++++++++++++++++ util/lang_conv.py | 65 -------------------------------- util/lang_gen.sh | 8 ---- util/regen.sh | 9 +++++ 5 files changed, 85 insertions(+), 73 deletions(-) create mode 100644 .github/workflows/regen.yml create mode 100644 .github/workflows/regen_push.yml delete mode 100644 util/lang_conv.py delete mode 100755 util/lang_gen.sh create mode 100755 util/regen.sh 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 + committer: QMK Bot + 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