BIN := fetch
IMAGE := akai-fetch
REMOTE := dhg.lol
ELECTRON_DIR := electron

build:
	CGO_ENABLED=0 go build -buildvcs=false -o $(BIN) .

akaiutil:
	$(MAKE) -C third_party/akaiutil

all: build akaiutil

docker:
	docker build -t $(IMAGE) .

docker-run:
	docker run --rm -v "$(PWD)/output:/data" $(IMAGE) $(ARGS)

docker-up:
	docker compose up --build

docker-down:
	docker compose down

serve: build
	./$(BIN) serve

# ─── Electron targets ──────────────────────────────────────

electron-deps:
	cd $(ELECTRON_DIR) && npm install

electron-dev: build
	cd $(ELECTRON_DIR) && npx electron .

electron-build: build akaiutil
	cd $(ELECTRON_DIR) && npx electron-builder --dir

electron-build-mac: build akaiutil
	cd $(ELECTRON_DIR) && npx electron-builder --mac --dir

electron-build-linux: build akaiutil
	cd $(ELECTRON_DIR) && npx electron-builder --linux --dir

# ─── Server / remote ───────────────────────────────────────

install: build
	scp $(BIN) $(REMOTE):/tmp/$(BIN) && \
	ssh $(REMOTE) "sudo mv /tmp/$(BIN) /DATA/Downloads/akai/$(BIN) && sudo chmod +x /DATA/Downloads/akai/$(BIN)"

clean:
	rm -f $(BIN)
	rm -rf $(ELECTRON_DIR)/dist
	rm -rf $(ELECTRON_DIR)/node_modules
	$(MAKE) -C third_party/akaiutil clean

.PHONY: build akaiutil all docker docker-run docker-up docker-down serve \
        electron-deps electron-dev electron-build electron-build-mac electron-build-linux \
        install clean
