-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjustfile
More file actions
174 lines (132 loc) · 6.68 KB
/
justfile
File metadata and controls
174 lines (132 loc) · 6.68 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
# SQLModel CRUD Utils - Task Runner
set shell := ["cmd.exe", "/c"]
# Default recipe - show available commands
default:
@just --list
# ═══════════════════════════════════════════════════════════════════════════════
# Claude Code
# ═══════════════════════════════════════════════════════════════════════════════
# Start Claude Code (autonomous mode)
claude *ARGS="":
claude --allow-dangerously-skip-permissions {{ ARGS }}
# Continue last Claude session
claude-continue:
claude --continue
# Resume a specific Claude session
claude-resume:
claude --resume
# Start Claude with a one-shot prompt
claude-prompt PROMPT:
claude -p "{{ PROMPT }}"
# ═══════════════════════════════════════════════════════════════════════════════
# Dependencies
# ═══════════════════════════════════════════════════════════════════════════════
# Sync Python dependencies with uv
sync *args='':
uv sync {{args}}
# Lock Python dependencies with uv
lock:
uv lock
# Install development dependencies
install:
uv sync --all-extras
# ═══════════════════════════════════════════════════════════════════════════════
# Code Quality
# ═══════════════════════════════════════════════════════════════════════════════
# Run all linters and formatters (ruff, isort, black, type check)
lint:
ruff check --fix .
isort .
black .
ty check .
# Run all pre-commit hooks
check:
pre-commit run --all-files
# Type check only
type-check:
ty check .
# Ruff check only
ruff:
ruff check .
# Ruff check with auto-fix
ruff-fix:
ruff check --fix .
# Black format only
black:
black .
# isort only
isort:
isort .
# ═══════════════════════════════════════════════════════════════════════════════
# Testing
# ═══════════════════════════════════════════════════════════════════════════════
# Run all tests with coverage
test:
python -m pytest
# Run tests with verbose output
test-v:
python -m pytest -v
# Run tests and show coverage report
test-cov:
python -m pytest --cov=sqlmodel_crud_utils --cov-report=html --cov-report=term
# Run specific test file
test-file FILE:
python -m pytest {{FILE}}
# Run tests matching a pattern
test-k PATTERN:
python -m pytest -k {{PATTERN}}
# ═══════════════════════════════════════════════════════════════════════════════
# Documentation
# ═══════════════════════════════════════════════════════════════════════════════
# Generate documentation with pdoc
docs:
uv run --with pdoc pdoc sqlmodel_crud_utils -o docs
# Serve documentation locally
docs-serve:
uv run --with pdoc pdoc sqlmodel_crud_utils
# ═══════════════════════════════════════════════════════════════════════════════
# Build & Release
# ═══════════════════════════════════════════════════════════════════════════════
# Clean build artifacts
clean:
if exist dist rmdir /s /q dist
if exist build rmdir /s /q build
if exist *.egg-info rmdir /s /q *.egg-info
if exist htmlcov rmdir /s /q htmlcov
if exist .pytest_cache rmdir /s /q .pytest_cache
if exist .coverage del /q .coverage
# Build distribution packages
build: clean
python -m build
# Build and check package
build-check: build
twine check dist/*
# Upload to PyPI (production)
publish: build-check
twine upload dist/*
# Upload to TestPyPI (testing)
publish-test: build-check
twine upload --repository testpypi dist/*
# ═══════════════════════════════════════════════════════════════════════════════
# Git Workflow
# ═══════════════════════════════════════════════════════════════════════════════
# Show git status
status:
rtk git status
# Show git log
log:
rtk git log --oneline -10
# Create and push a new tag (e.g., just tag 0.2.0)
tag VERSION:
rtk git tag -a v{{VERSION}} -m "Release v{{VERSION}}"
rtk git push origin v{{VERSION}}
# ═══════════════════════════════════════════════════════════════════════════════
# Development Workflows
# ═══════════════════════════════════════════════════════════════════════════════
# Full pre-commit workflow (lint, type check, test)
pre-commit: lint test
# Prepare for release (lint, test, build, check)
release-prep: lint test build-check
@echo "Ready for release! Run 'just publish' to upload to PyPI"
# Quick development cycle (format and test)
dev: ruff-fix black isort test