# Makefile for KNEL-AIMiddleware
# Common operations for building, managing, and deploying MCP/LSP services

.PHONY: help build-all clean-vendor clone-vendors status test

# Default target
help: ## Show this help message
	@echo 'Usage: make [target]'
	@echo ''
	@echo 'Available targets:'
	@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "  \033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)

clone-vendors: ## Clone all vendor MCP/LSP repositories
	@echo "Cloning all vendor repositories..."
	@./CloneVendorRepos.sh

build-all: ## Build all MCP/LSP services
	@echo "Building all services..."
	@./BuildAll.sh

clean-vendor: ## Remove all cloned vendor repositories
	@echo "Cleaning vendor directory..."
	@./CleanVendor.sh

status: ## Check build status of all services
	@echo "Checking service status..."
	@./StatusCheck.sh

test: ## Run tests for all services (if available)
	@echo "Running tests..."
	@docker compose config --quiet && echo "✓ docker-compose.yml is valid"

logs: ## Show logs from all running services
	@docker compose logs -f

ps: ## Show status of all services
	@docker compose ps

up: ## Start all services in dev profile
	@echo "Starting all services..."
	@docker compose up -d --profile dev

down: ## Stop all services
	@echo "Stopping all services..."
	@docker compose down

rebuild: SERVICE? ## Rebuild a specific service (usage: make rebuild SERVICE=service-name)
	@echo "Rebuilding $(SERVICE)..."
	@docker compose build --no-cache $(SERVICE)
	@docker compose up -d $(SERVICE)

# Service-specific build targets
build-context7: ## Build context7-mcp service
	@docker compose build context7-mcp

build-bash-language-server: ## Build bash-language-server service
	@docker compose build bash-language-server

build-docker-language-server: ## Build docker-language-server service
	@docker compose build docker-language-server

build-marksman: ## Build marksman service
	@docker compose build marksman
