1+ .PHONY : setup compile-deps sync-deps clean test lint init-tools local-dev first-time-setup update-deps dev-setup sync-all first-time-local-setup
2+
3+ # Environment variable for local SDK path (optional)
4+ SOCKET_SDK_PATH ?= ../socket-sdk-python
5+
6+ # Environment variable to control local development mode
7+ USE_LOCAL_SDK ?= false
8+
9+ # === High-level workflow targets ===
10+
11+ # First-time repo setup after cloning (using PyPI packages)
12+ first-time-setup : clean setup
13+
14+ # First-time setup for local development (using local SDK)
15+ first-time-local-setup :
16+ $(MAKE ) clean
17+ $(MAKE ) USE_LOCAL_SDK=true dev-setup
18+
19+ # Update dependencies after changing pyproject.toml
20+ update-deps : compile-deps sync-deps
21+
22+ # Setup for local development
23+ dev-setup : clean local-dev setup
24+
25+ # Sync all dependencies after pulling changes
26+ sync-all : sync-deps
27+
28+ # === Implementation targets ===
29+
30+ # Creates virtual environment and installs pip-tools
31+ init-tools :
32+ python -m venv .venv
33+ . .venv/bin/activate && pip install pip-tools
34+
35+ # Installs dependencies needed for local development
36+ # Currently: socket-sdk-python from test PyPI or local path
37+ local-dev : init-tools
38+ ifeq ($(USE_LOCAL_SDK ) ,true)
39+ . .venv/bin/activate && pip install -e $(SOCKET_SDK_PATH)
40+ endif
41+
42+ # Creates/updates requirements.txt files with locked versions based on pyproject.toml
43+ compile-deps : local-dev
44+ . .venv/bin/activate && pip-compile --output-file=requirements.txt pyproject.toml
45+ . .venv/bin/activate && pip-compile --extra=dev --output-file=requirements-dev.txt pyproject.toml
46+ . .venv/bin/activate && pip-compile --extra=test --output-file=requirements-test.txt pyproject.toml
47+
48+ # Creates virtual environment and installs dependencies from pyproject.toml
49+ setup : compile-deps
50+ . .venv/bin/activate && pip install -e " .[dev,test]"
51+
52+ # Installs exact versions from requirements.txt into your virtual environment
53+ sync-deps :
54+ . .venv/bin/activate && pip-sync requirements.txt requirements-dev.txt requirements-test.txt
55+ ifeq ($(USE_LOCAL_SDK ) ,true)
56+ . .venv/bin/activate && pip install -e $(SOCKET_SDK_PATH)
57+ endif
58+
59+ # Removes virtual environment and cache files
60+ clean :
61+ rm -rf .venv
62+ find . -type d -name " __pycache__" -exec rm -rf {} +
63+
64+ test :
65+ pytest
66+
67+ lint :
68+ ruff check .
69+ ruff format --check .
0 commit comments