[DEPRECATED] Go implementation of plcbundle
1.PHONY: all build install test clean fmt lint help version bump-patch bump-minor bump-major release release-build
2.PHONY: docker-build docker-buildx docker-push docker-run docker-clean docker-shell compose-up compose-down compose-logs
3
4# Binary name
5BINARY_NAME=plcbundle-go
6INSTALL_PATH=$(GOPATH)/bin
7
8# Docker configuration
9DOCKER_IMAGE=plcbundle-go
10DOCKER_TAG=$(VERSION)
11DOCKER_REGISTRY?=atscan
12DOCKER_FULL_IMAGE=$(if $(DOCKER_REGISTRY),$(DOCKER_REGISTRY)/,)$(DOCKER_IMAGE):$(DOCKER_TAG)
13DOCKER_LATEST=$(if $(DOCKER_REGISTRY),$(DOCKER_REGISTRY)/,)$(DOCKER_IMAGE):latest
14DOCKER_PLATFORMS?=linux/amd64,linux/arm64
15
16# Version information
17VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")
18GIT_COMMIT := $(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown")
19BUILD_DATE := $(shell date -u +"%Y-%m-%dT%H:%M:%SZ")
20
21# Go commands
22GOCMD=go
23GOBUILD=$(GOCMD) build
24GOINSTALL=$(GOCMD) install
25GOCLEAN=$(GOCMD) clean
26GOTEST=$(GOCMD) test
27GOGET=$(GOCMD) get
28GOFMT=$(GOCMD) fmt
29GOMOD=$(GOCMD) mod
30
31# Test runner - auto-detect gotestsum
32GOTESTSUM := $(shell command -v gotestsum 2> /dev/null)
33
34# Build flags
35LDFLAGS=-ldflags "-X main.version=$(VERSION) -X main.gitCommit=$(GIT_COMMIT) -X main.buildDate=$(BUILD_DATE)"
36
37# Default target
38all: build
39
40# Build the CLI tool with version info
41build:
42 @echo "Building $(BINARY_NAME) $(VERSION)..."
43 $(GOBUILD) $(LDFLAGS) -o $(BINARY_NAME) ./cmd/plcbundle
44
45# Install the CLI tool globally
46install:
47 @echo "Installing $(BINARY_NAME) ..."
48 $(GOBUILD) $(LDFLAGS) -o $(INSTALL_PATH)/$(BINARY_NAME) ./cmd/plcbundle
49
50# Run tests
51test:
52ifdef GOTESTSUM
53 @gotestsum -- ./...
54else
55 @echo "Running tests (install gotestsum for better output: go install gotest.tools/gotestsum@latest)"
56 @$(GOTEST) -v ./...
57endif
58
59# Run tests with coverage
60test-coverage:
61ifdef GOTESTSUM
62 @gotestsum --format testname -- -cover ./...
63else
64 @$(GOTEST) -v -cover ./...
65endif
66
67# Clean build artifacts
68clean:
69 @echo "Cleaning..."
70 $(GOCLEAN)
71 rm -f $(BINARY_NAME)
72 rm -rf dist/
73
74# Format code
75fmt:
76 @echo "Formatting code..."
77 $(GOFMT) ./...
78
79# Download dependencies
80deps:
81 @echo "Downloading dependencies..."
82 $(GOMOD) download
83 $(GOMOD) tidy
84
85# Verify dependencies
86verify:
87 @echo "Verifying dependencies..."
88 $(GOMOD) verify
89
90# Show current version
91version:
92 @echo "Current version: $(VERSION)"
93 @echo "Git commit: $(GIT_COMMIT)"
94 @echo "Build date: $(BUILD_DATE)"
95
96# Bump patch version (0.1.0 -> 0.1.1)
97bump-patch:
98 @echo "Bumping patch version..."
99 @./scripts/bump-version.sh patch
100
101# Bump minor version (0.1.0 -> 0.2.0)
102bump-minor:
103 @echo "Bumping minor version..."
104 @./scripts/bump-version.sh minor
105
106# Bump major version (0.1.0 -> 1.0.0)
107bump-major:
108 @echo "Bumping major version..."
109 @./scripts/bump-version.sh major
110
111# Bump alpha version (0.1.0 -> 0.2.0-alpha.1)
112bump-alpha:
113 @echo "Bumping major version..."
114 @./scripts/bump-version.sh alpha
115
116# Create release
117release:
118 @echo "Creating release for version $(VERSION)..."
119 @./scripts/release.sh
120
121# ============================================================================
122# Docker Commands
123# ============================================================================
124
125# Build Docker image (local)
126docker-build:
127 @echo "Building Docker image $(DOCKER_FULL_IMAGE)..."
128 docker build \
129 --build-arg VERSION=$(VERSION) \
130 --build-arg GIT_COMMIT=$(GIT_COMMIT) \
131 --build-arg BUILD_DATE="$(BUILD_DATE)" \
132 -t $(DOCKER_FULL_IMAGE) \
133 -t $(DOCKER_LATEST) \
134 .
135 @echo "✓ Built: $(DOCKER_FULL_IMAGE)"
136
137# Build multi-platform and push
138docker-buildx:
139 @echo "Building multi-platform image $(DOCKER_FULL_IMAGE)..."
140 docker buildx build \
141 --platform $(DOCKER_PLATFORMS) \
142 --build-arg VERSION=$(VERSION) \
143 --build-arg GIT_COMMIT=$(GIT_COMMIT) \
144 --build-arg BUILD_DATE="$(BUILD_DATE)" \
145 --tag $(DOCKER_FULL_IMAGE) \
146 --tag $(DOCKER_LATEST) \
147 --push \
148 .
149 @echo "✓ Built and pushed: $(DOCKER_FULL_IMAGE) ($(DOCKER_PLATFORMS))"
150
151# Push Docker image
152docker-push:
153 @echo "Pushing Docker image..."
154 docker push $(DOCKER_FULL_IMAGE)
155 docker push $(DOCKER_LATEST)
156 @echo "✓ Pushed: $(DOCKER_FULL_IMAGE)"
157
158# Run Docker container as CLI
159docker-run:
160 @docker run --rm -v $(PWD)/data:/data $(DOCKER_FULL_IMAGE) plcbundle-go $(CMD)
161
162# Shortcuts
163docker-info:
164 @docker run --rm -v $(PWD)/data:/data $(DOCKER_FULL_IMAGE) plcbundle-go info
165
166docker-fetch:
167 @docker run --rm -v $(PWD)/data:/data $(DOCKER_FULL_IMAGE) plcbundle-go fetch
168
169docker-verify:
170 @docker run --rm -v $(PWD)/data:/data $(DOCKER_FULL_IMAGE) plcbundle-go verify
171
172# Run as server
173docker-serve:
174 docker run --rm -it -p 8080:8080 -v $(PWD)/data:/data $(DOCKER_FULL_IMAGE) plcbundle-go serve --host 0.0.0.0
175
176# Open shell
177docker-shell:
178 docker run --rm -it -v $(PWD)/data:/data $(DOCKER_FULL_IMAGE) sh
179
180# Clean Docker artifacts
181docker-clean:
182 @echo "Cleaning Docker images..."
183 docker rmi $(DOCKER_FULL_IMAGE) $(DOCKER_LATEST) 2>/dev/null || true
184 docker image prune -f
185
186# ============================================================================
187# Help
188# ============================================================================
189
190help:
191 @echo "Available targets:"
192 @echo ""
193 @echo "Build & Install:"
194 @echo " make build - Build the CLI tool"
195 @echo " make install - Install CLI tool globally"
196 @echo " make clean - Clean build artifacts"
197 @echo ""
198 @echo "Development:"
199 @echo " make test - Run tests"
200 @echo " make test-coverage - Run tests with coverage"
201 @echo " make fmt - Format code"
202 @echo " make deps - Download dependencies"
203 @echo ""
204 @echo "Release:"
205 @echo " make version - Show current version"
206 @echo " make bump-patch - Bump patch (0.1.0 -> 0.1.1)"
207 @echo " make bump-minor - Bump minor (0.1.0 -> 0.2.0)"
208 @echo " make bump-major - Bump major (0.1.0 -> 1.0.0)"
209 @echo " make release - Push tag to trigger release"
210 @echo ""
211 @echo "Docker:"
212 @echo " make docker-build - Build image (current platform)"
213 @echo " make docker-buildx - Build multi-platform and push"
214 @echo " make docker-run - Run CLI (CMD='info')"
215 @echo " make docker-info - Show bundle info"
216 @echo " make docker-serve - Run as server"
217 @echo " make docker-shell - Open shell"
218 @echo ""