task2md 1.1.2__tar.gz → 1.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {task2md-1.1.2 → task2md-1.2.0}/.gitignore +4 -1
- task2md-1.2.0/.gitlab-ci.yml +105 -0
- task2md-1.2.0/.gitleaks.toml +4 -0
- {task2md-1.1.2 → task2md-1.2.0}/.pre-commit-config.yaml +5 -4
- task2md-1.2.0/.python-version +1 -0
- {task2md-1.1.2 → task2md-1.2.0}/PKG-INFO +9 -9
- {task2md-1.1.2 → task2md-1.2.0}/README.md +2 -2
- task2md-1.2.0/Taskfile.project.yml +108 -0
- {task2md-1.1.2 → task2md-1.2.0}/Taskfile.yml +14 -12
- {task2md-1.1.2 → task2md-1.2.0}/docs/cli.md +1 -1
- {task2md-1.1.2 → task2md-1.2.0}/docs/index.md +1 -1
- {task2md-1.1.2 → task2md-1.2.0}/mkdocs.yml +4 -0
- task2md-1.2.0/pyproject.toml +97 -0
- task2md-1.2.0/renovate.json +43 -0
- task2md-1.2.0/src/task2md/task2md.py +148 -0
- {task2md-1.1.2 → task2md-1.2.0}/src/task2md/template/file.py +81 -64
- {task2md-1.1.2 → task2md-1.2.0}/src/task2md/template/header.py +10 -16
- {task2md-1.1.2 → task2md-1.2.0}/src/task2md/template/index.py +5 -12
- {task2md-1.1.2 → task2md-1.2.0}/src/task2md/template/task.py +56 -46
- {task2md-1.1.2 → task2md-1.2.0}/src/task2md/template/variable.py +3 -14
- task2md-1.2.0/src/task2md/util/dir.py +30 -0
- {task2md-1.1.2/tests/task → task2md-1.2.0/tests/template}/test_file.py +62 -2
- {task2md-1.1.2/tests/task → task2md-1.2.0/tests/template}/test_header.py +3 -6
- {task2md-1.1.2/tests/task → task2md-1.2.0/tests/template}/test_index.py +0 -2
- {task2md-1.1.2/tests/task → task2md-1.2.0/tests/template}/test_task.py +18 -3
- {task2md-1.1.2/tests/task → task2md-1.2.0/tests/template}/test_variable.py +0 -2
- {task2md-1.1.2 → task2md-1.2.0}/tests/test_dir.py +71 -15
- {task2md-1.1.2 → task2md-1.2.0}/tests/test_file.py +19 -13
- {task2md-1.1.2 → task2md-1.2.0}/tests/test_task2md.py +0 -2
- task2md-1.2.0/tests/util/__init__.py +0 -0
- {task2md-1.1.2 → task2md-1.2.0}/tests/util/test_dir.py +5 -8
- task2md-1.2.0/uv.lock +871 -0
- task2md-1.1.2/.gitlab-ci.yml +0 -35
- task2md-1.1.2/.python-version +0 -1
- task2md-1.1.2/.vale.ini +0 -8
- task2md-1.1.2/Taskfile.project.yml +0 -52
- task2md-1.1.2/pyproject.toml +0 -76
- task2md-1.1.2/requirements-dev.lock +0 -138
- task2md-1.1.2/requirements.lock +0 -25
- task2md-1.1.2/src/task2md/task2md.py +0 -134
- task2md-1.1.2/src/task2md/util/dir.py +0 -37
- {task2md-1.1.2 → task2md-1.2.0}/.markdownlint.yaml +0 -0
- {task2md-1.1.2 → task2md-1.2.0}/.releaserc +0 -0
- {task2md-1.1.2 → task2md-1.2.0}/.yamllint +0 -0
- {task2md-1.1.2 → task2md-1.2.0}/LICENSE +0 -0
- {task2md-1.1.2 → task2md-1.2.0}/docs/task2md.md +0 -0
- {task2md-1.1.2/docs/task → task2md-1.2.0/docs/template}/file.md +0 -0
- {task2md-1.1.2/docs/task → task2md-1.2.0/docs/template}/header.md +0 -0
- {task2md-1.1.2/docs/task → task2md-1.2.0/docs/template}/index.md +0 -0
- {task2md-1.1.2/docs/task → task2md-1.2.0/docs/template}/task.md +0 -0
- {task2md-1.1.2/docs/task → task2md-1.2.0/docs/template}/variable.md +0 -0
- {task2md-1.1.2 → task2md-1.2.0}/docs/util/dir.md +0 -0
- {task2md-1.1.2 → task2md-1.2.0}/lychee.toml +0 -0
- {task2md-1.1.2 → task2md-1.2.0}/src/task2md/__init__.py +0 -0
- {task2md-1.1.2 → task2md-1.2.0}/src/task2md/template/__init__.py +0 -0
- {task2md-1.1.2 → task2md-1.2.0}/src/task2md/util/__init__.py +0 -0
- {task2md-1.1.2 → task2md-1.2.0}/tests/__init__.py +0 -0
- {task2md-1.1.2 → task2md-1.2.0}/tests/files/empty.yml +0 -0
- {task2md-1.1.2 → task2md-1.2.0}/tests/files/lint.yml +0 -0
- {task2md-1.1.2/tests/task → task2md-1.2.0/tests/template}/__init__.py +0 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
workflow:
|
|
3
|
+
rules:
|
|
4
|
+
- if: $CI_PIPELINE_SOURCE == "schedule"
|
|
5
|
+
- if: $CI_PIPELINE_SOURCE == "web"
|
|
6
|
+
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
|
7
|
+
- if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
|
|
8
|
+
when: never
|
|
9
|
+
- if: $CI_COMMIT_TAG
|
|
10
|
+
- if: $CI_COMMIT_BRANCH
|
|
11
|
+
|
|
12
|
+
variables:
|
|
13
|
+
IMAGE_UV: ghcr.io/astral-sh/uv:python${PYTHON_VERSION}-trixie-slim
|
|
14
|
+
PYTHON_VERSION: "3.14"
|
|
15
|
+
|
|
16
|
+
include:
|
|
17
|
+
- component: gitlab.com/op_so/components/core/lint@v2.0.1
|
|
18
|
+
inputs:
|
|
19
|
+
lint_vale: true
|
|
20
|
+
lint_markdown_glob: '"**/*.md" "#docs"'
|
|
21
|
+
- component: gitlab.com/op_so/components/python-uv/prepare-uv@v1.3.0
|
|
22
|
+
inputs:
|
|
23
|
+
prepare_uv_python_version: "3.14"
|
|
24
|
+
- component: gitlab.com/op_so/components/python-uv/lint-uv@v1.3.0
|
|
25
|
+
inputs:
|
|
26
|
+
lint_uv_python_version: "3.14"
|
|
27
|
+
lint_uv_isort: true
|
|
28
|
+
lint_uv_mypy: true
|
|
29
|
+
lint_uv_mypy_args: "--strict src/ tests/"
|
|
30
|
+
lint_uv_pyrefly: true
|
|
31
|
+
# Coverage is on by default and reads `[tool.coverage.run] source` from
|
|
32
|
+
# pyproject.toml, since the component passes `--cov` without an argument.
|
|
33
|
+
- component: gitlab.com/op_so/components/python-uv/test-uv@v1.3.0
|
|
34
|
+
inputs:
|
|
35
|
+
test_uv_python_version: "3.14"
|
|
36
|
+
- component: gitlab.com/op_so/components/core/semantic-release@v2.0.1
|
|
37
|
+
# Only runs on a scheduled pipeline setting RENOVATE=true, and needs a
|
|
38
|
+
# RENOVATE_TOKEN CI/CD variable.
|
|
39
|
+
- component: gitlab.com/op_so/components/core/renovate@v2.0.1
|
|
40
|
+
- component: gitlab.com/op_so/components/python-uv/publish-pypi-uv@v1.3.0
|
|
41
|
+
inputs:
|
|
42
|
+
publish_pypi_uv_python_version: "3.14"
|
|
43
|
+
publish_pypi_uv_stage: pypi-release
|
|
44
|
+
|
|
45
|
+
stages:
|
|
46
|
+
- prepare-uv
|
|
47
|
+
- lint
|
|
48
|
+
- tests
|
|
49
|
+
- release
|
|
50
|
+
- pypi-release
|
|
51
|
+
- pages-release
|
|
52
|
+
- renovate
|
|
53
|
+
|
|
54
|
+
.install-task: &install-task
|
|
55
|
+
- apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends curl ca-certificates
|
|
56
|
+
- sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b /usr/local/bin
|
|
57
|
+
|
|
58
|
+
# The cache block must stay identical to the one used by the python-uv
|
|
59
|
+
# components: they share a single key and any divergence silently splits it.
|
|
60
|
+
.abstract-uv:
|
|
61
|
+
image: $IMAGE_UV
|
|
62
|
+
needs: ["prepare-uv:sync"]
|
|
63
|
+
variables:
|
|
64
|
+
UV_CACHE_DIR: .uv-cache
|
|
65
|
+
cache:
|
|
66
|
+
key:
|
|
67
|
+
files:
|
|
68
|
+
- uv.lock
|
|
69
|
+
prefix: prepare-uv-${CI_DEFAULT_BRANCH}
|
|
70
|
+
paths:
|
|
71
|
+
- .uv-cache
|
|
72
|
+
- .venv
|
|
73
|
+
policy: pull
|
|
74
|
+
interruptible: true
|
|
75
|
+
|
|
76
|
+
semantic-release:
|
|
77
|
+
before_script:
|
|
78
|
+
- npx semantic-release --dry-run --no-ci
|
|
79
|
+
- if [ -s .VERSION ]; then task 00:800-project-set-version VERSION=$(cat .VERSION); fi
|
|
80
|
+
|
|
81
|
+
# The component runs `uv sync --frozen && uv build && uv publish` without
|
|
82
|
+
# substituting the version: without this before_script it would publish 0.0.0.
|
|
83
|
+
publish-pypi-uv:
|
|
84
|
+
before_script:
|
|
85
|
+
- *install-task
|
|
86
|
+
- task 00:800-project-set-version VERSION="${CI_COMMIT_TAG#v}"
|
|
87
|
+
|
|
88
|
+
# Replaces the `pages` job formerly provided by the python.rye-publish template;
|
|
89
|
+
# no python-uv component covers it.
|
|
90
|
+
pages:
|
|
91
|
+
extends: .abstract-uv
|
|
92
|
+
stage: pages-release
|
|
93
|
+
before_script:
|
|
94
|
+
- *install-task
|
|
95
|
+
- uv sync --frozen
|
|
96
|
+
- task 00:800-project-set-version VERSION="${CI_COMMIT_TAG#v}"
|
|
97
|
+
script:
|
|
98
|
+
- uv run mkdocs build --site-dir public
|
|
99
|
+
artifacts:
|
|
100
|
+
paths:
|
|
101
|
+
- public
|
|
102
|
+
rules:
|
|
103
|
+
- if: $DISABLE_JOBS == "true"
|
|
104
|
+
when: never
|
|
105
|
+
- if: $CI_COMMIT_TAG
|
|
@@ -3,11 +3,7 @@ repos:
|
|
|
3
3
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
4
4
|
rev: v4.5.0
|
|
5
5
|
hooks:
|
|
6
|
-
- id: trailing-whitespace
|
|
7
|
-
- id: end-of-file-fixer
|
|
8
|
-
- id: check-yaml
|
|
9
6
|
- id: check-added-large-files
|
|
10
|
-
# Hooks added from sample-config
|
|
11
7
|
- id: check-executables-have-shebangs
|
|
12
8
|
- id: check-json
|
|
13
9
|
- id: check-merge-conflict
|
|
@@ -15,9 +11,14 @@ repos:
|
|
|
15
11
|
- id: check-symlinks
|
|
16
12
|
- id: check-toml
|
|
17
13
|
- id: check-xml
|
|
14
|
+
- id: check-yaml
|
|
18
15
|
- id: detect-private-key
|
|
19
16
|
- id: end-of-file-fixer
|
|
20
17
|
- id: fix-byte-order-marker
|
|
21
18
|
- id: mixed-line-ending
|
|
22
19
|
- id: trailing-whitespace
|
|
23
20
|
args: [--markdown-linebreak-ext=md]
|
|
21
|
+
- repo: https://github.com/gitleaks/gitleaks
|
|
22
|
+
rev: v8.30.1
|
|
23
|
+
hooks:
|
|
24
|
+
- id: gitleaks
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.14
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: task2md
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.2.0
|
|
4
4
|
Summary: A program to generate markdown documentation files from Task files
|
|
5
5
|
Project-URL: Homepage, https://gitlab.com/op_so/task/task2md
|
|
6
6
|
Project-URL: Documentation, https://op_so.gitlab.io/task/task2md/
|
|
@@ -10,18 +10,18 @@ License-File: LICENSE
|
|
|
10
10
|
Classifier: License :: OSI Approved :: MIT License
|
|
11
11
|
Classifier: Operating System :: OS Independent
|
|
12
12
|
Classifier: Programming Language :: Python :: 3
|
|
13
|
-
|
|
14
|
-
Requires-
|
|
15
|
-
Requires-Dist:
|
|
16
|
-
Requires-Dist:
|
|
17
|
-
Requires-Dist:
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
14
|
+
Requires-Python: >=3.14
|
|
15
|
+
Requires-Dist: click>=8.4.2
|
|
16
|
+
Requires-Dist: pydantic>=2.13.4
|
|
17
|
+
Requires-Dist: pyyaml>=6.0.3
|
|
18
18
|
Description-Content-Type: text/markdown
|
|
19
19
|
|
|
20
20
|
# `task2md`
|
|
21
21
|
|
|
22
22
|
[](LICENSE)
|
|
23
23
|
[](https://github.com/semantic-release/semantic-release)
|
|
24
|
-
[](https://gitlab.com/op_so/task/task2md/pipelines)
|
|
25
25
|
|
|
26
26
|
[](https://op_so.gitlab.io/task/task2md/) Source code documentation
|
|
27
27
|
|
|
@@ -99,7 +99,7 @@ task2md file --input Taskfile.d/lint.yml -d doc_dir/
|
|
|
99
99
|
|
|
100
100
|
To use:
|
|
101
101
|
|
|
102
|
-
- Minimal Python version: 3.
|
|
102
|
+
- Minimal Python version: 3.14
|
|
103
103
|
|
|
104
104
|
Installation with Python `pip`:
|
|
105
105
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](LICENSE)
|
|
4
4
|
[](https://github.com/semantic-release/semantic-release)
|
|
5
|
-
[](https://gitlab.com/op_so/task/task2md/pipelines)
|
|
6
6
|
|
|
7
7
|
[](https://op_so.gitlab.io/task/task2md/) Source code documentation
|
|
8
8
|
|
|
@@ -80,7 +80,7 @@ task2md file --input Taskfile.d/lint.yml -d doc_dir/
|
|
|
80
80
|
|
|
81
81
|
To use:
|
|
82
82
|
|
|
83
|
-
- Minimal Python version: 3.
|
|
83
|
+
- Minimal Python version: 3.14
|
|
84
84
|
|
|
85
85
|
Installation with Python `pip`:
|
|
86
86
|
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
---
|
|
2
|
+
# https://taskfile.dev
|
|
3
|
+
#
|
|
4
|
+
# Taskfile.project.yml for your main project tasks. Must be commited.
|
|
5
|
+
# If you always want the last version of the task templates, add the following line in your .gitignore file
|
|
6
|
+
# /Taskfile.d/
|
|
7
|
+
#
|
|
8
|
+
version: '3'
|
|
9
|
+
|
|
10
|
+
vars:
|
|
11
|
+
# TO MODIFY: Task templates to download separated by comma
|
|
12
|
+
# Example: TASK_TEMPLATES: go,lint,yarn
|
|
13
|
+
TASK_TEMPLATES: git,lint
|
|
14
|
+
|
|
15
|
+
tasks:
|
|
16
|
+
|
|
17
|
+
00-get-list-templates:
|
|
18
|
+
# Get the list of templates to download
|
|
19
|
+
# Do not remove
|
|
20
|
+
cmds:
|
|
21
|
+
- echo "{{.TASK_TEMPLATES}}"
|
|
22
|
+
silent: true
|
|
23
|
+
|
|
24
|
+
050-upgrade-dependencies:
|
|
25
|
+
desc: "[PROJECT] Upgrade dependencies to the latest version."
|
|
26
|
+
cmds:
|
|
27
|
+
- uv sync --upgrade
|
|
28
|
+
silent: true
|
|
29
|
+
|
|
30
|
+
110-format:
|
|
31
|
+
desc: "[PROJECT] Python format with isort and Ruff."
|
|
32
|
+
cmds:
|
|
33
|
+
- uv run isort . --gitignore
|
|
34
|
+
- uv run ruff check --fix
|
|
35
|
+
- uv run ruff format
|
|
36
|
+
silent: true
|
|
37
|
+
|
|
38
|
+
120-lint:
|
|
39
|
+
desc: "[PROJECT] Python lint with Ruff."
|
|
40
|
+
cmds:
|
|
41
|
+
- uv run ruff check
|
|
42
|
+
- uv run ruff format --check
|
|
43
|
+
silent: true
|
|
44
|
+
|
|
45
|
+
130-type-check:
|
|
46
|
+
desc: "[PROJECT] Static typing for Python."
|
|
47
|
+
cmds:
|
|
48
|
+
- echo "mypy" && echo "===="
|
|
49
|
+
- uv run mypy --strict src/ tests/
|
|
50
|
+
- echo "" && echo "pyrefly" && echo "======="
|
|
51
|
+
- uv run pyrefly check --summarize-errors
|
|
52
|
+
silent: true
|
|
53
|
+
|
|
54
|
+
140-audit-deps:
|
|
55
|
+
desc: "[PROJECT] Audit Python dependencies for known CVEs (PyPA advisory DB)."
|
|
56
|
+
cmds:
|
|
57
|
+
- uv run --with pip-audit pip-audit --desc
|
|
58
|
+
|
|
59
|
+
220-run-tests:
|
|
60
|
+
desc: "[PROJECT] Run Pytest tests with coverage."
|
|
61
|
+
cmds:
|
|
62
|
+
- uv run pytest --cov --cov-report html:reports/cov --cov-report term
|
|
63
|
+
silent: true
|
|
64
|
+
|
|
65
|
+
300-doc-serve:
|
|
66
|
+
desc: "[PROJECT] Serve the mkdocs documentation site locally on port 8000."
|
|
67
|
+
cmds:
|
|
68
|
+
- uv run mkdocs serve
|
|
69
|
+
silent: true
|
|
70
|
+
|
|
71
|
+
800-project-set-version:
|
|
72
|
+
desc: "[PROJECT] Set version in different files. Arguments: VERSION|V=x.y.z"
|
|
73
|
+
vars:
|
|
74
|
+
PY_FILE_VERSION: src/task2md/task2md.py
|
|
75
|
+
MD_FILE_VERSION: docs/index.md
|
|
76
|
+
VERSION: '{{default .V .VERSION}}'
|
|
77
|
+
cmds:
|
|
78
|
+
- echo "Version {{.VERSION}}"
|
|
79
|
+
- sed -i.bu "s/0\.0\.0/{{.VERSION}}/g" pyproject.toml
|
|
80
|
+
- defer: rm -f pyproject.toml.bu
|
|
81
|
+
- sed -i.bu "s/0\.0\.0/{{.VERSION}}/g" {{.PY_FILE_VERSION}}
|
|
82
|
+
- defer: rm -f {{.PY_FILE_VERSION}}.bu
|
|
83
|
+
- sed -i.bu "s/0\.0\.0/{{.VERSION}}/g" {{.MD_FILE_VERSION}}
|
|
84
|
+
- defer: rm -f {{.MD_FILE_VERSION}}.bu
|
|
85
|
+
preconditions:
|
|
86
|
+
- sh: test -n "{{.VERSION}}"
|
|
87
|
+
msg: "VERSION|V argument is required"
|
|
88
|
+
silent: true
|
|
89
|
+
|
|
90
|
+
999-pre-commit:
|
|
91
|
+
desc: "[PROJECT] Pre-commit checks."
|
|
92
|
+
cmds:
|
|
93
|
+
- date > {{.FILE_TASK_START}}
|
|
94
|
+
- defer: rm -f {{.FILE_TASK_START}}
|
|
95
|
+
- task lint:pre-commit
|
|
96
|
+
- echo "" && echo "Markdown:" && echo "========="
|
|
97
|
+
- task lint:markdown GLOB='"**/*.md" "#.cache" "#.superpowers" "#.venv" "#docs" "#Taskfile.d" "#styles"'
|
|
98
|
+
- echo "" && echo "YAML:" && echo "====="
|
|
99
|
+
- task lint:yaml
|
|
100
|
+
- echo "" && echo "Lychee:" && echo "======="
|
|
101
|
+
- task lint:lychee
|
|
102
|
+
- echo "" && echo "Python:" && echo "======="
|
|
103
|
+
- task 00:120-lint
|
|
104
|
+
- task 00:130-type-check
|
|
105
|
+
- echo "" && echo "Tokei:" && echo "====="
|
|
106
|
+
- task lint:tokei
|
|
107
|
+
- echo "" && echo "Checks Start $(cat {{.FILE_TASK_START}}) - End $(date)"
|
|
108
|
+
silent: true
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
#
|
|
6
6
|
version: '3'
|
|
7
7
|
|
|
8
|
+
dotenv: ['.env']
|
|
9
|
+
|
|
8
10
|
vars:
|
|
9
11
|
DIR_TASKFILES: Taskfile.d
|
|
10
12
|
FILE_TASK_START: "task-start-{{.TASK}}.txt"
|
|
@@ -39,13 +41,13 @@ tasks:
|
|
|
39
41
|
Requirements:
|
|
40
42
|
- wget or curl
|
|
41
43
|
vars:
|
|
42
|
-
PROXY: '{{default .P
|
|
43
|
-
D_PROXY: '{{default .TASK_PROXY
|
|
44
|
-
PROXY_CREDENTIALS: '{{default .PC
|
|
44
|
+
PROXY: '{{.PROXY | default .P}}'
|
|
45
|
+
D_PROXY: '{{.PROXY | default .TASK_PROXY}}'
|
|
46
|
+
PROXY_CREDENTIALS: '{{.PROXY_CREDENTIALS | default .PC}}'
|
|
45
47
|
TASK_TEMPLATES:
|
|
46
48
|
sh: task 00:00-get-list-templates
|
|
47
|
-
FILE: '{{default .F
|
|
48
|
-
D_FILE: '{{default "Taskfile.yml"
|
|
49
|
+
FILE: '{{.FILE | default .F}}'
|
|
50
|
+
D_FILE: '{{.FILE | default "Taskfile.yml"}}'
|
|
49
51
|
BEGIN: " # BEGIN-INCLUDES-TEMPLATES"
|
|
50
52
|
PATTERN_BEGIN: "^{{.BEGIN}}"
|
|
51
53
|
END: "# END-INCLUDES-TEMPLATES"
|
|
@@ -92,18 +94,18 @@ tasks:
|
|
|
92
94
|
silent: true
|
|
93
95
|
|
|
94
96
|
usage:
|
|
95
|
-
desc: "[CORE] Show the usage of a task. Arguments: TSK|T=task-name [FILE|F=Taskfile.
|
|
97
|
+
desc: "[CORE] Show the usage of a task. Arguments: TSK|T=task-name [FILE|F=Taskfile.yml] (*)"
|
|
96
98
|
summary: |
|
|
97
99
|
[CORE] Show the usage of a task.
|
|
98
|
-
Usage: task [-t Taskfile.
|
|
100
|
+
Usage: task [-t Taskfile.yml] usage TSK|T=<task-name> [FILE|F=Taskfile.yml]
|
|
99
101
|
|
|
100
102
|
Arguments:
|
|
101
103
|
TSK | T Name of the task (required)
|
|
102
104
|
FILE | F Taskfile path (optional, by default Taskfile.yml)
|
|
103
105
|
vars:
|
|
104
|
-
TSK: '{{default .T
|
|
105
|
-
FILE: '{{default .F
|
|
106
|
-
D_FILE: '{{default "Taskfile.yml"
|
|
106
|
+
TSK: '{{.TSK | default .T}}'
|
|
107
|
+
FILE: '{{.FILE | default .F}}'
|
|
108
|
+
D_FILE: '{{.FILE | default "Taskfile.yml"}}'
|
|
107
109
|
cmds:
|
|
108
110
|
- |
|
|
109
111
|
if [ ! -f "{{.D_FILE}}" ]; then
|
|
@@ -125,8 +127,8 @@ tasks:
|
|
|
125
127
|
Arguments:
|
|
126
128
|
FILE | F Taskfile project path (optional, by default Taskfile.project.yml)
|
|
127
129
|
vars:
|
|
128
|
-
FILE: '{{default .F
|
|
129
|
-
D_FILE: '{{default "Taskfile.project.yml"
|
|
130
|
+
FILE: '{{.FILE | default .F}}'
|
|
131
|
+
D_FILE: '{{.FILE | default "Taskfile.project.yml"}}'
|
|
130
132
|
cmds:
|
|
131
133
|
- |
|
|
132
134
|
if [ -d "{{.DIR_TASKFILES}}" ]; then
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "task2md"
|
|
3
|
+
version = "1.2.0"
|
|
4
|
+
description = "A program to generate markdown documentation files from Task files"
|
|
5
|
+
authors = [
|
|
6
|
+
{ name = "FX Soubirou", email = "soubirou@yahoo.fr" }
|
|
7
|
+
]
|
|
8
|
+
license = { text = "MIT" }
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
classifiers = [
|
|
11
|
+
"Programming Language :: Python :: 3",
|
|
12
|
+
"Programming Language :: Python :: 3.14",
|
|
13
|
+
"License :: OSI Approved :: MIT License",
|
|
14
|
+
"Operating System :: OS Independent",
|
|
15
|
+
]
|
|
16
|
+
dependencies = [
|
|
17
|
+
"click>=8.4.2",
|
|
18
|
+
"pydantic>=2.13.4",
|
|
19
|
+
"PyYAML>=6.0.3",
|
|
20
|
+
]
|
|
21
|
+
requires-python = ">=3.14"
|
|
22
|
+
|
|
23
|
+
[project.urls]
|
|
24
|
+
Homepage = "https://gitlab.com/op_so/task/task2md"
|
|
25
|
+
Documentation = "https://op_so.gitlab.io/task/task2md/"
|
|
26
|
+
|
|
27
|
+
[project.scripts]
|
|
28
|
+
task2md = "task2md.task2md:cli"
|
|
29
|
+
|
|
30
|
+
[build-system]
|
|
31
|
+
requires = ["hatchling"]
|
|
32
|
+
build-backend = "hatchling.build"
|
|
33
|
+
|
|
34
|
+
[dependency-groups]
|
|
35
|
+
dev = [
|
|
36
|
+
"isort>=8.0.1",
|
|
37
|
+
"mkdocs-click>=0.9.0",
|
|
38
|
+
"mkdocs-material>=9.7.7",
|
|
39
|
+
"mkdocstrings[python]>=1.0.6",
|
|
40
|
+
"mypy>=2.3.0",
|
|
41
|
+
"pyrefly>=1.1.1",
|
|
42
|
+
"pytest>=9.1.1",
|
|
43
|
+
"pytest-cov>=7.1.0",
|
|
44
|
+
"ruff>=0.16.0",
|
|
45
|
+
"types-PyYAML>=6.0.12.20260724",
|
|
46
|
+
]
|
|
47
|
+
|
|
48
|
+
[tool.hatch.metadata]
|
|
49
|
+
allow-direct-references = true
|
|
50
|
+
|
|
51
|
+
[tool.hatch.build.targets.wheel]
|
|
52
|
+
packages = ["src/task2md"]
|
|
53
|
+
|
|
54
|
+
[tool.coverage.report]
|
|
55
|
+
show_missing = true
|
|
56
|
+
|
|
57
|
+
[tool.coverage.run]
|
|
58
|
+
source = ["src"]
|
|
59
|
+
|
|
60
|
+
[tool.isort]
|
|
61
|
+
profile = "black"
|
|
62
|
+
|
|
63
|
+
[tool.mypy]
|
|
64
|
+
mypy_path = "src"
|
|
65
|
+
strict = true
|
|
66
|
+
|
|
67
|
+
[tool.pyrefly]
|
|
68
|
+
project-includes = ["src", "tests"]
|
|
69
|
+
|
|
70
|
+
[tool.pytest.ini_options]
|
|
71
|
+
testpaths = ["tests"]
|
|
72
|
+
|
|
73
|
+
[tool.ruff]
|
|
74
|
+
target-version = "py314"
|
|
75
|
+
line-length = 88
|
|
76
|
+
|
|
77
|
+
[tool.ruff.lint]
|
|
78
|
+
# E501 replaces the former flake8 `max-line-length = 88`: ruff does not enable
|
|
79
|
+
# it by default, and `ruff format` alone does not wrap comments or long strings.
|
|
80
|
+
extend-select = [
|
|
81
|
+
"A", # flake8-builtins: shadowing a builtin
|
|
82
|
+
"ARG", # flake8-unused-arguments
|
|
83
|
+
"B", # flake8-bugbear
|
|
84
|
+
"C4", # flake8-comprehensions
|
|
85
|
+
"E501", # line-too-long
|
|
86
|
+
"N", # pep8-naming
|
|
87
|
+
"PL", # pylint
|
|
88
|
+
"PTH", # flake8-use-pathlib
|
|
89
|
+
"RET", # flake8-return
|
|
90
|
+
"SIM", # flake8-simplify
|
|
91
|
+
"W", # pycodestyle warnings
|
|
92
|
+
]
|
|
93
|
+
|
|
94
|
+
[tool.ruff.lint.per-file-ignores]
|
|
95
|
+
# Comparing against literals (exit_code == 2, len(...) == 4) is what an
|
|
96
|
+
# assertion is; naming those values would obscure the tests, not clarify them.
|
|
97
|
+
"tests/**" = ["PLR2004"]
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
|
3
|
+
"extends": ["config:recommended"],
|
|
4
|
+
"timezone": "Europe/Paris",
|
|
5
|
+
"labels": ["renovate"],
|
|
6
|
+
"semanticCommits": "enabled",
|
|
7
|
+
"dependencyDashboardOSVVulnerabilitySummary": "unresolved",
|
|
8
|
+
"pre-commit": {
|
|
9
|
+
"enabled": true
|
|
10
|
+
},
|
|
11
|
+
"packageRules": [
|
|
12
|
+
{
|
|
13
|
+
"description": "Auto-merge everything but majors",
|
|
14
|
+
"matchUpdateTypes": ["minor", "patch", "digest", "pin", "pinDigest"],
|
|
15
|
+
"automerge": true
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"description": "Majors are reviewed by hand",
|
|
19
|
+
"matchUpdateTypes": ["major"],
|
|
20
|
+
"automerge": false
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"description": "op_so components are released in lockstep: one MR for all",
|
|
24
|
+
"matchManagers": ["gitlabci"],
|
|
25
|
+
"groupName": "op_so components"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"description": "Dev tooling moves fast and never ships to users: one MR",
|
|
29
|
+
"matchDepTypes": ["dev"],
|
|
30
|
+
"groupName": "dev dependencies",
|
|
31
|
+
"semanticCommitType": "chore"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"description": "Runtime dependency bumps also raise the pyproject.toml lower bound, so they trigger a fix release instead of a silent lockfile-only chore",
|
|
35
|
+
"matchManagers": ["pep621"],
|
|
36
|
+
"matchDepTypes": ["project.dependencies"],
|
|
37
|
+
"rangeStrategy": "bump"
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"lockFileMaintenance": {
|
|
41
|
+
"enabled": true
|
|
42
|
+
}
|
|
43
|
+
}
|