Make CI enforce pre-commit clean code (#1096)
* pre-commit: Enforce pre-commit clean code via CI
* ci.yml: Resolve duplication of isort and yapf
By now pre-commit is already running these.
* ci.yml: Move flake8 to pre-commit
* README.rst: Add CI status badge for workflow "Run pre-commit"
* README.rst: Fix link for CI workflow "YAPF" (ci.yml)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 23e9f8e..966f896 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -23,20 +23,8 @@
- name: Install dependencies
run: |
python -m pip install --upgrade pip
- - name: Lint with flake8
- run: |
- python -m pip install flake8
- flake8 . --statistics
- name: Test with pytest
run: |
pip install pytest
pip install pytest-cov
pytest
- - name: Lint with isort
- run: |
- pip install isort
- isort . --check --diff
- - name: Lint with yapf
- run: |
- pip install .
- yapf . -vv --diff --recursive
diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml
new file mode 100644
index 0000000..1d11c26
--- /dev/null
+++ b/.github/workflows/pre-commit.yml
@@ -0,0 +1,37 @@
+# Copyright (c) 2023 Sebastian Pipping <sebastian@pipping.org>
+# Licensed under the Apache License Version 2.0
+
+name: Run pre-commit
+
+# Drop permissions to minimum for security
+permissions:
+ contents: read
+
+on:
+ pull_request:
+ push:
+ schedule:
+ - cron: '0 2 * * 5' # Every Friday at 2am
+ workflow_dispatch:
+
+jobs:
+ pre_commit_run:
+ name: Run pre-commit
+ runs-on: ubuntu-22.04
+ steps:
+ - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
+
+ - uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0
+ with:
+ python-version: 3.11
+
+ - name: Install yapf (to be available to pre-commit)
+ run: |-
+ pip install \
+ --disable-pip-version-check \
+ --no-warn-script-location \
+ --user \
+ .
+ echo "PATH=${HOME}/.local/bin:${PATH}" >> "${GITHUB_ENV}"
+
+ - uses: pre-commit/action@646c83fcd040023954eafda54b4db0192ce70507 # v3.0.0
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 049a1a2..b4adc7c 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -7,6 +7,10 @@
hooks:
- id: isort
name: isort (python)
+ - repo: https://github.com/pycqa/flake8
+ rev: 6.0.0
+ hooks:
+ - id: flake8
- repo: local
hooks:
- id: yapf
diff --git a/README.rst b/README.rst
index 8b6e781..25e8c10 100644
--- a/README.rst
+++ b/README.rst
@@ -7,9 +7,13 @@
:alt: PyPI version
.. image:: https://github.com/google/yapf/actions/workflows/ci.yml/badge.svg
- :target: https://github.com/google/yapf/actions
+ :target: https://github.com/google/yapf/actions/workflows/ci.yml
:alt: Build status
+.. image:: https://github.com/google/yapf/actions/workflows/pre-commit.yml/badge.svg
+ :target: https://github.com/google/yapf/actions/workflows/pre-commit.yml
+ :alt: Run pre-commit
+
.. image:: https://coveralls.io/repos/google/yapf/badge.svg?branch=main
:target: https://coveralls.io/r/google/yapf?branch=main
:alt: Coverage status