BIN := akai-fetch
IMAGE := akai-fetch
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)

init:
	mkdir -p output/isos output/wavs

docker-up: init
	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 ───────────────────────────────────────

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 \
        clean
