Files
kandev/apps/backend/Makefile
T
Carlos Florêncio cad2d783b3
release / build-web (push) Has been cancelled
release / build-bundles (aarch64-linux-gnu-gcc, arm64, linux, ubuntu-latest, linux-arm64) (push) Has been cancelled
release / build-bundles (amd64, darwin, macos-13, macos-x64) (push) Has been cancelled
release / build-bundles (amd64, linux, ubuntu-latest, linux-x64) (push) Has been cancelled
release / build-bundles (amd64, windows, windows-latest, windows-x64) (push) Has been cancelled
release / build-bundles (arm64, darwin, macos-14, macos-arm64) (push) Has been cancelled
feat: improve windows support (#225)
feat: windows support
2026-02-15 18:16:21 +00:00

141 lines
4.2 KiB
Makefile

# Kandev Makefile
# Variables
BINARY_NAME := kandev
BUILD_DIR := bin
GO := go
GOFLAGS := -v
LDFLAGS := -s -w
# Cross-platform commands
ifeq ($(OS),Windows_NT)
RM = cmd /c del /s /q
RMDIR = cmd /c rmdir /s /q
MKDIR = cmd /c mkdir
else
RM = rm -f
RMDIR = rm -rf
MKDIR = mkdir -p
endif
# Build info
VERSION ?= $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")
COMMIT := $(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown")
BUILD_TIME := $(shell date -u '+%Y-%m-%dT%H:%M:%SZ' 2>/dev/null || powershell -c "Get-Date -Format 'yyyy-MM-ddTHH:mm:ssZ'" 2>/dev/null || echo "unknown")
LDFLAGS += -X main.Version=$(VERSION) -X main.Commit=$(COMMIT) -X main.BuildTime=$(BUILD_TIME)
.PHONY: all build build-all build-agentctl build-mock-agent clean run dev test lint fmt vet help
## Default target
all: build
## Build the mock-agent binary for testing
build-mock-agent:
@echo "Building mock-agent..."
@$(MKDIR) $(BUILD_DIR)
$(GO) build $(GOFLAGS) -ldflags "$(LDFLAGS)" -o $(BUILD_DIR)/mock-agent ./cmd/mock-agent
## Build the unified kandev binary
build: build-agentctl build-mock-agent
@echo "Building $(BINARY_NAME)..."
@$(MKDIR) $(BUILD_DIR)
$(GO) build $(GOFLAGS) -ldflags "$(LDFLAGS)" -o $(BUILD_DIR)/$(BINARY_NAME) ./cmd/kandev
## Build all binaries (unified + individual services + agentctl)
build-all: build build-agentctl
@echo "Building individual services..."
$(GO) build $(GOFLAGS) -ldflags "$(LDFLAGS)" -o $(BUILD_DIR)/agent-manager ./cmd/agent-manager
## Build the agentctl sidecar binary (includes embedded MCP server)
build-agentctl:
@echo "Building agentctl..."
@$(MKDIR) $(BUILD_DIR)
$(GO) build $(GOFLAGS) -ldflags "$(LDFLAGS)" -o $(BUILD_DIR)/agentctl ./cmd/agentctl
## Clean build artifacts
clean:
@echo "Cleaning..."
@$(RMDIR) $(BUILD_DIR)
$(GO) clean
## Run the application
run: build
@echo "Running $(BINARY_NAME)..."
./$(BUILD_DIR)/$(BINARY_NAME)
## Run in development mode
dev: build
@echo "Running $(BINARY_NAME) in development mode..."
@exec ./$(BUILD_DIR)/$(BINARY_NAME)
## Run tests
test:
@echo "Running tests..."
$(GO) test ./...
## Run tests with coverage
test-coverage:
@echo "Running tests with coverage..."
$(GO) test -v -coverprofile=coverage.out ./...
$(GO) tool cover -html=coverage.out -o coverage.html
## Run linter (requires golangci-lint)
lint:
@echo "Running linter..."
golangci-lint run ./...
## Format code
fmt:
@echo "Formatting code..."
$(GO) fmt ./...
## Run go vet
vet:
@echo "Running vet..."
$(GO) vet ./...
## Tidy dependencies
tidy:
@echo "Tidying dependencies..."
$(GO) mod tidy
## Download dependencies
deps:
@echo "Downloading dependencies..."
$(GO) mod download
## Build for multiple platforms
build-cross:
@echo "Building for multiple platforms..."
@$(MKDIR) $(BUILD_DIR)
GOOS=linux GOARCH=amd64 $(GO) build -ldflags "$(LDFLAGS)" -o $(BUILD_DIR)/$(BINARY_NAME)-linux-amd64 ./cmd/kandev
GOOS=darwin GOARCH=amd64 $(GO) build -ldflags "$(LDFLAGS)" -o $(BUILD_DIR)/$(BINARY_NAME)-darwin-amd64 ./cmd/kandev
GOOS=darwin GOARCH=arm64 $(GO) build -ldflags "$(LDFLAGS)" -o $(BUILD_DIR)/$(BINARY_NAME)-darwin-arm64 ./cmd/kandev
GOOS=windows GOARCH=amd64 $(GO) build -ldflags "$(LDFLAGS)" -o $(BUILD_DIR)/$(BINARY_NAME)-windows-amd64.exe ./cmd/kandev
## Show help
help:
@echo "Kandev - AI Agent Kanban Board"
@echo ""
@echo "Usage:"
@echo " make [target]"
@echo ""
@echo "Targets:"
@echo " build Build the unified kandev binary (default)"
@echo " build-all Build all binaries (unified + individual services + agentctl)"
@echo " build-agentctl Build the agentctl sidecar binary (includes embedded MCP server)"
@echo " build-mock-agent Build the mock-agent binary for testing"
@echo " clean Remove build artifacts"
@echo " run Build and run the application"
@echo " dev Run in development mode with a local database"
@echo " test Run tests"
@echo " test-coverage Run tests with coverage report"
@echo " lint Run golangci-lint"
@echo " fmt Format code"
@echo " vet Run go vet"
@echo " tidy Tidy go.mod dependencies"
@echo " deps Download dependencies"
@echo " build-cross Build for Linux, macOS, and Windows"
@echo " help Show this help message"