Switches CLI flag parsing from Go's stdlib `flag` to spf13/pflag so `--project` (and the internal `--socket` / `--identity` / `--scenario` flags) are the only accepted form; single-hyphen long flags like `-project` are now rejected. Help output renders the canonical `--` form. Adds `patterm --version`, which prints the build version, short commit, and build date (e.g. `patterm v0.0.1 (commit abc1234, built 2026-05-14)`). The version string is injected at build time — `make patterm` derives it from `git describe --tags --always --dirty`, and the release workflow injects the pushed tag. Commit/date come from the Go toolchain's embedded VCS info via `runtime/debug.ReadBuildInfo`, so no manual bumping is required.
45 lines
1.5 KiB
Makefile
45 lines
1.5 KiB
Makefile
SHELL := /bin/bash
|
|
|
|
ROOT := $(abspath .)
|
|
VENDOR := $(ROOT)/third_party/libghostty-vt
|
|
SOURCE := $(VENDOR)/source
|
|
INSTALL := $(VENDOR)/install
|
|
COMMIT := $(shell cat $(VENDOR)/COMMIT)
|
|
|
|
.PHONY: deps deps-fetch deps-build clean-deps spike patterm test
|
|
|
|
# `make deps` fetches and builds libghostty-vt at the pinned commit.
|
|
# Re-runs are idempotent on success; touch $(VENDOR)/COMMIT to force a rebuild.
|
|
deps: $(INSTALL)/lib/libghostty-vt.a
|
|
|
|
$(SOURCE)/.git/HEAD:
|
|
@echo ">> cloning ghostty-org/ghostty @ $(COMMIT)"
|
|
@rm -rf $(SOURCE)
|
|
@git clone --filter=blob:none https://github.com/ghostty-org/ghostty.git $(SOURCE)
|
|
@cd $(SOURCE) && git checkout --detach $(COMMIT)
|
|
|
|
deps-fetch: $(SOURCE)/.git/HEAD
|
|
|
|
$(INSTALL)/lib/libghostty-vt.a: $(SOURCE)/.git/HEAD
|
|
@command -v zig >/dev/null || { echo "ERROR: zig not on PATH (need >=0.15.2 to build libghostty-vt)"; exit 1; }
|
|
@echo ">> building libghostty-vt with zig"
|
|
@cd $(SOURCE) && zig build -Demit-lib-vt --prefix $(INSTALL)
|
|
@test -f $(INSTALL)/lib/libghostty-vt.a || { echo "ERROR: expected static lib at $(INSTALL)/lib/libghostty-vt.a"; exit 1; }
|
|
@echo ">> libghostty-vt installed under $(INSTALL)"
|
|
|
|
deps-build: $(INSTALL)/lib/libghostty-vt.a
|
|
|
|
clean-deps:
|
|
rm -rf $(SOURCE) $(INSTALL)
|
|
|
|
VERSION ?= $(shell git describe --tags --always --dirty 2>/dev/null || echo dev)
|
|
|
|
spike: deps
|
|
go build -o ./bin/spike ./cmd/spike
|
|
|
|
patterm: deps
|
|
go build -ldflags "-X main.version=$(VERSION)" -o ./bin/patterm ./cmd/patterm
|
|
|
|
test: deps
|
|
go test ./...
|