[DEPRECATED] Go implementation of plcbundle
at main 6.3 kB view raw
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 ""