diff --git a/.renovaterc.json b/.renovaterc.json index d11c983b..81bb5d53 100644 --- a/.renovaterc.json +++ b/.renovaterc.json @@ -29,7 +29,8 @@ ], "matchStrings": [ "pip install.* (?.*?)(\\[.*?\\])?==(?.*?)[\"\n]", - "pipx install( --force)? (?.*?)(\\[.*?\\])?==(?.*?)\\s" + "pipx install( --force)? (?.*?)(\\[.*?\\])?==(?.*?)\\s", + "pipx list --short \\| grep -q \"(?.*?)(\\[.*?\\])? (?.*?)\"" ] }, { diff --git a/Makefile b/Makefile index 86839553..9940a14e 100644 --- a/Makefile +++ b/Makefile @@ -61,13 +61,14 @@ lock: # Install standalone tools prerequisites: - pipx install --force check-jsonschema==0.31.0 - pipx install --force codespell[toml]==2.4.1 - pipx install --force pdm==2.22.3 - pipx install --force pre-commit==4.1.0 - pipx install --force pyproject-fmt==2.5.0 - pipx install --force ruff==0.9.3 - pipx install --force watchfiles==1.0.4 + pipx list --short | grep -q "check-jsonschema 0.31.0" || pipx install --force check-jsonschema==0.31.0 + pipx list --short | grep -q "codespell 2.4.1" || pipx install --force codespell[toml]==2.4.1 + pipx list --short | grep -q "copier 9.4.1" || pipx install --force copier==9.4.1 + pipx list --short | grep -q "pdm 2.22.3" || pipx install --force pdm==2.22.3 + pipx list --short | grep -q "pre-commit 4.1.0" || pipx install --force pre-commit==4.1.0 + pipx list --short | grep -q "pyproject-fmt 2.5.0" || pipx install --force pyproject-fmt==2.5.0 + pipx list --short | grep -q "ruff 0.9.3" || pipx install --force ruff==0.9.3 + pipx list --short | grep -q "watchfiles 1.0.4" || pipx install --force watchfiles==1.0.4 ######################################################################################## # Lint and pre-commit @@ -98,7 +99,7 @@ check-jsonschema: check-jsonschema --builtin-schema vendor.github-workflows .github/workflows/*.yml check-jsonschema --builtin-schema vendor.gitlab-ci --data-transform gitlab-ci --regex-variant nonunicode .gitlab-ci.yml .gitlab/workflows/*.yml check-jsonschema --builtin-schema vendor.readthedocs .readthedocs.yaml - check-jsonschema --builtin-schema vendor.renovate .renovaterc.json + check-jsonschema --builtin-schema vendor.renovate --regex-variant nonunicode .renovaterc.json # Check lint with all linters. lint: mypy ruff ruff-format pyproject-fmt codespell check-jsonschema diff --git a/template/.renovaterc.json.jinja b/template/.renovaterc.json.jinja index 5983c05b..66577ecb 100644 --- a/template/.renovaterc.json.jinja +++ b/template/.renovaterc.json.jinja @@ -32,7 +32,8 @@ ], "matchStrings": [ "pip install.* (?.*?)(\\[.*?\\])?==(?.*?)[\"\n]", - "pipx install( --force)? (?.*?)(\\[.*?\\])?==(?.*?)\\s" + "pipx install( --force)? (?.*?)(\\[.*?\\])?==(?.*?)\\s", + "pipx list --short \\| grep -q \"(?.*?)(\\[.*?\\])? (?.*?)\"" ] }, { diff --git a/template/Makefile.jinja b/template/Makefile.jinja index 68dcc851..4b546a1b 100644 --- a/template/Makefile.jinja +++ b/template/Makefile.jinja @@ -65,13 +65,16 @@ lock: # Install standalone tools prerequisites: - pipx install --force check-jsonschema==0.31.0 - pipx install --force codespell[toml]==2.4.1 - pipx install --force pdm==2.22.3 - pipx install --force pre-commit==4.1.0 - pipx install --force pyproject-fmt==2.5.0 - pipx install --force ruff==0.9.3 - pipx install --force watchfiles==1.0.4 + pipx list --short | grep -q "check-jsonschema 0.31.0" || pipx install --force check-jsonschema==0.31.0 + pipx list --short | grep -q "codespell 2.4.1" || pipx install --force codespell[toml]==2.4.1 +{% if project_name == "Serious Scaffold Python" %} + pipx list --short | grep -q "copier 9.4.1" || pipx install --force copier==9.4.1 +{% endif %} + pipx list --short | grep -q "pdm 2.22.3" || pipx install --force pdm==2.22.3 + pipx list --short | grep -q "pre-commit 4.1.0" || pipx install --force pre-commit==4.1.0 + pipx list --short | grep -q "pyproject-fmt 2.5.0" || pipx install --force pyproject-fmt==2.5.0 + pipx list --short | grep -q "ruff 0.9.3" || pipx install --force ruff==0.9.3 + pipx list --short | grep -q "watchfiles 1.0.4" || pipx install --force watchfiles==1.0.4 ######################################################################################## # Lint and pre-commit @@ -106,7 +109,7 @@ check-jsonschema: check-jsonschema --builtin-schema vendor.gitlab-ci --data-transform gitlab-ci --regex-variant nonunicode .gitlab-ci.yml .gitlab/workflows/*.yml {% endif %} check-jsonschema --builtin-schema vendor.readthedocs .readthedocs.yaml - check-jsonschema --builtin-schema vendor.renovate .renovaterc.json + check-jsonschema --builtin-schema vendor.renovate --regex-variant nonunicode .renovaterc.json # Check lint with all linters. lint: mypy ruff ruff-format pyproject-fmt codespell check-jsonschema