mirror of
https://github.com/thegeeklab/ansible-doctor.git
synced 2024-06-02 08:29:47 +02:00
Compare commits
93 Commits
Author | SHA1 | Date | |
---|---|---|---|
3df7e465db | |||
89c6a11be4 | |||
|
4051d2915d | ||
|
fe4e4e5f7a | ||
|
172e4f4380 | ||
|
fada900568 | ||
|
013f760c8a | ||
|
00adc389a2 | ||
|
84fdc06315 | ||
|
db68e80372 | ||
|
af702628eb | ||
|
81d4e97af6 | ||
|
a33f3c53bb | ||
|
ccc2d249f8 | ||
|
f7ff5fd624 | ||
|
acee6e1285 | ||
|
2375ad118d | ||
|
a2f02527d9 | ||
|
0bf59ac34f | ||
|
94ec1a632b | ||
|
075e1f91ca | ||
4cf63bf2fe | |||
|
e3f797d5e3 | ||
|
3a0c5ae35f | ||
|
9f7f943c93 | ||
|
b38c4aa2b8 | ||
|
ed167d1443 | ||
|
da6fd26c6d | ||
|
522c21f8fc | ||
|
28e39055e3 | ||
|
894965286b | ||
|
c2e0f787ce | ||
|
d524537fd3 | ||
|
a559b654ca | ||
|
aa78adf912 | ||
6e88c18375 | |||
7b9ba09f1d | |||
|
08883952c1 | ||
|
e1ef4937dd | ||
|
571222f6f5 | ||
|
6d50525021 | ||
|
3ade4698e7 | ||
|
ee81c8ee73 | ||
|
03df5bd79b | ||
|
1e32a8f87a | ||
|
dab9bc8691 | ||
e2eaa81c4f | |||
|
732f588aa9 | ||
6619351fbd | |||
|
8f6f444931 | ||
|
49b861cabc | ||
|
59b497d745 | ||
b2f4fd2bd8 | |||
|
864af95606 | ||
|
758c87ee80 | ||
|
9b0edda70a | ||
|
1d32f7548a | ||
|
704cdb9d7c | ||
|
c7f3fe57a0 | ||
|
1270d7cb7d | ||
|
461eeb2d74 | ||
|
0817646004 | ||
|
5242fd882a | ||
|
052c668d92 | ||
1e8a8beef7 | |||
|
c124460c11 | ||
|
38bd53f7bc | ||
|
dbf9c979ac | ||
|
fe12548387 | ||
ae14704b74 | |||
|
2232a12bc8 | ||
78d4c5f44b | |||
c3068a573f | |||
|
505f9b58cc | ||
|
593df92d32 | ||
|
568b91654d | ||
|
4afabc4284 | ||
|
10ff283ec2 | ||
|
1d0ff92bf3 | ||
|
7245a4149c | ||
|
df155dcf8a | ||
2ce29b2bff | |||
1dc53d1970 | |||
2f1f42318b | |||
|
69d682df79 | ||
223b1d8814 | |||
|
70539cc9a2 | ||
|
982e2db2df | ||
|
787c09a741 | ||
|
95c2a6aeaf | ||
|
855f48894a | ||
2270051d0d | |||
|
c0f100b70e |
6
.github/settings.yml
vendored
6
.github/settings.yml
vendored
|
@ -53,11 +53,7 @@ branches:
|
||||||
strict: false
|
strict: false
|
||||||
contexts:
|
contexts:
|
||||||
- ci/woodpecker/pr/lint
|
- ci/woodpecker/pr/lint
|
||||||
- ci/woodpecker/pr/test/1
|
- ci/woodpecker/pr/test
|
||||||
- ci/woodpecker/pr/test/2
|
|
||||||
- ci/woodpecker/pr/test/3
|
|
||||||
- ci/woodpecker/pr/test/4
|
|
||||||
- ci/woodpecker/pr/test/5
|
|
||||||
- ci/woodpecker/pr/build-package
|
- ci/woodpecker/pr/build-package
|
||||||
- ci/woodpecker/pr/build-container
|
- ci/woodpecker/pr/build-container
|
||||||
- ci/woodpecker/pr/docs
|
- ci/woodpecker/pr/docs
|
||||||
|
|
1
.lycheeignore
Normal file
1
.lycheeignore
Normal file
|
@ -0,0 +1 @@
|
||||||
|
https://hub.docker.com/r/thegeeklab/*
|
|
@ -6,3 +6,5 @@
|
||||||
language: python
|
language: python
|
||||||
pass_filenames: False
|
pass_filenames: False
|
||||||
always_run: True
|
always_run: True
|
||||||
|
additional_dependencies:
|
||||||
|
- .[ansible-core]
|
||||||
|
|
|
@ -6,15 +6,14 @@ when:
|
||||||
- ${CI_REPO_DEFAULT_BRANCH}
|
- ${CI_REPO_DEFAULT_BRANCH}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
build:
|
- name: build
|
||||||
image: docker.io/library/python:3.12
|
image: docker.io/library/python:3.12
|
||||||
commands:
|
commands:
|
||||||
- git fetch --depth=2147483647
|
|
||||||
- pip install poetry poetry-dynamic-versioning -qq
|
- pip install poetry poetry-dynamic-versioning -qq
|
||||||
- poetry build
|
- poetry build
|
||||||
|
|
||||||
dryrun:
|
- name: dryrun
|
||||||
image: quay.io/thegeeklab/wp-docker-buildx:1
|
image: quay.io/thegeeklab/wp-docker-buildx:4
|
||||||
settings:
|
settings:
|
||||||
containerfile: Containerfile.multiarch
|
containerfile: Containerfile.multiarch
|
||||||
dry_run: true
|
dry_run: true
|
||||||
|
@ -26,9 +25,9 @@ steps:
|
||||||
when:
|
when:
|
||||||
- event: [pull_request]
|
- event: [pull_request]
|
||||||
|
|
||||||
publish-dockerhub:
|
- name: publish-dockerhub
|
||||||
|
image: quay.io/thegeeklab/wp-docker-buildx:4
|
||||||
group: container
|
group: container
|
||||||
image: quay.io/thegeeklab/wp-docker-buildx:1
|
|
||||||
settings:
|
settings:
|
||||||
auto_tag: true
|
auto_tag: true
|
||||||
containerfile: Containerfile.multiarch
|
containerfile: Containerfile.multiarch
|
||||||
|
@ -47,9 +46,9 @@ steps:
|
||||||
branch:
|
branch:
|
||||||
- ${CI_REPO_DEFAULT_BRANCH}
|
- ${CI_REPO_DEFAULT_BRANCH}
|
||||||
|
|
||||||
publish-quay:
|
- name: publish-quay
|
||||||
|
image: quay.io/thegeeklab/wp-docker-buildx:4
|
||||||
group: container
|
group: container
|
||||||
image: quay.io/thegeeklab/wp-docker-buildx:1
|
|
||||||
settings:
|
settings:
|
||||||
auto_tag: true
|
auto_tag: true
|
||||||
containerfile: Containerfile.multiarch
|
containerfile: Containerfile.multiarch
|
||||||
|
|
|
@ -6,27 +6,25 @@ when:
|
||||||
- ${CI_REPO_DEFAULT_BRANCH}
|
- ${CI_REPO_DEFAULT_BRANCH}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
build:
|
- name: build
|
||||||
image: docker.io/library/python:3.12
|
image: docker.io/library/python:3.12
|
||||||
commands:
|
commands:
|
||||||
- git fetch --depth=2147483647
|
|
||||||
- pip install poetry poetry-dynamic-versioning -qq
|
- pip install poetry poetry-dynamic-versioning -qq
|
||||||
- poetry build
|
- poetry build
|
||||||
|
|
||||||
checksum:
|
- name: checksum
|
||||||
image: quay.io/thegeeklab/alpine-tools
|
image: quay.io/thegeeklab/alpine-tools
|
||||||
commands:
|
commands:
|
||||||
- cd dist/ && sha256sum * > ../sha256sum.txt
|
- cd dist/ && sha256sum * > ../sha256sum.txt
|
||||||
|
|
||||||
changelog:
|
- name: changelog
|
||||||
image: quay.io/thegeeklab/git-sv
|
image: quay.io/thegeeklab/git-sv
|
||||||
commands:
|
commands:
|
||||||
- git fetch --depth=2147483647
|
|
||||||
- git sv current-version
|
- git sv current-version
|
||||||
- git sv release-notes -t ${CI_COMMIT_TAG:-next} -o CHANGELOG.md
|
- git sv release-notes -t ${CI_COMMIT_TAG:-next} -o CHANGELOG.md
|
||||||
- cat CHANGELOG.md
|
- cat CHANGELOG.md
|
||||||
|
|
||||||
publish-github:
|
- name: publish-github
|
||||||
image: docker.io/plugins/github-release
|
image: docker.io/plugins/github-release
|
||||||
settings:
|
settings:
|
||||||
api_key:
|
api_key:
|
||||||
|
@ -40,15 +38,14 @@ steps:
|
||||||
when:
|
when:
|
||||||
- event: [tag]
|
- event: [tag]
|
||||||
|
|
||||||
publish-pypi:
|
- name: publish-pypi
|
||||||
image: docker.io/library/python:3.12
|
image: docker.io/library/python:3.12
|
||||||
secrets:
|
secrets:
|
||||||
- source: pypi_password
|
- source: pypi_password
|
||||||
target: POETRY_HTTP_BASIC_PYPI_PASSWORD
|
target: POETRY_HTTP_BASIC_PYPI_PASSWORD
|
||||||
- source: pypi_username
|
- source: pypi_username
|
||||||
target: POETRY_HTTP_BASIC_PYPI_USERNAME
|
target: POETRY_HTTP_BASIC_PYPI_USERNAME
|
||||||
commands:
|
commands:
|
||||||
- git fetch --depth=2147483647
|
|
||||||
- pip install poetry poetry-dynamic-versioning -qq
|
- pip install poetry poetry-dynamic-versioning -qq
|
||||||
- poetry publish -n
|
- poetry publish -n
|
||||||
when:
|
when:
|
||||||
|
|
|
@ -6,51 +6,44 @@ when:
|
||||||
- ${CI_REPO_DEFAULT_BRANCH}
|
- ${CI_REPO_DEFAULT_BRANCH}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
assets:
|
- name: assets
|
||||||
image: quay.io/thegeeklab/alpine-tools
|
image: quay.io/thegeeklab/alpine-tools
|
||||||
commands:
|
commands:
|
||||||
- make doc
|
- make doc
|
||||||
|
|
||||||
markdownlint:
|
- name: markdownlint
|
||||||
image: quay.io/thegeeklab/markdownlint-cli
|
image: quay.io/thegeeklab/markdownlint-cli
|
||||||
group: test
|
group: test
|
||||||
commands:
|
commands:
|
||||||
- markdownlint 'README.md' 'CONTRIBUTING.md'
|
- markdownlint 'README.md' 'CONTRIBUTING.md'
|
||||||
|
|
||||||
spellcheck:
|
- name: spellcheck
|
||||||
image: quay.io/thegeeklab/alpine-tools
|
image: quay.io/thegeeklab/alpine-tools
|
||||||
group: test
|
group: test
|
||||||
commands:
|
commands:
|
||||||
- spellchecker --files '_docs/**/*.md' 'README.md' 'CONTRIBUTING.md' -d .dictionary -p spell indefinite-article syntax-urls
|
- spellchecker --files 'docs/**/*.md' 'README.md' 'CONTRIBUTING.md' -d .dictionary -p spell indefinite-article syntax-urls
|
||||||
environment:
|
environment:
|
||||||
FORCE_COLOR: "true"
|
FORCE_COLOR: "true"
|
||||||
NPM_CONFIG_LOGLEVEL: "error"
|
|
||||||
|
|
||||||
link-validation:
|
- name: link-validation
|
||||||
image: docker.io/lycheeverse/lychee
|
image: docker.io/lycheeverse/lychee
|
||||||
group: test
|
group: test
|
||||||
commands:
|
commands:
|
||||||
- lychee --no-progress --format detailed docs/content README.md
|
- lychee --no-progress --format detailed docs/content README.md
|
||||||
|
|
||||||
testbuild:
|
- name: build
|
||||||
image: quay.io/thegeeklab/hugo:0.115.2
|
image: quay.io/thegeeklab/hugo:0.125.7
|
||||||
commands:
|
|
||||||
- hugo --panicOnWarning -s docs/ -b http://localhost:8000/
|
|
||||||
|
|
||||||
build:
|
|
||||||
image: quay.io/thegeeklab/hugo:0.115.2
|
|
||||||
commands:
|
commands:
|
||||||
- hugo --panicOnWarning -s docs/
|
- hugo --panicOnWarning -s docs/
|
||||||
|
|
||||||
beautify:
|
- name: beautify
|
||||||
image: quay.io/thegeeklab/alpine-tools
|
image: quay.io/thegeeklab/alpine-tools
|
||||||
commands:
|
commands:
|
||||||
- html-beautify -r -f 'docs/public/**/*.html'
|
- html-beautify -r -f 'docs/public/**/*.html'
|
||||||
environment:
|
environment:
|
||||||
FORCE_COLOR: "true"
|
FORCE_COLOR: "true"
|
||||||
NPM_CONFIG_LOGLEVEL: error
|
|
||||||
|
|
||||||
publish:
|
- name: publish
|
||||||
image: quay.io/thegeeklab/wp-s3-action
|
image: quay.io/thegeeklab/wp-s3-action
|
||||||
settings:
|
settings:
|
||||||
access_key:
|
access_key:
|
||||||
|
@ -69,15 +62,15 @@ steps:
|
||||||
- event: [push, manual]
|
- event: [push, manual]
|
||||||
branch:
|
branch:
|
||||||
- ${CI_REPO_DEFAULT_BRANCH}
|
- ${CI_REPO_DEFAULT_BRANCH}
|
||||||
status: [success]
|
status: [success, failure]
|
||||||
|
|
||||||
pushrm-dockerhub:
|
- name: pushrm-dockerhub
|
||||||
image: docker.io/chko/docker-pushrm:1
|
image: docker.io/chko/docker-pushrm:1
|
||||||
secrets:
|
secrets:
|
||||||
- source: docker_password
|
- source: docker_password
|
||||||
target: DOCKER_PASS
|
target: DOCKER_PASS
|
||||||
- source: docker_username
|
- source: docker_username
|
||||||
target: DOCKER_USER
|
target: DOCKER_USER
|
||||||
environment:
|
environment:
|
||||||
PUSHRM_FILE: README.md
|
PUSHRM_FILE: README.md
|
||||||
PUSHRM_SHORT: Annotation based documentation for your Ansible roles
|
PUSHRM_SHORT: Annotation based documentation for your Ansible roles
|
||||||
|
@ -88,7 +81,7 @@ steps:
|
||||||
- ${CI_REPO_DEFAULT_BRANCH}
|
- ${CI_REPO_DEFAULT_BRANCH}
|
||||||
status: [success]
|
status: [success]
|
||||||
|
|
||||||
pushrm-quay:
|
- name: pushrm-quay
|
||||||
image: docker.io/chko/docker-pushrm:1
|
image: docker.io/chko/docker-pushrm:1
|
||||||
secrets:
|
secrets:
|
||||||
- source: quay_token
|
- source: quay_token
|
||||||
|
|
|
@ -6,22 +6,20 @@ when:
|
||||||
- ${CI_REPO_DEFAULT_BRANCH}
|
- ${CI_REPO_DEFAULT_BRANCH}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
check-format:
|
- name: check-format
|
||||||
image: docker.io/library/python:3.12
|
image: docker.io/library/python:3.12
|
||||||
commands:
|
commands:
|
||||||
- git fetch --depth=2147483647
|
|
||||||
- pip install poetry poetry-dynamic-versioning -qq
|
- pip install poetry poetry-dynamic-versioning -qq
|
||||||
- poetry install
|
- poetry install -E ansible-core
|
||||||
- poetry run ruff format --check --diff ./${CI_REPO_NAME//-/}
|
- poetry run ruff format --check --diff ./${CI_REPO_NAME//-/}
|
||||||
environment:
|
environment:
|
||||||
PY_COLORS: "1"
|
PY_COLORS: "1"
|
||||||
|
|
||||||
check-coding:
|
- name: check-coding
|
||||||
image: docker.io/library/python:3.12
|
image: docker.io/library/python:3.12
|
||||||
commands:
|
commands:
|
||||||
- git fetch --depth=2147483647
|
|
||||||
- pip install poetry poetry-dynamic-versioning -qq
|
- pip install poetry poetry-dynamic-versioning -qq
|
||||||
- poetry install
|
- poetry install -E ansible-core
|
||||||
- poetry run ruff ./${CI_REPO_NAME//-/}
|
- poetry run ruff check ./${CI_REPO_NAME//-/}
|
||||||
environment:
|
environment:
|
||||||
PY_COLORS: "1"
|
PY_COLORS: "1"
|
||||||
|
|
|
@ -8,7 +8,7 @@ when:
|
||||||
runs_on: [success, failure]
|
runs_on: [success, failure]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
matrix:
|
- name: matrix
|
||||||
image: quay.io/thegeeklab/wp-matrix
|
image: quay.io/thegeeklab/wp-matrix
|
||||||
settings:
|
settings:
|
||||||
homeserver:
|
homeserver:
|
||||||
|
|
|
@ -5,22 +5,30 @@ when:
|
||||||
branch:
|
branch:
|
||||||
- ${CI_REPO_DEFAULT_BRANCH}
|
- ${CI_REPO_DEFAULT_BRANCH}
|
||||||
|
|
||||||
matrix:
|
variables:
|
||||||
PYTHON_VERSION:
|
- &pytest_base
|
||||||
- "3.8"
|
group: pytest
|
||||||
- "3.9"
|
|
||||||
- "3.10"
|
|
||||||
- "3.11"
|
|
||||||
- "3.12"
|
|
||||||
|
|
||||||
steps:
|
|
||||||
pytest:
|
|
||||||
image: docker.io/library/python:${PYTHON_VERSION}
|
|
||||||
commands:
|
commands:
|
||||||
- git fetch --depth=2147483647
|
|
||||||
- pip install poetry poetry-dynamic-versioning -qq
|
- pip install poetry poetry-dynamic-versioning -qq
|
||||||
- poetry install
|
- poetry install -E ansible-core
|
||||||
- poetry version
|
- poetry version
|
||||||
- poetry run ${CI_REPO_NAME} --help
|
- poetry run ${CI_REPO_NAME} --help
|
||||||
environment:
|
environment:
|
||||||
PY_COLORS: "1"
|
PY_COLORS: "1"
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: python-312
|
||||||
|
image: docker.io/library/python:3.12
|
||||||
|
<<: *pytest_base
|
||||||
|
|
||||||
|
- name: python-311
|
||||||
|
image: docker.io/library/python:3.11
|
||||||
|
<<: *pytest_base
|
||||||
|
|
||||||
|
- name: python-310
|
||||||
|
image: docker.io/library/python:3.10
|
||||||
|
<<: *pytest_base
|
||||||
|
|
||||||
|
- name: python-39
|
||||||
|
image: docker.io/library/python:3.9
|
||||||
|
<<: *pytest_base
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
FROM python:3.12-alpine@sha256:09f18c1f8ca777f63934b415af9a781a0e5aaba5e005ba0475cba71bb3e8e609
|
FROM python:3.12-alpine@sha256:5365725a6cd59b72a927628fdda9965103e3dc671676c89ef3ed8b8b0e22e812
|
||||||
|
|
||||||
LABEL maintainer="Robert Kaussow <mail@thegeeklab.de>"
|
LABEL maintainer="Robert Kaussow <mail@thegeeklab.de>"
|
||||||
LABEL org.opencontainers.image.authors="Robert Kaussow <mail@thegeeklab.de>"
|
LABEL org.opencontainers.image.authors="Robert Kaussow <mail@thegeeklab.de>"
|
||||||
|
@ -14,7 +14,7 @@ ADD dist/ansible_doctor-*.whl /
|
||||||
|
|
||||||
RUN apk --update add --virtual .build-deps build-base libffi-dev openssl-dev && \
|
RUN apk --update add --virtual .build-deps build-base libffi-dev openssl-dev && \
|
||||||
pip install --upgrade --no-cache-dir pip && \
|
pip install --upgrade --no-cache-dir pip && \
|
||||||
pip install --no-cache-dir $(find / -name "ansible_doctor-*.whl") && \
|
pip install --no-cache-dir $(find / -name "ansible_doctor-*.whl")[ansible-core] && \
|
||||||
rm -f ansible_doctor-*.whl && \
|
rm -f ansible_doctor-*.whl && \
|
||||||
rm -rf /var/cache/apk/* && \
|
rm -rf /var/cache/apk/* && \
|
||||||
rm -rf /root/.cache/
|
rm -rf /root/.cache/
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -1,5 +1,5 @@
|
||||||
# renovate: datasource=github-releases depName=thegeeklab/hugo-geekdoc
|
# renovate: datasource=github-releases depName=thegeeklab/hugo-geekdoc
|
||||||
THEME_VERSION := v0.44.0
|
THEME_VERSION := v0.45.0
|
||||||
THEME := hugo-geekdoc
|
THEME := hugo-geekdoc
|
||||||
BASEDIR := docs
|
BASEDIR := docs
|
||||||
THEMEDIR := $(BASEDIR)/themes
|
THEMEDIR := $(BASEDIR)/themes
|
||||||
|
|
|
@ -1,3 +1,10 @@
|
||||||
"""Provide version information."""
|
"""Provide version information."""
|
||||||
|
|
||||||
__version__ = "0.0.0"
|
__version__ = "0.0.0"
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
try:
|
||||||
|
import ansible # noqa
|
||||||
|
except ImportError:
|
||||||
|
sys.exit("ERROR: Python requirements are missing: 'ansible-core' not found.")
|
||||||
|
|
|
@ -123,6 +123,12 @@ class Config:
|
||||||
"file": True,
|
"file": True,
|
||||||
"type": environs.Env().bool,
|
"type": environs.Env().bool,
|
||||||
},
|
},
|
||||||
|
"tabulate_variables": {
|
||||||
|
"default": False,
|
||||||
|
"env": "TABULATE_VARIABLES",
|
||||||
|
"file": True,
|
||||||
|
"type": environs.Env().bool,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
ANNOTATIONS = {
|
ANNOTATIONS = {
|
||||||
|
@ -312,11 +318,8 @@ class Config:
|
||||||
try:
|
try:
|
||||||
anyconfig.validate(config, self.schema, ac_schema_safe=False)
|
anyconfig.validate(config, self.schema, ac_schema_safe=False)
|
||||||
except jsonschema.exceptions.ValidationError as e:
|
except jsonschema.exceptions.ValidationError as e:
|
||||||
schema_error = "Failed validating '{validator}' in schema{schema}\n{message}".format(
|
schema = format_as_index(list(e.relative_schema_path)[:-1])
|
||||||
validator=e.validator,
|
schema_error = f"Failed validating '{e.validator}' in schema {schema}\n{e.message}"
|
||||||
schema=format_as_index(list(e.relative_schema_path)[:-1]),
|
|
||||||
message=e.message,
|
|
||||||
)
|
|
||||||
raise ansibledoctor.exception.ConfigError("Configuration error", schema_error) from e
|
raise ansibledoctor.exception.ConfigError("Configuration error", schema_error) from e
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
@ -326,7 +329,7 @@ class Config:
|
||||||
tree[key] = (
|
tree[key] = (
|
||||||
value
|
value
|
||||||
if len(vector) == 1
|
if len(vector) == 1
|
||||||
else self._add_dict_branch(tree[key] if key in tree else {}, vector[1:], value)
|
else self._add_dict_branch(tree.get(key, {}), vector[1:], value)
|
||||||
)
|
)
|
||||||
return tree
|
return tree
|
||||||
|
|
||||||
|
@ -334,7 +337,7 @@ class Config:
|
||||||
annotations = {}
|
annotations = {}
|
||||||
if automatic:
|
if automatic:
|
||||||
for k, item in self.ANNOTATIONS.items():
|
for k, item in self.ANNOTATIONS.items():
|
||||||
if "automatic" in item and item["automatic"]:
|
if item.get("automatic"):
|
||||||
annotations[k] = item
|
annotations[k] = item
|
||||||
return annotations
|
return annotations
|
||||||
|
|
||||||
|
@ -342,7 +345,7 @@ class Config:
|
||||||
annotations = []
|
annotations = []
|
||||||
if automatic:
|
if automatic:
|
||||||
for k, item in self.ANNOTATIONS.items():
|
for k, item in self.ANNOTATIONS.items():
|
||||||
if "automatic" in item and item["automatic"]:
|
if item.get("automatic"):
|
||||||
annotations.append(k)
|
annotations.append(k)
|
||||||
return annotations
|
return annotations
|
||||||
|
|
||||||
|
|
|
@ -56,7 +56,7 @@ class Generator:
|
||||||
os.makedirs(directory, exist_ok=True)
|
os.makedirs(directory, exist_ok=True)
|
||||||
self.logger.info(f"Creating dir: {directory}")
|
self.logger.info(f"Creating dir: {directory}")
|
||||||
except FileExistsError as e:
|
except FileExistsError as e:
|
||||||
self.log.sysexit_with_message(str(e))
|
self.log.sysexit_with_message(e)
|
||||||
|
|
||||||
def _write_doc(self):
|
def _write_doc(self):
|
||||||
files_to_overwite = []
|
files_to_overwite = []
|
||||||
|
@ -123,7 +123,10 @@ class Generator:
|
||||||
jenv.filters["safe_join"] = self._safe_join
|
jenv.filters["safe_join"] = self._safe_join
|
||||||
# keep the old name of the function to not break custom templates.
|
# keep the old name of the function to not break custom templates.
|
||||||
jenv.filters["save_join"] = self._safe_join
|
jenv.filters["save_join"] = self._safe_join
|
||||||
data = jenv.from_string(data).render(role_data, role=role_data)
|
tabulate_vars = self.config.config.get("tabulate_variables")
|
||||||
|
data = jenv.from_string(data).render(
|
||||||
|
role_data, role=role_data, tabulate_vars=tabulate_vars
|
||||||
|
)
|
||||||
if not self.config.config["dry_run"]:
|
if not self.config.config["dry_run"]:
|
||||||
with open(doc_file, "wb") as outfile:
|
with open(doc_file, "wb") as outfile:
|
||||||
outfile.write(header_content.encode("utf-8"))
|
outfile.write(header_content.encode("utf-8"))
|
||||||
|
|
|
@ -2,10 +2,12 @@
|
||||||
{% set var = role.var | default({}) %}
|
{% set var = role.var | default({}) %}
|
||||||
{% if var %}
|
{% if var %}
|
||||||
- [Default Variables](#default-variables)
|
- [Default Variables](#default-variables)
|
||||||
|
{% if not tabulate_vars %}
|
||||||
{% for key, item in var | dictsort %}
|
{% for key, item in var | dictsort %}
|
||||||
- [{{ key }}](#{{ key }})
|
- [{{ key }}](#{{ key }})
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
{% if tag %}
|
{% if tag %}
|
||||||
- [Discovered Tags](#discovered-tags)
|
- [Discovered Tags](#discovered-tags)
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
36
ansibledoctor/templates/hugo-book/_vars_tabulated.j2
Normal file
36
ansibledoctor/templates/hugo-book/_vars_tabulated.j2
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
{% set var = role.var | default({}) %}
|
||||||
|
{% if var %}
|
||||||
|
## Default Variables
|
||||||
|
|
||||||
|
{% set columns = ["variable", "default", "description", "type", "deprecated", "example"] %}
|
||||||
|
{% set found_columns = ["variable", "default"] + var.values() | map("list") | sum(start=["key"]) | unique | list %}
|
||||||
|
{% for c in columns %}
|
||||||
|
{% if c in found_columns %}
|
||||||
|
| {{ c | capitalize }} {# trimnewline #}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
|
||||||
|
{% for c in columns %}
|
||||||
|
{% if c in found_columns %}
|
||||||
|
| {{ "-" * (c | length) }} {# trimnewline #}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
|
||||||
|
{% for key, item in var | dictsort %}
|
||||||
|
| {{ key }} {# trimnewline #}
|
||||||
|
| {{ (item.value | default({}))[key] | default }} {# trimnewline #}
|
||||||
|
{% if "description" in found_columns %}
|
||||||
|
| {{ item.description | default([]) | safe_join("<br>") | replace("\n", "<br>") | replace("|", "\|") }} {# trimnewline #}
|
||||||
|
{% endif %}
|
||||||
|
{% if "type" in found_columns %}
|
||||||
|
| {{ item.type | default([]) | join("<br>") }} {# trimnewline #}
|
||||||
|
{% endif %}
|
||||||
|
{% if "deprecated" in found_columns %}
|
||||||
|
| {{ item.deprecated | default }} {# trimnewline #}
|
||||||
|
{% endif %}
|
||||||
|
{% if "example" in found_columns %}
|
||||||
|
| {{ item.example | default([]) | safe_join("<br>") | replace("\n", "<br>") | replace("|", "\|") }} {# trimnewline #}
|
||||||
|
{% endif %}
|
||||||
|
|
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
|
@ -23,7 +23,11 @@ summary: {{ meta.summary.value | safe_join(" ") }}
|
||||||
{% include '_requirements.j2' %}
|
{% include '_requirements.j2' %}
|
||||||
|
|
||||||
{# Vars #}
|
{# Vars #}
|
||||||
|
{% if tabulate_vars %}
|
||||||
|
{% include '_vars_tabulated.j2' %}
|
||||||
|
{% else %}
|
||||||
{% include '_vars.j2' %}
|
{% include '_vars.j2' %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{# Tag #}
|
{# Tag #}
|
||||||
{% include '_tag.j2' %}
|
{% include '_tag.j2' %}
|
||||||
|
|
|
@ -15,7 +15,11 @@
|
||||||
{% include '_requirements.j2' %}
|
{% include '_requirements.j2' %}
|
||||||
|
|
||||||
{# Vars #}
|
{# Vars #}
|
||||||
|
{% if tabulate_vars %}
|
||||||
|
{% include '_vars_tabulated.j2' %}
|
||||||
|
{% else %}
|
||||||
{% include '_vars.j2' %}
|
{% include '_vars.j2' %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{# Tag #}
|
{# Tag #}
|
||||||
{% include '_tag.j2' %}
|
{% include '_tag.j2' %}
|
||||||
|
|
|
@ -4,10 +4,12 @@
|
||||||
{% set var = role.var | default({}) %}
|
{% set var = role.var | default({}) %}
|
||||||
{% if var %}
|
{% if var %}
|
||||||
- [Default Variables](#default-variables)
|
- [Default Variables](#default-variables)
|
||||||
|
{% if not tabulate_vars %}
|
||||||
{% for key, item in var | dictsort %}
|
{% for key, item in var | dictsort %}
|
||||||
- [{{ key }}](#{{ key }})
|
- [{{ key }}](#{{ key }})
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
{% if tag %}
|
{% if tag %}
|
||||||
- [Discovered Tags](#discovered-tags)
|
- [Discovered Tags](#discovered-tags)
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
36
ansibledoctor/templates/readme/_vars_tabulated.j2
Normal file
36
ansibledoctor/templates/readme/_vars_tabulated.j2
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
{% set var = role.var | default({}) %}
|
||||||
|
{% if var %}
|
||||||
|
## Default Variables
|
||||||
|
|
||||||
|
{% set columns = ["variable", "default", "description", "type", "deprecated", "example"] %}
|
||||||
|
{% set found_columns = ["variable", "default"] + var.values() | map("list") | sum(start=["key"]) | unique | list %}
|
||||||
|
{% for c in columns %}
|
||||||
|
{% if c in found_columns %}
|
||||||
|
| {{ c | capitalize }} {# trimnewline #}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
|
||||||
|
{% for c in columns %}
|
||||||
|
{% if c in found_columns %}
|
||||||
|
| {{ "-" * (c | length) }} {# trimnewline #}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
|
||||||
|
{% for key, item in var | dictsort %}
|
||||||
|
| {{ key }} {# trimnewline #}
|
||||||
|
| {{ (item.value | default({}))[key] | default }} {# trimnewline #}
|
||||||
|
{% if "description" in found_columns %}
|
||||||
|
| {{ item.description | default([]) | safe_join("<br>") | replace("\n", "<br>") | replace("|", "\|") }} {# trimnewline #}
|
||||||
|
{% endif %}
|
||||||
|
{% if "type" in found_columns %}
|
||||||
|
| {{ item.type | default([]) | join("<br>") }} {# trimnewline #}
|
||||||
|
{% endif %}
|
||||||
|
{% if "deprecated" in found_columns %}
|
||||||
|
| {{ item.deprecated | default }} {# trimnewline #}
|
||||||
|
{% endif %}
|
||||||
|
{% if "example" in found_columns %}
|
||||||
|
| {{ item.example | default([]) | safe_join("<br>") | replace("\n", "<br>") | replace("|", "\|") }} {# trimnewline #}
|
||||||
|
{% endif %}
|
||||||
|
|
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
|
@ -128,7 +128,7 @@ class LogFilter:
|
||||||
class MultilineFormatter(logging.Formatter):
|
class MultilineFormatter(logging.Formatter):
|
||||||
"""Reset color after newline characters."""
|
"""Reset color after newline characters."""
|
||||||
|
|
||||||
def format(self, record): # noqa
|
def format(self, record):
|
||||||
record.msg = record.msg.strip().replace("\n", f"\n{colorama.Style.RESET_ALL}... ")
|
record.msg = record.msg.strip().replace("\n", f"\n{colorama.Style.RESET_ALL}... ")
|
||||||
return logging.Formatter.format(self, record)
|
return logging.Formatter.format(self, record)
|
||||||
|
|
||||||
|
@ -136,7 +136,7 @@ class MultilineFormatter(logging.Formatter):
|
||||||
class MultilineJsonFormatter(jsonlogger.JsonFormatter):
|
class MultilineJsonFormatter(jsonlogger.JsonFormatter):
|
||||||
"""Remove newline characters."""
|
"""Remove newline characters."""
|
||||||
|
|
||||||
def format(self, record): # noqa
|
def format(self, record):
|
||||||
record.msg = record.msg.replace("\n", " ")
|
record.msg = record.msg.replace("\n", " ")
|
||||||
return jsonlogger.JsonFormatter.format(self, record)
|
return jsonlogger.JsonFormatter.format(self, record)
|
||||||
|
|
||||||
|
@ -287,7 +287,7 @@ class Log:
|
||||||
sys.exit(code)
|
sys.exit(code)
|
||||||
|
|
||||||
def sysexit_with_message(self, msg, code=1):
|
def sysexit_with_message(self, msg, code=1):
|
||||||
self.logger.critical(str(msg.strip()))
|
self.logger.critical(str(msg).strip())
|
||||||
self.sysexit(code)
|
self.sysexit(code)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,6 @@ from collections import defaultdict
|
||||||
from contextlib import suppress
|
from contextlib import suppress
|
||||||
|
|
||||||
import ruamel.yaml
|
import ruamel.yaml
|
||||||
import yaml
|
|
||||||
from ansible.parsing.yaml.loader import AnsibleLoader
|
from ansible.parsing.yaml.loader import AnsibleLoader
|
||||||
|
|
||||||
import ansibledoctor.exception
|
import ansibledoctor.exception
|
||||||
|
@ -28,10 +27,10 @@ def parse_yaml_ansible(yamlfile):
|
||||||
loader = AnsibleLoader(yamlfile)
|
loader = AnsibleLoader(yamlfile)
|
||||||
data = loader.get_single_data() or []
|
data = loader.get_single_data() or []
|
||||||
except (
|
except (
|
||||||
yaml.parser.ParserError,
|
ruamel.yaml.parser.ParserError,
|
||||||
yaml.scanner.ScannerError,
|
ruamel.yaml.scanner.ScannerError,
|
||||||
yaml.constructor.ConstructorError,
|
ruamel.yaml.constructor.ConstructorError,
|
||||||
yaml.composer.ComposerError,
|
ruamel.yaml.composer.ComposerError,
|
||||||
) as e:
|
) as e:
|
||||||
message = (
|
message = (
|
||||||
f"{e.context} in line {e.context_mark.line}, column {e.context_mark.line}\n"
|
f"{e.context} in line {e.context_mark.line}, column {e.context_mark.line}\n"
|
||||||
|
|
|
@ -4,11 +4,12 @@ title: Using pip
|
||||||
|
|
||||||
```Shell
|
```Shell
|
||||||
# From PyPI as unprivileged user
|
# From PyPI as unprivileged user
|
||||||
$ pip install ansible-doctor --user
|
$ pip install ansible-doctor[ansible-core] --user
|
||||||
|
|
||||||
# .. or as root
|
# .. or as root
|
||||||
$ sudo pip install ansible-doctor
|
$ sudo pip install ansible-doctor[ansible-core]
|
||||||
|
|
||||||
# From Wheel file
|
# From Wheel file
|
||||||
$ pip install https://github.com/thegeeklab/ansible-doctor/releases/download/v0.1.1/ansible_doctor-0.1.1-py2.py3-none-any.whl
|
# Please check first whether a newer version is available.
|
||||||
|
$ pip install https://github.com/thegeeklab/ansible-doctor/releases/download/v3.1.4/ansible_doctor-3.1.4-py2.py3-none-any.whl[ansible-core]
|
||||||
```
|
```
|
||||||
|
|
|
@ -44,6 +44,10 @@ template: readme
|
||||||
# with spaces does not work. If you want to use spaces to indent text, you must disable
|
# with spaces does not work. If you want to use spaces to indent text, you must disable
|
||||||
# this option.
|
# this option.
|
||||||
template_autotrim: True
|
template_autotrim: True
|
||||||
|
# Configures whether to tabulate variables in the output. When set to `True`,
|
||||||
|
# variables will be displayed in a tabular format intsead of plain marktdown sections.
|
||||||
|
# NOTE: This option does not support rendering multiline code blocks.
|
||||||
|
tabulate_variables: False
|
||||||
|
|
||||||
# Don't ask to overwrite if output file exists.
|
# Don't ask to overwrite if output file exists.
|
||||||
force_overwrite: False
|
force_overwrite: False
|
||||||
|
@ -103,6 +107,7 @@ ANSIBLE_DOCTOR_OUTPUT_DIR=
|
||||||
ANSIBLE_DOCTOR_TEMPLATE_DIR=
|
ANSIBLE_DOCTOR_TEMPLATE_DIR=
|
||||||
ANSIBLE_DOCTOR_TEMPLATE=readme
|
ANSIBLE_DOCTOR_TEMPLATE=readme
|
||||||
ANSIBLE_DOCTOR_TEMPLATE_AUTOTRIM=true
|
ANSIBLE_DOCTOR_TEMPLATE_AUTOTRIM=true
|
||||||
|
ANSIBLE_DOCTOR_TABULATE_VARIABLES=false
|
||||||
ANSIBLE_DOCTOR_FORCE_OVERWRITE=false
|
ANSIBLE_DOCTOR_FORCE_OVERWRITE=false
|
||||||
ANSIBLE_DOCTOR_CUSTOM_HEADER=
|
ANSIBLE_DOCTOR_CUSTOM_HEADER=
|
||||||
ANSIBLE_DOCTOR_EXCLUDE_FILES=
|
ANSIBLE_DOCTOR_EXCLUDE_FILES=
|
||||||
|
@ -119,8 +124,8 @@ To use _ansible-doctor_ with the [pre-commit](https://pre-commit.com/) framework
|
||||||
|
|
||||||
{{< highlight yaml "linenos=table" >}}
|
{{< highlight yaml "linenos=table" >}}
|
||||||
- repo: https://github.com/thegeeklab/ansible-doctor
|
- repo: https://github.com/thegeeklab/ansible-doctor
|
||||||
# change ref to the latest release from https://github.com/thegeeklab/ansible-doctor/releases
|
# update version with `pre-commit autoupdate`
|
||||||
rev: v1.4.8
|
rev: v4.0.4
|
||||||
hooks:
|
hooks:
|
||||||
- id: ansible-doctor
|
- id: ansible-doctor
|
||||||
{{< /highlight >}}
|
{{< /highlight >}}
|
||||||
|
|
|
@ -18,6 +18,5 @@ galaxy_info:
|
||||||
- documentation
|
- documentation
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- role1
|
|
||||||
- role: role2
|
- role: role2
|
||||||
- name: namespace.role3
|
- name: namespace.role3
|
||||||
|
|
781
poetry.lock
generated
781
poetry.lock
generated
File diff suppressed because it is too large
Load Diff
113
pyproject.toml
113
pyproject.toml
|
@ -10,7 +10,6 @@ classifiers = [
|
||||||
"Natural Language :: English",
|
"Natural Language :: English",
|
||||||
"Operating System :: POSIX",
|
"Operating System :: POSIX",
|
||||||
"Programming Language :: Python :: 3",
|
"Programming Language :: Python :: 3",
|
||||||
"Programming Language :: Python :: 3.8",
|
|
||||||
"Programming Language :: Python :: 3.9",
|
"Programming Language :: Python :: 3.9",
|
||||||
"Programming Language :: Python :: 3.10",
|
"Programming Language :: Python :: 3.10",
|
||||||
"Programming Language :: Python :: 3.11",
|
"Programming Language :: Python :: 3.11",
|
||||||
|
@ -22,40 +21,39 @@ classifiers = [
|
||||||
description = "Generate documentation from annotated Ansible roles using templates."
|
description = "Generate documentation from annotated Ansible roles using templates."
|
||||||
documentation = "https://ansible-doctor.geekdocs.de/"
|
documentation = "https://ansible-doctor.geekdocs.de/"
|
||||||
homepage = "https://ansible-doctor.geekdocs.de/"
|
homepage = "https://ansible-doctor.geekdocs.de/"
|
||||||
include = [
|
include = ["LICENSE"]
|
||||||
"LICENSE",
|
|
||||||
]
|
|
||||||
keywords = ["ansible", "role", "documentation"]
|
keywords = ["ansible", "role", "documentation"]
|
||||||
license = "GPL-3.0-only"
|
license = "GPL-3.0-only"
|
||||||
name = "ansible-doctor"
|
name = "ansible-doctor"
|
||||||
packages = [
|
packages = [{ include = "ansibledoctor" }]
|
||||||
{include = "ansibledoctor"},
|
|
||||||
]
|
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
repository = "https://github.com/thegeeklab/ansible-doctor/"
|
repository = "https://github.com/thegeeklab/ansible-doctor/"
|
||||||
version = "0.0.0"
|
version = "0.0.0"
|
||||||
|
|
||||||
[tool.poetry.dependencies]
|
[tool.poetry.dependencies]
|
||||||
Jinja2 = "3.1.2"
|
Jinja2 = "3.1.4"
|
||||||
anyconfig = "0.13.0"
|
anyconfig = "0.14.0"
|
||||||
appdirs = "1.4.4"
|
appdirs = "1.4.4"
|
||||||
colorama = "0.4.6"
|
colorama = "0.4.6"
|
||||||
environs = "9.5.0"
|
environs = "11.0.0"
|
||||||
jsonschema = "4.20.0"
|
jsonschema = "4.22.0"
|
||||||
pathspec = "0.11.2"
|
pathspec = "0.12.1"
|
||||||
python = "^3.8.0"
|
python = "^3.9.0"
|
||||||
python-json-logger = "2.0.7"
|
python-json-logger = "2.0.7"
|
||||||
"ruamel.yaml" = "0.18.5"
|
"ruamel.yaml" = "0.18.6"
|
||||||
ansible-core = "2.13"
|
ansible-core = { version = "2.14.17", optional = true }
|
||||||
|
|
||||||
|
[tool.poetry.extras]
|
||||||
|
ansible-core = ["ansible-core"]
|
||||||
|
|
||||||
[tool.poetry.scripts]
|
[tool.poetry.scripts]
|
||||||
ansible-doctor = "ansibledoctor.cli:main"
|
ansible-doctor = "ansibledoctor.cli:main"
|
||||||
|
|
||||||
[tool.poetry.group.dev.dependencies]
|
[tool.poetry.group.dev.dependencies]
|
||||||
ruff = "0.1.6"
|
ruff = "0.4.5"
|
||||||
pytest = "7.4.3"
|
pytest = "8.2.1"
|
||||||
pytest-mock = "3.12.0"
|
pytest-mock = "3.14.0"
|
||||||
pytest-cov = "4.1.0"
|
pytest-cov = "5.0.0"
|
||||||
toml = "0.10.2"
|
toml = "0.10.2"
|
||||||
|
|
||||||
[tool.poetry-dynamic-versioning]
|
[tool.poetry-dynamic-versioning]
|
||||||
|
@ -80,21 +78,22 @@ requires = ["poetry-core>=1.0.0", "poetry-dynamic-versioning"]
|
||||||
|
|
||||||
[tool.ruff]
|
[tool.ruff]
|
||||||
exclude = [
|
exclude = [
|
||||||
".git",
|
".git",
|
||||||
"__pycache__",
|
"__pycache__",
|
||||||
"build",
|
"build",
|
||||||
"dist",
|
"dist",
|
||||||
"test",
|
"test",
|
||||||
"*.pyc",
|
"*.pyc",
|
||||||
"*.egg-info",
|
"*.egg-info",
|
||||||
".cache",
|
".cache",
|
||||||
".eggs",
|
".eggs",
|
||||||
"env*",
|
"env*",
|
||||||
]
|
]
|
||||||
|
|
||||||
line-length = 99
|
line-length = 99
|
||||||
indent-width = 4
|
indent-width = 4
|
||||||
|
|
||||||
|
[tool.ruff.lint]
|
||||||
# Explanation of errors
|
# Explanation of errors
|
||||||
#
|
#
|
||||||
# D102: Missing docstring in public method
|
# D102: Missing docstring in public method
|
||||||
|
@ -105,36 +104,36 @@ indent-width = 4
|
||||||
# D203: One blank line required before class docstring
|
# D203: One blank line required before class docstring
|
||||||
# D212: Multi-line docstring summary should start at the first line
|
# D212: Multi-line docstring summary should start at the first line
|
||||||
ignore = [
|
ignore = [
|
||||||
"D102",
|
"D102",
|
||||||
"D103",
|
"D103",
|
||||||
"D105",
|
"D105",
|
||||||
"D107",
|
"D107",
|
||||||
"D202",
|
"D202",
|
||||||
"D203",
|
"D203",
|
||||||
"D212",
|
"D212",
|
||||||
"UP038",
|
"UP038",
|
||||||
"RUF012",
|
"RUF012",
|
||||||
]
|
]
|
||||||
select = [
|
select = [
|
||||||
"D",
|
"D",
|
||||||
"E",
|
"E",
|
||||||
"F",
|
"F",
|
||||||
"Q",
|
"Q",
|
||||||
"W",
|
"W",
|
||||||
"I",
|
"I",
|
||||||
"S",
|
"S",
|
||||||
"BLE",
|
"BLE",
|
||||||
"N",
|
"N",
|
||||||
"UP",
|
"UP",
|
||||||
"B",
|
"B",
|
||||||
"A",
|
"A",
|
||||||
"C4",
|
"C4",
|
||||||
"T20",
|
"T20",
|
||||||
"SIM",
|
"SIM",
|
||||||
"RET",
|
"RET",
|
||||||
"ARG",
|
"ARG",
|
||||||
"ERA",
|
"ERA",
|
||||||
"RUF",
|
"RUF",
|
||||||
]
|
]
|
||||||
|
|
||||||
[tool.ruff.format]
|
[tool.ruff.format]
|
||||||
|
|
|
@ -1,4 +1,17 @@
|
||||||
{
|
{
|
||||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||||
"extends": ["github>thegeeklab/renovate-presets"]
|
"extends": ["github>thegeeklab/renovate-presets"],
|
||||||
|
"packageRules": [
|
||||||
|
{
|
||||||
|
"description": "Ansible base dependencies",
|
||||||
|
"matchPackageNames": ["ansible-core"],
|
||||||
|
"separateMinorPatch": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"matchManagers": ["woodpecker"],
|
||||||
|
"matchFileNames": [".woodpecker/test.yml"],
|
||||||
|
"matchPackageNames": ["docker.io/library/python"],
|
||||||
|
"enabled": false
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user