Skip to content

Commit

Permalink
Add pre-commit configuration (#338)
Browse files Browse the repository at this point in the history
Run cmake-format and cmake-lint via pre-commit hooks. Replace the custom CI
steps with the pre-commit action.
  • Loading branch information
skosukhin authored Jan 14, 2025
1 parent 0a823c0 commit e7bf3e2
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 54 deletions.
57 changes: 4 additions & 53 deletions .github/workflows/style.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,64 +9,15 @@ on:
- documentation
workflow_dispatch:

env:
FIND_CMAKE_FILES_CMD: "find '${{ github.workspace }}' -name 'CMakeLists.txt' -o -name '*.cmake' -o -name '*.cmake.in'"

jobs:
Format:
runs-on: ubuntu-22.04
env:
DEFAULT: '\033[0m'
RED: '\033[0;31m'
GREEN: '\033[0;32m'
FORMAT_PATCH: '${{ github.workspace }}/format.patch'
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Install Python
uses: actions/setup-python@v5
with:
python-version: '>=3.8'
- name: Install required tools
run: python -m pip install cmake-format
- name: Format CMake
run: cmake-format -i $(eval "${FIND_CMAKE_FILES_CMD}")
- name: Check if patching is required
id: patch-required
run: |
git -C '${{ github.workspace }}' diff --patch-with-raw > "${FORMAT_PATCH}"
test -s "${FORMAT_PATCH}" && {
printf "${RED}The source code does not meet the format requirements. \
Please, apply the patch (see artifacts).${DEFAULT}\n"
printf "${RED}Note that the result of the formatting might depend \
on the versions of the formatting tools. In this project, whatever \
formatting this CI job produces if the correct one. If it expects \
you to reformat parts of the source code that you did not modify, do \
so in a separate commit, which must not be squashed, and list the \
commit in the '.git-blame-ignore-revs' file.${DEFAULT}\n"
exit 1
} || {
printf "${GREEN}The source code meets the format requirements.${DEFAULT}\n"
rm -rf "${FORMAT_PATCH}"
}
- name: Upload the patch file
if: always() && steps.patch-required.outcome == 'failure'
uses: actions/upload-artifact@v4
with:
name: format-patch
path: ${{ env.FORMAT_PATCH }}
Lint:
pre-commit:
runs-on: ubuntu-22.04
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Install Python
uses: actions/setup-python@v5
with:
python-version: '>=3.8'
- name: Install required tools
run: python -m pip install cmake-format
- name: Lint CMake
run: cmake-lint $(eval "${FIND_CMAKE_FILES_CMD}")
python-version: 3.x
- name: Run pre-commit
uses: pre-commit/action@v3.0.1
14 changes: 14 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
repos:
- repo: https://github.com/cheshirekow/cmake-format-precommit
rev: v0.6.13
hooks:
- id: cmake-format
- id: cmake-format
name: cmake-format (templates)
types: [file]
files: \.cmake\.in$
- id: cmake-lint
- id: cmake-lint
name: cmake-lint (templates)
types: [file]
files: \.cmake\.in$
1 change: 0 additions & 1 deletion environment-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ dependencies:
- gfortran
- netcdf-fortran
- cmake
- cmake-format
- ninja
variables:
FC: gfortran
Expand Down

0 comments on commit e7bf3e2

Please sign in to comment.