forked from mirrors/qmk_userspace
		
	Initial DD keycode regen workflow (#19400)
This commit is contained in:
		
					parent
					
						
							
								422fd8aed8
							
						
					
				
			
			
				commit
				
					
						5a3594366f
					
				
			
		
					 5 changed files with 85 additions and 73 deletions
				
			
		
							
								
								
									
										33
									
								
								.github/workflows/regen.yml
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								.github/workflows/regen.yml
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -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)"
 | 
				
			||||||
							
								
								
									
										43
									
								
								.github/workflows/regen_push.yml
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								.github/workflows/regen_push.yml
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -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'
 | 
				
			||||||
| 
						 | 
					@ -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)
 | 
					 | 
				
			||||||
| 
						 | 
					@ -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
 | 
					 | 
				
			||||||
							
								
								
									
										9
									
								
								util/regen.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										9
									
								
								util/regen.sh
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -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
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue