SHELL := /bin/bash

APP_PORT ?= 18080
DATA_FILES := ../data/classnotes.txt ../data/学生课时账户.md $(wildcard ../data/admin_tasks.json) $(wildcard ../data/course_summary_state.json)

.PHONY: check smoke data-hash build up ps health deploy logs install-gitea-backup

check:
	node --check app/static/app.js
	node --check app/static/admin.js
	python3 -m py_compile app/main.py app/data.py

smoke:
	node scripts/smoke_test.js

data-hash:
	sha256sum $(DATA_FILES)

build:
	docker compose build

up:
	docker compose up -d

ps:
	docker compose ps

health:
	set -a; . ./.env; curl --fail --silent --show-error --retry 10 --retry-delay 1 --retry-connrefused --retry-all-errors -u "records:$${BASIC_AUTH_PASSWORD}" "http://127.0.0.1:$${APP_PORT:-$(APP_PORT)}/api/health"; echo

deploy: check smoke
	$(MAKE) --no-print-directory data-hash
	$(MAKE) --no-print-directory build
	$(MAKE) --no-print-directory up
	sleep 2
	$(MAKE) --no-print-directory health
	$(MAKE) --no-print-directory data-hash
	$(MAKE) --no-print-directory ps

logs:
	docker compose logs --tail=120 xsk-records-web

install-gitea-backup:
	python3 scripts/install_gitea_backup_hook.py
