From 71340aa95fe5b7be4a57ec114cecece808d36d52 Mon Sep 17 00:00:00 2001 From: Rotzbua Date: Wed, 22 Nov 2023 22:50:02 +0100 Subject: [PATCH] Add pre-commit config and test --- .gitattributes | 1 + .github/workflows/precommit.yml | 16 +++++++++++ .pre-commit-config.yaml | 49 +++++++++++++++++++++++++++++++++ CONTRIBUTING.rst | 13 +++++++++ requirements_dev.txt | 4 +++ 5 files changed, 83 insertions(+) create mode 100644 .github/workflows/precommit.yml create mode 100644 .pre-commit-config.yaml create mode 100644 requirements_dev.txt diff --git a/.gitattributes b/.gitattributes index d9bd16b09..61d299b53 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,2 @@ *.py text eol=lf +*.sh text eol=lf diff --git a/.github/workflows/precommit.yml b/.github/workflows/precommit.yml new file mode 100644 index 000000000..ec91487c8 --- /dev/null +++ b/.github/workflows/precommit.yml @@ -0,0 +1,16 @@ +on: + pull_request: + +jobs: + main: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [ "3.8", "3.12" ] # Lowest and highest. + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: "pip" # caching pip dependencies + - uses: pre-commit/action@v3.0.0 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 000000000..65164559e --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,49 @@ +# See https://pre-commit.com for more information +# See https://pre-commit.com/hooks.html for more hooks +ci: + autofix_prs: true + autoupdate_schedule: quarterly +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.5.0 + hooks: + - id: check-yaml + - id: check-toml + - id: requirements-txt-fixer + - id: check-case-conflict + - id: detect-private-key + - id: check-executables-have-shebangs + - id: check-shebang-scripts-are-executable + + - repo: https://github.com/pre-commit/pygrep-hooks + rev: v1.10.0 # Use the ref you want to point at + hooks: + - id: python-use-type-annotations + - id: python-no-eval + - id: rst-backticks + - id: rst-directive-colons + - id: rst-inline-touching-normal + + - repo: https://github.com/asottile/pyupgrade + rev: v3.15.0 + hooks: + - id: pyupgrade + args: [ --py38-plus ] + + - repo: https://github.com/rstcheck/rstcheck + rev: v6.2.0 + hooks: + - id: rstcheck + args: [ "--report-level=warning", "--ignore-directives=autoclass,automethod,automodule" ] + additional_dependencies: [ sphinx ] + + - repo: https://github.com/shellcheck-py/shellcheck-py + rev: v0.9.0.6 + hooks: + - id: shellcheck + + - repo: https://github.com/codespell-project/codespell + rev: v2.2.6 + hooks: + - id: codespell + exclude: ^(boxes|locale|po|static)/ # todo folder boxes diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index e5b46653f..022b0fb6d 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -54,6 +54,19 @@ If you want feed back on you code feel free to open a PR. State that this is work in progress in the PR message. It's OK if it does not follow the guidelines (yet). +Check Code +.......... + +The `pre-commit `_ tool is used to verify the code style. +When installed, it automatically checks and corrects the code before each commit. + +* Install *pre-commit*, e.g. :code:`pip install pre-commit` +* Install githook :code:`pre-commit install` + +For manual check use :code:`pre-commit run --all-files`. + +To remove githook use :code:`pre-commit uninstall`. + Writing new Generators ...................... diff --git a/requirements_dev.txt b/requirements_dev.txt new file mode 100644 index 000000000..ba521cb0f --- /dev/null +++ b/requirements_dev.txt @@ -0,0 +1,4 @@ +inkex +mypy +pre-commit +types-Markdown