summary refs log tree commit diff
path: root/.github
diff options
context:
space:
mode:
authorNick Brassel <nick@tzarc.org>2023-02-28 11:22:29 +1100
committerNick Brassel <nick@tzarc.org>2023-02-28 11:22:29 +1100
commitbacec14073b2e897d5a52caf12de5a6a1f7b4078 (patch)
treed4e3e57aac1a829a191831efd2e62c8a43217885 /.github
parentd70e9b8659a7fbbd7069fd542bd07e67e04327a1 (diff)
parentb865b9e1706ad28ae4882bd2e0331e98808295fa (diff)
Merge remote-tracking branch 'upstream/develop'
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/format.yml8
-rw-r--r--.github/workflows/lint.yml20
-rw-r--r--.github/workflows/regen.yml33
-rw-r--r--.github/workflows/regen_push.yml43
4 files changed, 94 insertions, 10 deletions
diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml
index 782530f62e..c671565a61 100644
--- a/.github/workflows/format.yml
+++ b/.github/workflows/format.yml
@@ -30,16 +30,14 @@ jobs:
       run: |
         pip3 install -r requirements-dev.txt
 
-    - uses: trilom/file-changes-action@v1.2.4
+    - name: Get changed files
       id: file_changes
-      with:
-        output: ' '
-        fileOutput: ' '
+      uses: tj-actions/changed-files@v34
 
     - name: Run qmk formatters
       shell: 'bash {0}'
       run: |
-        cat ~/files_added.txt ~/files_modified.txt > ~/files_changed.txt
+        echo '${{ steps.file_changes.outputs.added_files}}' '${{ steps.file_changes.outputs.modified_files}}' > ~/files_changed.txt
         qmk format-c --core-only $(< ~/files_changed.txt) || true
         qmk format-python $(< ~/files_changed.txt) || true
         qmk format-text $(< ~/files_changed.txt) || true
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 8e1dbcaea2..67d4093a0b 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -22,24 +22,24 @@ jobs:
     - name: Install dependencies
       run: pip3 install -r requirements-dev.txt
 
-    - uses: trilom/file-changes-action@v1.2.4
+    - name: Get changed files
       id: file_changes
-      with:
-        output: '\n'
+      uses: tj-actions/changed-files@v34
 
     - name: Print info
       run: |
         git rev-parse --short HEAD
         echo ${{ github.event.pull_request.base.sha }}
-        echo '${{ steps.file_changes.outputs.files}}'
+        echo '${{ steps.file_changes.outputs.all_changed_files}}'
 
     - name: Run qmk lint
       shell: 'bash {0}'
       run: |
-        QMK_CHANGES=$(echo -e '${{ steps.file_changes.outputs.files}}')
+        QMK_CHANGES=$(echo -e '${{ steps.file_changes.outputs.all_changed_files}}' | sed 's/ /\n/g')
         QMK_KEYBOARDS=$(qmk list-keyboards)
 
         exit_code=0
+
         for KB in $QMK_KEYBOARDS; do
           KEYBOARD_CHANGES=$(echo "$QMK_CHANGES" | grep -E '^(keyboards/'${KB}'/)')
           if [[ -z "$KEYBOARD_CHANGES" ]]; then
@@ -55,6 +55,16 @@ jobs:
             exit_code=$(($exit_code + $?))
           fi
         done
+
+        qmk format-text ${{ steps.file_changes.outputs.all_changed_files}} || true
+        for file in ${{ steps.file_changes.outputs.all_changed_files}}; do
+          if ! git diff --quiet $file; then
+            echo "File '${file}' Requires Formatting"
+            echo "::error file=${file}::Requires Formatting"
+            exit_code=$(($exit_code + 1))
+          fi
+        done
+
         if [[ $exit_code -gt 255 ]]; then
             exit 255
         fi
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..37b26d980c
--- /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/regen_${{ env.GITHUB_REF_SLUG }}
+        author: QMK Bot <hello@qmk.fm>
+        committer: QMK Bot <hello@qmk.fm>
+        commit-message: Regenerate Files
+        title: '[CI] Regenerate Files'