diff --git a/Makefile b/Makefile index f260a190..aeae4063 100644 --- a/Makefile +++ b/Makefile @@ -37,26 +37,27 @@ else @echo "(pubspec.yaml not scaffolded yet; skipping)" endif +DAEMON_PID_FILE := /tmp/clide-daemon-$(shell id -u).pid + .PHONY: run -run: ## Build the daemon + launch the Flutter desktop app. +run: stop build ## Build the daemon + launch the Flutter desktop app. ifeq ($(APP_PRESENT),yes) - @# Kill any stale daemon so the binary isn't locked. - @pkill -f 'bin/clide --daemon' 2>/dev/null; sleep 0.2; true - $(MAKE) build @echo "Starting daemon…" - @bin/clide --daemon & DAEMON_PID=$$!; \ - trap 'kill $$DAEMON_PID 2>/dev/null; wait $$DAEMON_PID 2>/dev/null' EXIT INT TERM; \ - echo "Daemon PID $$DAEMON_PID"; \ - echo "Launching Flutter app…"; \ - cd app && flutter run -d linux; \ - kill $$DAEMON_PID 2>/dev/null; wait $$DAEMON_PID 2>/dev/null; true + @bin/clide --daemon & echo $$! > $(DAEMON_PID_FILE) + @echo "Daemon PID $$(cat $(DAEMON_PID_FILE))" + @echo "Launching Flutter app…" + -cd app && flutter run -d linux + @$(MAKE) --no-print-directory stop else @echo "(pubspec.yaml not scaffolded yet; skipping)" endif .PHONY: stop stop: ## Kill any running clide daemon. - @pkill -f 'bin/clide --daemon' 2>/dev/null && echo "daemon stopped" || echo "no daemon running" + @if [ -f $(DAEMON_PID_FILE) ]; then \ + kill $$(cat $(DAEMON_PID_FILE)) 2>/dev/null && echo "daemon stopped" || true; \ + rm -f $(DAEMON_PID_FILE); \ + fi .PHONY: install install: build ## Install bin/clide into $(INSTALL_DIR).