.PHONY: build run clean docker-build docker-run docker-push docker-build-multiarch docker-push-multiarch # Build the application build: go build -o spore-gateway main.go # Run the application run: go run main.go # Clean build artifacts clean: rm -f spore-gateway # Format code fmt: go fmt ./... # Lint code (requires golangci-lint) lint: golangci-lint run # Install dependencies deps: go mod download go mod tidy # Docker variables DOCKER_REGISTRY ?= IMAGE_NAME = wirelos/spore-gateway IMAGE_TAG ?= latest FULL_IMAGE_NAME = $(if $(DOCKER_REGISTRY),$(DOCKER_REGISTRY)/$(IMAGE_NAME),$(IMAGE_NAME)):$(IMAGE_TAG) # Build Docker image docker-build: docker build -t $(FULL_IMAGE_NAME) . # Run Docker container docker-run: docker run --network host --rm $(FULL_IMAGE_NAME) # Push Docker image docker-push: docker push $(FULL_IMAGE_NAME) # Build multiarch Docker image docker-build-multiarch: docker buildx build --platform linux/amd64,linux/arm64 \ -t $(FULL_IMAGE_NAME) \ --push \ . # Push multiarch Docker image (if not pushed during build) docker-push-multiarch: docker buildx build --platform linux/amd64,linux/arm64 \ -t $(FULL_IMAGE_NAME) \ --push \ .