.PHONY: all build build-cni build-daemon test lint proto-gen yang-validate \ container-build dev dev-build dev-exec clean CONTAINER_ENGINE ?= podman COMPOSE ?= $(CONTAINER_ENGINE)-compose DEV_CONTAINER := kedge-dev CNI_BINARY := bin/kedge-cni DAEMON_BINARY := bin/kedge-daemon # ---------- Container-based builds (default) ---------- all: container-build container-build: $(CONTAINER_ENGINE) build --target cni -t kedge-cni -f Containerfile.build . $(CONTAINER_ENGINE) build --target daemon -t kedge-daemon -f Containerfile.build . # ---------- Dev environment (podman-compose) ---------- dev-build: $(COMPOSE) build dev: $(COMPOSE) up -d dev dev-exec: $(COMPOSE) exec dev bash dev-down: $(COMPOSE) down # ---------- In-container Go commands (via dev container) ---------- build: build-cni build-daemon build-cni: $(COMPOSE) exec dev go build -o $(CNI_BINARY) ./cmd/kedge-cni build-daemon: $(COMPOSE) exec dev go build -o $(DAEMON_BINARY) ./cmd/kedge-daemon test: $(COMPOSE) exec dev go test ./... lint: $(COMPOSE) exec dev golangci-lint run ./... proto-gen: $(COMPOSE) exec dev buf generate mod-tidy: $(COMPOSE) exec dev go mod tidy # ---------- YANG / Python ---------- yang-validate: $(COMPOSE) exec yang-compiler pyang --strict models/sovereign-sdwan.yang python-test: $(COMPOSE) exec yang-compiler python -m pytest tests/ # ---------- Local (if Go is installed) ---------- build-local: go build -o $(CNI_BINARY) ./cmd/kedge-cni go build -o $(DAEMON_BINARY) ./cmd/kedge-daemon test-local: go test ./... # ---------- Clean ---------- clean: rm -rf bin/ $(COMPOSE) down -v 2>/dev/null || true