瀏覽代碼

CI: Add workflow for codebase formatting (#7382)

* Add workflow for codebase formatting

* stash

* review comments

* Swap to a more complete push action
Joel Challis 4 年之前
父節點
當前提交
6c4b6531fe
共有 5 個文件被更改,包括 48 次插入6 次删除
  1. 34 0
      .github/workflows/format.yaml
  2. 0 1
      .travis.yml
  3. 1 0
      lib/python/qmk/cli/__init__.py
  4. 13 0
      lib/python/qmk/cli/fileformat.py
  5. 0 5
      util/travis_compiled_push.sh

+ 34 - 0
.github/workflows/format.yaml

@@ -0,0 +1,34 @@
+name: Format Codebase
+
+on:
+  push:
+    branches:
+    - master
+
+jobs:
+  generate:
+    runs-on: ubuntu-latest
+    container: qmkfm/base_container
+
+    # protect against those who develop with their fork on master
+    if: github.repository == 'qmk/qmk_firmware'
+
+    steps:
+    - uses: actions/checkout@v2
+
+    - name: Install dependencies
+      run: |
+        apt-get update && apt-get install -y dos2unix
+
+    - name: Format files
+      run: |
+        bin/qmk cformat
+        bin/qmk pyformat
+        bin/qmk fileformat
+
+    - name: Commit files
+      uses: stefanzweifel/git-auto-commit-action@v4
+      with:
+        commit_message: "Format code according to conventions for ${GITHUB_SHA}"
+        commit_user_name: QMK Bot
+        commit_user_email: hello@qmk.fm

+ 0 - 1
.travis.yml

@@ -19,7 +19,6 @@ addons:
       - llvm-toolchain-trusty-7
       - llvm-toolchain-trusty-7
     packages:
     packages:
     - diffutils
     - diffutils
-    - dos2unix
     - clang-format-7
     - clang-format-7
     - libstdc++-7-dev
     - libstdc++-7-dev
 script:
 script:

+ 1 - 0
lib/python/qmk/cli/__init__.py

@@ -14,6 +14,7 @@ from . import compile
 from . import config
 from . import config
 from . import docs
 from . import docs
 from . import doctor
 from . import doctor
+from . import fileformat
 from . import flash
 from . import flash
 from . import generate
 from . import generate
 from . import hello
 from . import hello

+ 13 - 0
lib/python/qmk/cli/fileformat.py

@@ -0,0 +1,13 @@
+"""Format files according to QMK's style.
+"""
+from milc import cli
+
+import subprocess
+
+
+@cli.subcommand("Format files according to QMK's style.", hidden=True)
+def fileformat(cli):
+    """Run several general formatting commands.
+    """
+    dos2unix = subprocess.run(['bash', '-c', 'dos2unix **'])
+    return dos2unix.returncode

+ 0 - 5
util/travis_compiled_push.sh

@@ -10,12 +10,7 @@ echo "Using git hash ${rev}"
 
 
 if [[ "$TRAVIS_BRANCH" == "master" && "$TRAVIS_PULL_REQUEST" == "false" ]] ; then
 if [[ "$TRAVIS_BRANCH" == "master" && "$TRAVIS_PULL_REQUEST" == "false" ]] ; then
 
 
-# fix formatting
 git checkout master
 git checkout master
-git diff --diff-filter=AM --name-only -n 1 -z ${TRAVIS_COMMIT_RANGE} | xargs -0 dos2unix
-git diff --diff-filter=AM --name-only -n 1 -z ${TRAVIS_COMMIT_RANGE} '*.c' '*.h' '*.cpp' | grep -z -e '^drivers' -e '^quantum' -e '^tests' -e '^tmk_core' | grep -zv -e 'quantum/template' -e 'tmk_core/protocol/usb_hid' -e 'platforms/chibios' | xargs -0 clang-format-7 -i
-git diff --diff-filter=AM --name-only -n 1 -z ${TRAVIS_COMMIT_RANGE} | xargs -0 git add
-git commit -m "format code according to conventions [skip ci]" && git push git@github.com:qmk/qmk_firmware.git master
 
 
 git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE}
 git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE}