# Crkl - Physical Phone Development
.PHONY: help setup-sdk build install run stop logs clean uninstall devices check-device

ANDROID_HOME ?= $(HOME)/android-sdk
ADB := $(ANDROID_HOME)/platform-tools/adb
GRADLEW := ./gradlew
APK := app/build/outputs/apk/debug/app-debug.apk

help: ## Show available commands
	@echo "Crkl - Android Development Commands"
	@echo ""
	@echo "Setup Commands:"
	@echo "  make setup-sdk   - Install Android SDK and tools"
	@echo "  make setup-emulator - Create and start Android emulator"
	@echo "  make check-device - Check if device/emulator is connected"
	@echo "  make devices     - List connected devices/emulators"
	@echo ""
	@echo "Emulator Commands:"
	@echo "  make emulator    - Start Android emulator"
	@echo "  make emulator-stop - Stop emulator"
	@echo "  make emulator-list - List available emulators"
	@echo ""
	@echo "Development Commands:"
	@echo "  make build       - Build APK"
	@echo "  make install     - Install to device/emulator"
	@echo "  make run         - Launch app"
	@echo "  make logs        - Watch app logs"
	@echo "  make stop        - Stop app"
	@echo "  make clean       - Clean build"
	@echo "  make uninstall   - Remove app"
	@echo ""

setup-sdk: ## Install Android SDK and tools
	@echo "Setting up Android SDK..."
	@mkdir -p $(ANDROID_HOME)
	@cd $(ANDROID_HOME) && \
		if [ ! -f cmdline-tools/latest/bin/sdkmanager ]; then \
			echo "Downloading Android SDK command-line tools..."; \
			wget -q https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip; \
			unzip -q commandlinetools-linux-11076708_latest.zip; \
			mkdir -p cmdline-tools/latest; \
			mv cmdline-tools/* cmdline-tools/latest/ 2>/dev/null || true; \
			rm commandlinetools-linux-11076708_latest.zip; \
		fi
	@echo "Accepting SDK licenses..."
	@export ANDROID_HOME=$(ANDROID_HOME) && \
		export PATH=$(ANDROID_HOME)/cmdline-tools/latest/bin:$(ANDROID_HOME)/platform-tools:$$PATH && \
		yes | sdkmanager --licenses > /dev/null 2>&1
	@echo "Installing platform tools and build tools..."
	@export ANDROID_HOME=$(ANDROID_HOME) && \
		export PATH=$(ANDROID_HOME)/cmdline-tools/latest/bin:$(ANDROID_HOME)/platform-tools:$$PATH && \
		sdkmanager "platform-tools" "platforms;android-34" "build-tools;34.0.0" > /dev/null 2>&1
	@echo "✓ Android SDK setup complete!"
	@echo "Add to your ~/.bashrc or ~/.zshrc:"
	@echo "  export ANDROID_HOME=$(ANDROID_HOME)"
	@echo "  export PATH=\$$ANDROID_HOME/platform-tools:\$$PATH"

check-device: ## Check if device is connected
	@echo "Checking for connected devices..."
	@export ANDROID_HOME=$(ANDROID_HOME) && \
		export PATH=$(ANDROID_HOME)/platform-tools:$$PATH && \
		adb devices

devices: check-device ## List connected devices (alias for check-device)

setup-emulator: ## Create and start Android emulator
	@echo "Setting up Android emulator..."
	@export ANDROID_HOME=$(ANDROID_HOME) && \
		export PATH=$(ANDROID_HOME)/cmdline-tools/latest/bin:$(ANDROID_HOME)/platform-tools:$$PATH && \
		sdkmanager "system-images;android-34;google_apis;x86_64" > /dev/null 2>&1
	@export ANDROID_HOME=$(ANDROID_HOME) && \
		export PATH=$(ANDROID_HOME)/cmdline-tools/latest/bin:$(ANDROID_HOME)/platform-tools:$$PATH && \
		avdmanager create avd -n "CrklEmulator" -k "system-images;android-34;google_apis;x86_64" -d "pixel_7" --force
	@echo "✓ Emulator created. Run 'make emulator' to start it."

emulator: ## Start Android emulator
	@echo "Starting Android emulator with 4GB RAM..."
	@export ANDROID_HOME=$(ANDROID_HOME) && \
		export PATH=$(ANDROID_HOME)/emulator:$(ANDROID_HOME)/platform-tools:$$PATH && \
		emulator -avd CrklEmulator -memory 4096 -cores 4 -no-audio -gpu swiftshader_indirect -no-metrics &

emulator-stop: ## Stop emulator
	@echo "Stopping emulator..."
	@export ANDROID_HOME=$(ANDROID_HOME) && \
		export PATH=$(ANDROID_HOME)/platform-tools:$$PATH && \
		adb emu kill

emulator-list: ## List available emulators
	@echo "Available emulators:"
	@export ANDROID_HOME=$(ANDROID_HOME) && \
		export PATH=$(ANDROID_HOME)/cmdline-tools/latest/bin:$(ANDROID_HOME)/platform-tools:$$PATH && \
		avdmanager list avd

build: ## Build APK
	@echo "Building Crkl..."
	@$(GRADLEW) assembleDebug

install: build ## Install to phone
	@echo "Installing to phone..."
	@export ANDROID_HOME=$(ANDROID_HOME) && \
		export PATH=$(ANDROID_HOME)/platform-tools:$$PATH && \
		$(ADB) install -r $(APK)
	@echo "✓ Installed"

run: ## Launch app
	@echo "Launching Crkl..."
	@export ANDROID_HOME=$(ANDROID_HOME) && \
		export PATH=$(ANDROID_HOME)/platform-tools:$$PATH && \
		$(ADB) shell am start -n com.example.crkl/.MainActivity

logs: ## Watch app logs
	@echo "Watching logs (Ctrl+C to stop)..."
	@export ANDROID_HOME=$(ANDROID_HOME) && \
		export PATH=$(ANDROID_HOME)/platform-tools:$$PATH && \
		$(ADB) logcat -s CrklAccessibilityService:D OverlayView:D AndroidRuntime:E

stop: ## Stop app
	@export ANDROID_HOME=$(ANDROID_HOME) && \
		export PATH=$(ANDROID_HOME)/platform-tools:$$PATH && \
		$(ADB) shell am force-stop com.example.crkl

clean: ## Clean build
	@$(GRADLEW) clean

uninstall: ## Remove app
	@export ANDROID_HOME=$(ANDROID_HOME) && \
		export PATH=$(ANDROID_HOME)/platform-tools:$$PATH && \
		$(ADB) uninstall com.example.crkl
