.PHONY: aw-webui build install test typecheck package clean

build: aw-webui
	poetry install

aw-webui:
	mkdir -p aw_server/static/
ifeq ($(SKIP_WEBUI),true) # Skip building webui if SKIP_WEBUI is true
	@echo "Skipping building webui"
else
	rm -rf aw_server/static/*
	make --directory=aw-webui build DEV=$(DEV)
	cp -r aw-webui/dist/* aw_server/static/
	# Needed for https://github.com/ActivityWatch/activitywatch/pull/274, works around https://github.com/pypa/pip/issues/6279
	# https://github.com/ActivityWatch/activitywatch/pull/367 Other solutions have been tried but did not actually work.
	# If you aren't sure windows long paths are working, don't remove this
	rm -rf aw-webui/node_modules/.cache
endif

install:
	cp misc/aw-server.service /usr/lib/systemd/user/aw-server.service

test:
	@# Note that extensive integration tests are also run in the bundle repo,
	@# for both aw-server and aw-server-rust, but without code coverage.
	python -c 'import aw_server'
	python -m pytest tests/test_server.py tests/test_profile.py tests/test_profile_config.py

typecheck:
	python -m mypy aw_server tests --ignore-missing-imports

package: bump-version
	rm -rf dist
	pyinstaller aw-server.spec --clean --noconfirm

PYFILES=$(shell find . -name '*.py')

lint:
	ruff check .

lint-fix:
	poetry run pyupgrade --py38-plus --exit-zero-even-if-changed $(PYFILES)
	ruff check --fix .

format:
	black .

bump-version:
	@# make sure to pull tags in parent repo before running this
	poetry run python -m aw_server.__about__
	VERSION=$$(grep -oP '__version__ = "v\K[^"]+' aw_server/__about__.py | head -n1); echo $$VERSION; poetry version $$VERSION

clean:
	rm -rf build dist
	rm -rf aw_server/__pycache__
	rm -rf aw_server/static/*
	pip3 uninstall -y aw_server
	make --directory=aw-webui clean
