veza/make/tools.mk
2026-02-07 20:36:48 +01:00

49 lines
2.6 KiB
Makefile

# ==============================================================================
# TOOLS: check, install deps, ports
# ==============================================================================
.PHONY: check-tools check-tools-incus install-tools install-deps check-ports
check-tools: ## [LOW] Check required tools
@$(ECHO_CMD) "${BLUE}Checking core requirements...${NC}"
@for tool in docker go cargo npm; do \
command -v $$tool >/dev/null 2>&1 || { $(ECHO_CMD) "${RED}$$tool is missing!${NC}"; exit 1; }; \
done
@$(ECHO_CMD) "${GREEN}✅ All tools present.${NC}"
check-tools-incus: ## [LOW] Check required tools for Incus deployment
@$(ECHO_CMD) "${BLUE}Checking Incus deployment requirements...${NC}"
@command -v incus >/dev/null 2>&1 || { $(ECHO_CMD) "${RED}❌ incus is missing! Install with: sudo snap install incus${NC}"; exit 1; }
@command -v go >/dev/null 2>&1 || { $(ECHO_CMD) "${RED}❌ go is missing!${NC}"; exit 1; }
@command -v cargo >/dev/null 2>&1 || { $(ECHO_CMD) "${RED}❌ cargo is missing!${NC}"; exit 1; }
@command -v npm >/dev/null 2>&1 || { $(ECHO_CMD) "${RED}❌ npm is missing!${NC}"; exit 1; }
@$(ECHO_CMD) "${GREEN}✅ All Incus tools present.${NC}"
install-tools: ## [LOW] Install Power User tools (Hot Reload, Linters)
@$(ECHO_CMD) "${BLUE}🛠️ Installing Dev Tools...${NC}"
@command -v air >/dev/null 2>&1 || go install github.com/air-verse/air@latest
@command -v cargo-watch >/dev/null 2>&1 || cargo install cargo-watch
@command -v sqlx >/dev/null 2>&1 || cargo install sqlx-cli --no-default-features --features native-tls,postgres
@$(ECHO_CMD) "${GREEN}✅ Tools installed.${NC}"
install-deps: ## [LOW] Install code dependencies (all backends + npm workspaces)
@$(ECHO_CMD) "${BLUE}📦 Installing dependencies...${NC}"
@$(ECHO_CMD) " -> [Go] Downloading modules..."
@(cd $(ROOT)/$(SERVICE_DIR_backend-api) && go mod download)
@$(ECHO_CMD) " -> [Rust Chat] Fetching crates..."
@(cd $(ROOT)/$(SERVICE_DIR_chat-server) && cargo fetch)
@$(ECHO_CMD) " -> [Rust Stream] Fetching crates..."
@(cd $(ROOT)/$(SERVICE_DIR_stream-server) && cargo fetch)
@$(ECHO_CMD) " -> [Web] Installing npm packages..."
@(cd $(ROOT)/$(SERVICE_DIR_web) && npm install --silent)
@$(ECHO_CMD) "${GREEN}✅ Dependencies installed.${NC}"
check-ports: ## [LOW] Check if ports are available
@$(ECHO_CMD) "${BLUE}🔍 Checking ports...${NC}"
@for port in $(PORT_backend-api) $(PORT_chat-server) $(PORT_stream-server) $(PORT_web); do \
if lsof -i :$$port -t >/dev/null 2>&1; then \
$(ECHO_CMD) "${YELLOW}⚠️ Port $$port is busy${NC}"; \
else \
$(ECHO_CMD) "${GREEN}✅ Port $$port is free${NC}"; \
fi; \
done