-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
154 lines (118 loc) · 3.85 KB
/
Makefile
File metadata and controls
154 lines (118 loc) · 3.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# Kalco Makefile
# This file provides common development commands
.PHONY: help build test clean install uninstall lint
# Variables
BINARY_NAME=kalco
VERSION=$(shell git describe --tags --always --dirty)
COMMIT=$(shell git rev-parse HEAD)
DATE=$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')
LDFLAGS=-s -w -X kalco/cmd.version=$(VERSION) -X kalco/cmd.commit=$(COMMIT) -X kalco/cmd.date=$(DATE)
# Default target
help:
@echo "🚀 Kalco Development Commands"
@echo "============================="
@echo ""
@echo "📦 Building:"
@echo " build - Build kalco binary"
@echo " build-all - Build for all platforms"
@echo " clean - Clean build artifacts"
@echo ""
@echo "🧪 Testing:"
@echo " test - Run tests"
@echo " test-coverage - Run tests with coverage"
@echo ""
@echo "🔧 Development:"
@echo " lint - Run linters"
@echo " install - Install kalco to system"
@echo " uninstall - Remove kalco from system"
@echo ""
@echo ""
@echo "📋 Information:"
@echo " version - Show current version"
@echo " deps - Show dependency information"
# Build targets
build:
@echo "🔨 Building kalco..."
go build -ldflags "$(LDFLAGS)" -o $(BINARY_NAME)
@echo "✅ Build complete: $(BINARY_NAME)"
build-all: clean
@echo "🔨 Building for all platforms..."
@mkdir -p dist
# Linux
GOOS=linux GOARCH=amd64 go build -ldflags "$(LDFLAGS)" -o dist/$(BINARY_NAME)-linux-amd64
GOOS=linux GOARCH=arm64 go build -ldflags "$(LDFLAGS)" -o dist/$(BINARY_NAME)-linux-arm64
# macOS
GOOS=darwin GOARCH=amd64 go build -ldflags "$(LDFLAGS)" -o dist/$(BINARY_NAME)-darwin-amd64
GOOS=darwin GOARCH=arm64 go build -ldflags "$(LDFLAGS)" -o dist/$(BINARY_NAME)-darwin-arm64
# Windows
GOOS=windows GOARCH=amd64 go build -ldflags "$(LDFLAGS)" -o dist/$(BINARY_NAME)-windows-amd64.exe
GOOS=windows GOARCH=arm64 go build -ldflags "$(LDFLAGS)" -o dist/$(BINARY_NAME)-windows-arm64.exe
@echo "✅ Multi-platform build complete in dist/ directory"
clean:
@echo "🧹 Cleaning build artifacts..."
@rm -f $(BINARY_NAME)
@rm -rf dist/
@rm -f *.tar.gz *.zip
@rm -f coverage.txt
@echo "✅ Clean complete"
# Test targets
test:
@echo "🧪 Running tests..."
go test -v ./...
test-coverage:
@echo "🧪 Running tests with coverage..."
go test -v -coverprofile=coverage.txt -covermode=atomic ./...
@echo "📊 Coverage report generated: coverage.txt"
# Development targets
lint:
@echo "🔍 Running linters..."
@if command -v golangci-lint >/dev/null 2>&1; then \
golangci-lint run; \
else \
echo "⚠️ golangci-lint not installed. Installing..."; \
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest; \
golangci-lint run; \
fi
# Installation targets
install: build
@echo "📦 Installing kalco to system..."
@sudo mv $(BINARY_NAME) /usr/local/bin/
@echo "✅ kalco installed to /usr/local/bin/"
uninstall:
@echo "🗑️ Removing kalco from system..."
@sudo rm -f /usr/local/bin/$(BINARY_NAME)
@echo "✅ kalco removed from system"
# Information targets
version:
@echo "📋 Version Information:"
@echo " Binary: $(BINARY_NAME)"
@echo " Version: $(VERSION)"
@echo " Commit: $(COMMIT)"
@echo " Date: $(DATE)"
deps:
@echo "📦 Dependency Information:"
@go mod graph
@echo ""
@echo "📊 Go version:"
@go version
@echo ""
@echo "🔍 Outdated dependencies:"
@go list -u -m all
# Development helpers
dev-setup:
@echo "🔧 Setting up development environment..."
@go mod download
@go mod verify
@echo "✅ Development environment ready"
fmt:
@echo "🎨 Formatting code..."
@go fmt ./...
@echo "✅ Code formatted"
vet:
@echo "🔍 Running go vet..."
@go vet ./...
@echo "✅ Go vet complete"
# Quick commands
all: clean build test lint
@echo "🎉 All checks passed!"
.PHONY: help build test clean release docker-build docker-push install uninstall lint security-check