DIRENV := $(shell command -v direnv 2> /dev/null)

# If we have direnv and we're not already in the environment, re-exec via direnv
ifdef DIRENV
    ifeq ($(origin DIRENV_DIR), undefined)
        # Ensure direnv is allowed
        _ALLOW := $(shell direnv allow . > /dev/null 2>&1)
        # Re-exec make via direnv
        EXEC := direnv exec . $(MAKE)
build run test clean flatpak-build:
	@$(EXEC) $@
    else
        # We are already inside direnv, or direnv is not available
        EXEC :=
    endif
else
    EXEC :=
endif

ifndef EXEC
build:
	cargo build

run:
	cargo run

test:
	cargo test

clean:
	cargo clean

# Flatpak build target
.PHONY: flatpak-build
flatpak-build:
	flatpak-builder --force-clean build-flatpak flatpak/app.flatpak.json
endif

.PHONY: build run test clean
