-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
97 lines (77 loc) · 3.02 KB
/
Makefile
File metadata and controls
97 lines (77 loc) · 3.02 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
# === Параметры ===
UV ?= uv
VENV ?= .venv
TMUX ?= tmux
HOST ?= 127.0.0.1
PORT ?= 8888
BOT_SESSION := objopa-bot
API_SESSION := objopa-api
.PHONY: all init sync dev prod lock upgrade-lock run-bot run-api \
restart-bot restart-api stop-bot stop-api logs-bot logs-api \
shell clean reset help
# По умолчанию — установка зависимостей (dev)
all: init sync
## Создать проектное окружение .venv под Python 3.13 (один раз)
init:
@echo "🐍 Creating project venv ($(VENV))..."
$(UV) venv $(VENV) --python 3.13
## Синхронизация зависимостей для разработки (с dev-группами)
sync:
@echo "📦 uv sync (dev)..."
$(UV) sync
## Прод-синхронизация: строго по lock и без dev-зависимостей
prod:
@echo "🚀 uv sync (prod: --frozen --no-dev)..."
$(UV) sync --frozen --no-dev
## Обновить uv.lock в рамках диапазонов версий
upgrade-lock:
@echo "🔒 uv lock --upgrade..."
$(UV) lock --upgrade
## === Запуски через tmux (без активации venv; uv сам найдёт .venv) ===
run-bot:
@echo "🤖 Running Telegram Bot in tmux: $(BOT_SESSION)"
$(TMUX) new-session -d -s $(BOT_SESSION) '$(UV) run python -m tg_bot.main'
run-api:
@echo "🚀 Running FastAPI in tmux: $(API_SESSION)"
$(TMUX) new-session -d -s $(API_SESSION) '$(UV) run uvicorn backend.main:app --host $(HOST) --port $(PORT)'
restart-bot:
@echo "♻️ Restarting Telegram Bot..."
-$(TMUX) kill-session -t $(BOT_SESSION)
$(MAKE) run-bot
restart-api:
@echo "♻️ Restarting FastAPI..."
-$(TMUX) kill-session -t $(API_SESSION)
$(MAKE) run-api
stop-bot:
@echo "⛔ Stopping Telegram Bot..."
-$(TMUX) kill-session -t $(BOT_SESSION)
stop-api:
@echo "⛔ Stopping FastAPI..."
-$(TMUX) kill-session -t $(API_SESSION)
logs-bot:
@echo "📜 Attaching to Telegram Bot logs..."
$(TMUX) attach -t $(BOT_SESSION)
logs-api:
@echo "📜 Attaching to FastAPI logs..."
$(TMUX) attach -t $(API_SESSION)
## Зайти в shell с активированной .venv (по желанию)
shell:
@echo "🐚 Shell in $(VENV)..."
@/usr/bin/env bash -lc 'source $(VENV)/bin/activate && exec $$SHELL -l'
## Удалить .venv
clean:
@echo "🧹 Removing $(VENV)..."
rm -rf $(VENV)
## Полный ресет: снести .venv и пересобрать
reset: clean all
help:
@echo "Targets:"
@echo " init - создать .venv (Python 3.13)"
@echo " sync - uv sync (dev)"
@echo " prod - uv sync --frozen --no-dev"
@echo " upgrade-lock - обновить uv.lock в рамках диапазонов"
@echo " run-bot - запустить tg_bot в tmux"
@echo " run-api - запустить uvicorn backend в tmux"
@echo " restart-*, stop-*, logs-*"
@echo " shell - shell с активированной .venv"
@echo " clean / reset - удалить/пересобрать окружение"