CI: Add workflow for codebase formatting (#7382)
* Add workflow for codebase formatting * stash * review comments * Swap to a more complete push action
This commit is contained in:
parent
82bb47a2f1
commit
6c4b6531fe
5 changed files with 48 additions and 6 deletions
34
.github/workflows/format.yaml
vendored
Normal file
34
.github/workflows/format.yaml
vendored
Normal file
|
@ -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
|
|
@ -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:
|
||||||
|
|
|
@ -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
lib/python/qmk/cli/fileformat.py
Normal file
13
lib/python/qmk/cli/fileformat.py
Normal file
|
@ -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
|
|
@ -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}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue