1
1
# https://taskfile.dev
2
2
version : ' 3'
3
+
3
4
vars :
4
- package_name : homelab_airflow_dags
5
- python_min_version : ' 3.10 '
6
- python_max_version : &dev_version '3.12 '
5
+ package_name : {{ cookiecutter.project_slug }}
6
+ python_min_version : ' {{ cookiecutter.min_python_version }} '
7
+ python_max_version : &dev_version '{{ cookiecutter.max_python_version }} '
7
8
# 默认的开发版本
8
-
9
9
python_dev_version : *dev_version
10
+
10
11
tasks :
11
12
init :
12
13
desc : Initialize the project
13
14
cmds :
14
15
- uv sync
15
16
- uvx pre-commit install
17
+
16
18
lint :
17
19
desc : Run linters
18
20
cmds :
19
- - uvx ruff check --fix . # 先修复可以自动修复的问题
20
- - uvx ruff format . # 然后格式化
21
- - uvx ruff check . # 最后再检查一次确保没有遗留问题
21
+ - uvx ruff check --fix . # 先修复可以自动修复的问题
22
+ - uvx ruff format . # 然后格式化
23
+ - uvx ruff check . # 最后再检查一次确保没有遗留问题
24
+
22
25
lint:add-noqa :
23
26
desc : Add noqa comments to files
24
27
cmds :
25
- - uvx ruff check --fix --add-noqa . # 添加 noqa 注释以忽略特定行的检查
26
- - task : lint:pre-commit # 运行 pre-commit 钩子以确保代码风格一致
27
- - task : lint # 重新运行 ruff 检查以确保没有遗漏的错误
28
+ - uvx ruff check --fix --add-noqa . # 添加 noqa 注释以忽略特定行的检查
29
+ - task : lint:pre-commit # 运行 pre-commit 钩子以确保代码风格一致
30
+ - task : lint # 重新运行 ruff 检查以确保没有遗漏的错误
31
+
28
32
lint:pre-commit :
29
33
desc : Run pre-commit hooks
30
34
cmds :
31
35
- uvx pre-commit run --all-files
36
+
32
37
lint:watch :
33
38
desc : Watch files and run linters
34
39
cmds :
35
- - uvx ruff check --watch . # 监视文件变化并运行检查
40
+ - uvx ruff check --watch . # 监视文件变化并运行检查
41
+
36
42
test :
37
43
desc : Run tests with dev version
38
44
cmds :
39
45
- task : test:version
40
46
vars :
41
- version : ' {{.python_dev_version}}'
47
+ version : {% raw %}'{{.python_dev_version}}'{% endraw %}
48
+
42
49
test:all :
43
50
desc : Run tests with all Python versions
44
51
vars :
45
52
python_versions :
46
53
sh : |
47
54
python3 -c "
48
- min_ver = '{{.python_min_version}}'.split('.')
49
- max_ver = '{{.python_max_version}}'.split('.')
55
+ min_ver = {% raw %} '{{.python_min_version}}'{% endraw %} .split('.')
56
+ max_ver = {% raw %} '{{.python_max_version}}'{% endraw %} .split('.')
50
57
for minor in range(int(min_ver[1]), int(max_ver[1]) + 1):
51
58
print(f'{min_ver[0]}.{minor}')
52
59
"
53
60
cmds :
54
- - for : {var: python_versions, split: "\n", as: version}
61
+ - for : {% raw %}{ var: python_versions, split: "\n", as: version}{% endraw % }
55
62
task : test:version
56
63
vars :
57
- version : ' {{.version}}'
64
+ version : {% raw %}'{{.version}}'{% endraw %}
65
+
58
66
test:version :
59
67
desc : Run tests with specific Python version
60
68
cmds :
61
- - echo "Testing with Python {{.version}}..."
62
- - uvx --python {{.version}} --with ".[dev]" pytest --cov={{.package_name}} --cov-report=xml --cov-report=term-missing -v tests/
69
+ - echo "Testing with Python {% raw %}{{.version}}{% endraw %}..."
70
+ - uvx --python {% raw %}{{.version}}{% endraw %} --with ".[dev]" pytest --cov={% raw %}{{.package_name}}{% endraw %} --cov-report=xml --cov-report=term-missing -v tests/
71
+
72
+ test:watch :
73
+ desc : Watch files and run tests
74
+ cmds :
75
+ - uvx --with ".[dev]" ptw --runner "pytest -vx"
76
+
63
77
docs :
64
78
desc : Build and view documentation
65
79
cmds :
66
80
- uvx --with ".[docs]" mkdocs serve
67
- export:deps :
81
+
82
+ docs:build :
83
+ desc : Build documentation
68
84
cmds :
69
- - uv pip compile pyproject.toml --no-deps --output-file requirements.txt
85
+ - uvx --with ".[docs]" mkdocs build
86
+
87
+ {%- if cookiecutter.use_github_actions == 'yes' %}
70
88
deploy:gh-pages :
71
89
desc : Deploy documentation to GitHub Pages
72
90
cmds :
73
91
- uvx --with ".[docs]" mkdocs gh-deploy --force
92
+ {%- endif %}
93
+
74
94
deploy:pypi :
75
95
desc : Deploy package to PyPI
76
96
cmds :
77
97
- uv build
78
98
- uv publish
99
+
100
+ export:deps :
101
+ desc : Export dependencies to requirements.txt
102
+ cmds :
103
+ - uv pip compile pyproject.toml --no-deps --output-file requirements.txt
104
+
105
+ {%- if cookiecutter.use_docker == 'yes' %}
106
+ docker:build :
107
+ desc : Build Docker image
108
+ cmds :
109
+ - docker build -t {{ cookiecutter.repo_name }}:latest .
110
+
111
+ docker:run :
112
+ desc : Run Docker container
113
+ cmds :
114
+ - docker run --rm -it {{ cookiecutter.repo_name }}:latest
115
+
79
116
docker-compose:up :
80
- desc : pre view docker Service
117
+ desc : Start services with docker-compose
81
118
cmds :
82
119
- docker-compose -f docker/docker-compose.yaml up
120
+
83
121
docker-compose:down :
84
- desc : pre view docker Service
122
+ desc : Stop services with docker-compose
85
123
cmds :
86
124
- docker-compose -f docker/docker-compose.yaml down
125
+
126
+ docker-compose:logs :
127
+ desc : View docker-compose logs
128
+ cmds :
129
+ - docker-compose -f docker/docker-compose.yaml logs -f
130
+ {%- endif %}
0 commit comments