-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathTaskfile.yml
More file actions
219 lines (184 loc) · 4.72 KB
/
Copy pathTaskfile.yml
File metadata and controls
219 lines (184 loc) · 4.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
# yaml-language-server: $schema=https://taskfile.dev/schema.json
version: '3'
vars:
PYTHON_VERSION: '3.13'
PACKAGE_NAME: lxmfy
DOCKER_IMAGE: lxmfy-test
WHEEL_BUILDER_IMAGE: lxmfy-wheel-builder
tasks:
default:
desc: Show available tasks
cmds:
- task --list
update:
desc: Pull latest changes from git
cmds:
- git pull
install:
desc: Install package dependencies
cmds:
- poetry install
install-dev:
desc: Install development dependencies
cmds:
- poetry install --with dev
- poetry run pip install pytest pytest-asyncio pytest-cov
build:
desc: Build package using poetry
cmds:
- poetry build
clean:
desc: Clean build artifacts
cmds:
- rm -rf build/
- rm -rf dist/
- rm -rf *.egg-info/
- rm -rf .pytest_cache/
- rm -rf __pycache__/
- find . -type d -name __pycache__ -exec rm -rf {} + || true
- find . -type f -name "*.pyc" -delete || true
- find . -type f -name "*.pyo" -delete || true
test:
desc: Run tests
cmds:
- poetry run pytest tests/ -v
lint:
desc: Run linting (ruff)
cmds:
- poetry run ruff check .
format:
desc: Format code (ruff)
cmds:
- poetry run ruff format .
typecheck:
desc: Run static type checking (pyright)
cmds:
- poetry run pyright lxmfy
check:
desc: Run safety check
cmds:
- poetry run safety check
dev:
desc: Install in development mode
cmds:
- poetry install
run:
desc: Run echo bot for testing
cmds:
- poetry run lxmfy run echo
version:
desc: Show current version
cmds:
- python -c "import lxmfy; print(lxmfy.__version__)"
bump-patch:
desc: Bump patch version
cmds:
- poetry version patch
- task: update-version
bump-minor:
desc: Bump minor version
cmds:
- poetry version minor
- task: update-version
bump-major:
desc: Bump major version
cmds:
- poetry version major
- task: update-version
update-version:
internal: true
cmds:
- |
NEW_VERSION=$(poetry version -s)
echo "__version__ = \"$$NEW_VERSION\"" > lxmfy/__version__.py
echo "Updated version to $$NEW_VERSION"
docker:
desc: Build and run Docker container
deps:
- docker-build
- docker-run
docker-build:
desc: Build Docker image
cmds:
- docker build -t {{.DOCKER_IMAGE}} .
docker-run:
desc: Run Docker container
cmds:
- |
docker run -d \
--name {{.DOCKER_IMAGE}}-bot \
-v {{.ROOT_DIR}}/config:/bot/config \
-v {{.ROOT_DIR}}/.reticulum:/root/.reticulum \
--restart unless-stopped \
{{.DOCKER_IMAGE}}
docker-run-host:
desc: Run Docker container with host network
cmds:
- |
docker run -d \
--name {{.DOCKER_IMAGE}}-bot \
--network host \
-v {{.ROOT_DIR}}/config:/bot/config \
-v {{.ROOT_DIR}}/.reticulum:/root/.reticulum \
--restart unless-stopped \
{{.DOCKER_IMAGE}}
docker-wheel-build:
desc: Build wheel builder Docker image
cmds:
- docker build -f docker/Dockerfile.Build -t {{.WHEEL_BUILDER_IMAGE}} .
docker-wheel-extract:
desc: Extract wheels from builder container
cmds:
- docker run --rm -v "{{.ROOT_DIR}}/dist_output:/output" {{.WHEEL_BUILDER_IMAGE}}
docker-compose-build:
desc: Build using docker-compose
cmds:
- docker-compose -f docker/docker-compose.yml build
docker-compose-up:
desc: Start services with docker-compose
cmds:
- docker-compose -f docker/docker-compose.yml up -d
docker-compose-down:
desc: Stop services with docker-compose
cmds:
- docker-compose -f docker/docker-compose.yml down
docker-compose-logs:
desc: Show docker-compose logs
cmds:
- docker-compose -f docker/docker-compose.yml logs -f
docker-stop:
desc: Stop and remove Docker container
cmds:
- docker stop {{.DOCKER_IMAGE}}-bot || true
- docker rm {{.DOCKER_IMAGE}}-bot || true
docker-clean:
desc: Clean Docker images and containers
deps:
- docker-stop
cmds:
- docker rmi {{.DOCKER_IMAGE}} || true
- docker rmi {{.WHEEL_BUILDER_IMAGE}} || true
publish-pypi:
desc: Publish package to PyPI
deps: [build]
cmds:
- twine upload dist/*
publish:
desc: Publish package to PyPI
deps: [publish-pypi]
all:
desc: Run clean, lint, typecheck, test, and build
deps:
- clean
- lint
- typecheck
- test
- build
ci:
desc: Run CI checks (lint, typecheck, check, test, build)
deps:
- lint
- typecheck
- check
- test
- build