#!/usr/bin/make -f

%:
	dh $@

override_dh_auto_install:
	# Create directories
	install -d $(CURDIR)/debian/praya-service/usr/share/praya
	install -d $(CURDIR)/debian/praya-service/usr/share/praya/praya
	install -d $(CURDIR)/debian/praya-service/usr/share/praya/praya/core
	install -d $(CURDIR)/debian/praya-service/usr/share/praya/praya/services
	install -d $(CURDIR)/debian/praya-service/usr/share/praya/praya/services/posture
	install -d $(CURDIR)/debian/praya-service/usr/bin
	install -d $(CURDIR)/debian/praya-service/usr/lib/systemd/user
	install -d $(CURDIR)/debian/praya-service/usr/share/dbus-1/services
	install -d $(CURDIR)/debian/praya-service/usr/share/applications
	install -d $(CURDIR)/debian/praya-service/usr/share/icons/hicolor/scalable/apps

	# Install praya core package
	install -m 644 praya/__init__.py $(CURDIR)/debian/praya-service/usr/share/praya/praya/
	install -m 644 praya/daemon.py $(CURDIR)/debian/praya-service/usr/share/praya/praya/
	install -m 644 praya/core/__init__.py $(CURDIR)/debian/praya-service/usr/share/praya/praya/core/
	install -m 644 praya/core/service.py $(CURDIR)/debian/praya-service/usr/share/praya/praya/core/
	install -m 644 praya/core/dbus.py $(CURDIR)/debian/praya-service/usr/share/praya/praya/core/
	install -m 644 praya/core/notifications.py $(CURDIR)/debian/praya-service/usr/share/praya/praya/core/

	# Install praya services package
	install -m 644 praya/services/__init__.py $(CURDIR)/debian/praya-service/usr/share/praya/praya/services/

	# Install posture service
	install -m 644 praya/services/posture/__init__.py $(CURDIR)/debian/praya-service/usr/share/praya/praya/services/posture/
	install -m 644 praya/services/posture/service.py $(CURDIR)/debian/praya-service/usr/share/praya/praya/services/posture/
	install -m 644 praya/services/posture/camera.py $(CURDIR)/debian/praya-service/usr/share/praya/praya/services/posture/
	install -m 644 praya/services/posture/calibration.py $(CURDIR)/debian/praya-service/usr/share/praya/praya/services/posture/

	# Install pre-built virtual environment
	cp -a $(CURDIR)/build/venv $(CURDIR)/debian/praya-service/usr/share/praya/venv

	# Install launcher script
	install -m 755 debian/praya-service.sh $(CURDIR)/debian/praya-service/usr/bin/praya-service

	# Install systemd user service
	install -m 644 debian/praya.service $(CURDIR)/debian/praya-service/usr/lib/systemd/user/

	# Install D-Bus service file for auto-activation
	install -m 644 debian/com.github.blankon.praya.service $(CURDIR)/debian/praya-service/usr/share/dbus-1/services/

	# Install desktop file
	install -m 644 debian/praya.desktop $(CURDIR)/debian/praya-service/usr/share/applications/

	# Install icon
	install -m 644 debian/praya.svg $(CURDIR)/debian/praya-service/usr/share/icons/hicolor/scalable/apps/

# Skip debhelper tools that cannot handle bundled .so files inside the venv
override_dh_strip:
	dh_strip --exclude=/usr/share/praya/venv/

override_dh_dwz:
	dh_dwz --exclude=/usr/share/praya/venv/

override_dh_shlibdeps:
	dh_shlibdeps --exclude=/usr/share/praya/venv/

override_dh_makeshlibs:
	dh_makeshlibs --exclude=/usr/share/praya/venv/

override_dh_auto_build:
	# Build Python virtual environment with all dependencies
	python3 -m venv --system-site-packages $(CURDIR)/build/venv
	$(CURDIR)/build/venv/bin/pip install --quiet --upgrade pip
	$(CURDIR)/build/venv/bin/pip install --quiet -r requirements.txt
	# Rewrite venv paths from build dir to final install location
	sed -i "s|$(CURDIR)/build/venv|/usr/share/praya/venv|g" \
		$(CURDIR)/build/venv/bin/activate \
		$(CURDIR)/build/venv/bin/activate.csh \
		$(CURDIR)/build/venv/bin/activate.fish \
		$(CURDIR)/build/venv/pyvenv.cfg
	# Fix shebangs in venv bin scripts to use /usr/bin/python3
	for f in $(CURDIR)/build/venv/bin/*; do \
		if head -1 "$$f" 2>/dev/null | grep -q "^#!.*$(CURDIR)"; then \
			sed -i "1s|^#!.*|#!/usr/share/praya/venv/bin/python3|" "$$f"; \
		fi; \
	done
