Renames the product across the codebase: Go module path, config/data paths, keychain service name, export file extension, build tooling, docs, and UI text. Sidebar brand mark now reads ">_ AlchementaryLink" with "Alchementary" in the connection-group gold accent colour, and the window title is "Alchementary Link". Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019T8bJS8BCtY5GeSG2HBj1n
90 lines
3.3 KiB
Makefile
90 lines
3.3 KiB
Makefile
.PHONY: all build build-compressed dev clean test test-cover lint install deps frontend-deps upx-check run package release help
|
|
|
|
# Resolve the Wails binary. Prefer wails on PATH; fall back to GOPATH/bin.
|
|
WAILS := $(or $(shell which wails 2>/dev/null),$(shell go env GOPATH)/bin/wails)
|
|
VERSION := $(shell git describe --tags --abbrev=0 2>/dev/null || echo dev)-$(shell git rev-parse --short HEAD 2>/dev/null || echo unknown)
|
|
LD_UPDATE_URL := $(if $(LINK_UPDATE_URL),-X github.com/andydixon/link/internal/api.appUpdateURL=$(LINK_UPDATE_URL),)
|
|
UPX_FLAGS ?=
|
|
LINK_FORCE_MACOS_UPX ?= 0
|
|
GOBIN_DIR := $(shell go env GOPATH)/bin
|
|
export PATH := $(GOBIN_DIR):$(PATH)
|
|
|
|
# Default target
|
|
all: build
|
|
|
|
# Install all dependencies
|
|
deps: frontend-deps
|
|
go mod download
|
|
|
|
upx-check:
|
|
@command -v upx >/dev/null 2>&1 || { echo "UPX is required for compressed builds. Install it first, for example: brew install upx"; exit 1; }
|
|
@if [ "$$(uname -s)" = "Darwin" ] && [ "$(LINK_FORCE_MACOS_UPX)" != "1" ]; then \
|
|
echo "UPX compression is disabled for macOS by default. Use ./release.sh for a zipped .app, or run LINK_FORCE_MACOS_UPX=1 UPX_FLAGS='--force-macos --best --no-color --no-progress' make build-compressed."; \
|
|
exit 1; \
|
|
fi
|
|
@if [ "$$(uname -s)" = "Darwin" ] && [ "$(LINK_FORCE_MACOS_UPX)" = "1" ] && ! printf '%s\n' "$(UPX_FLAGS)" | grep -q -- '--force-macos'; then \
|
|
echo "macOS UPX builds must pass --force-macos in UPX_FLAGS."; \
|
|
exit 1; \
|
|
fi
|
|
|
|
# Install frontend dependencies
|
|
frontend-deps:
|
|
cd frontend && npm install
|
|
|
|
# Development mode with hot reload
|
|
dev: deps
|
|
$(WAILS) dev
|
|
|
|
# Production build
|
|
build: deps
|
|
CGO_ENABLED=0 $(WAILS) build -trimpath -ldflags "-s -w -buildid= -X github.com/andydixon/link/internal/api.appVersion=$(VERSION) $(LD_UPDATE_URL)"
|
|
|
|
# Production build with UPX compression
|
|
build-compressed: deps upx-check
|
|
CGO_ENABLED=0 $(WAILS) build -trimpath -upx $(if $(UPX_FLAGS),-upxflags "$(UPX_FLAGS)",) -ldflags "-s -w -buildid= -X github.com/andydixon/link/internal/api.appVersion=$(VERSION) $(LD_UPDATE_URL)"
|
|
|
|
# Run tests
|
|
test:
|
|
go test ./... -v -count=1
|
|
|
|
# Run tests with coverage
|
|
test-cover:
|
|
go test ./... -v -count=1 -coverprofile=coverage.out
|
|
go tool cover -html=coverage.out -o coverage.html
|
|
|
|
# Clean build artefacts
|
|
clean:
|
|
rm -rf build/bin
|
|
rm -rf frontend/node_modules
|
|
rm -rf frontend/src/js/lib
|
|
rm -rf frontend/src/css/lib
|
|
go clean -testcache
|
|
|
|
# Lint (requires golangci-lint)
|
|
lint:
|
|
golangci-lint run ./...
|
|
|
|
# Package for distribution
|
|
package: build
|
|
@echo "Binary built at build/bin/"
|
|
|
|
# Build and package release artefacts for all platforms
|
|
release:
|
|
./release.sh
|
|
|
|
# Help
|
|
help:
|
|
@echo "Alchementary Link — Build Targets"
|
|
@echo ""
|
|
@echo " make deps — Install all dependencies"
|
|
@echo " make dev — Run in development mode with hot reload"
|
|
@echo " make build — Production build"
|
|
@echo " make build-compressed — Production build with UPX compression"
|
|
@echo " make test — Run tests"
|
|
@echo " make test-cover — Run tests with coverage report"
|
|
@echo " make clean — Clean build artefacts"
|
|
@echo " make lint — Run linter (requires golangci-lint)"
|
|
@echo " make package — Build and package for distribution"
|
|
@echo " make release — Build multi-platform release artefacts"
|
|
@echo " make help — Show this help"
|