forgejo-mcp/Makefile
Christoph Görn 4bae9727c1
chore: 🔧 add make check-demos target
Mirror the `just check-demos` recipe as a Make target so the
anchored-demo checker is reachable from the repo's canonical build
tool (Makefile), not only the auxiliary justfile. Both delegate to
scripts/ci/check-spec-demo-anchors.sh.
2026-06-02 00:17:01 +02:00

59 lines
2.1 KiB
Makefile

GO ?= go
EXECUTABLE := forgejo-mcp
COMMIT ?= $(shell git rev-parse --short HEAD)
VERSION ?= $(shell v=$$(git describe --tags --exact-match 2>/dev/null) && echo "$$v" | sed 's/^v//' || echo "$$(git describe --tags --abbrev=0 2>/dev/null | sed 's/^v//')-dev+$(COMMIT)")
LDFLAGS := -X "main.Version=$(VERSION)"
.DEFAULT_GOAL := help
## help: show available make targets
.PHONY: help
help:
@echo "Usage: make <target>"
@echo ""
@echo "Targets:"
@awk 'BEGIN {FS=":"} /^## / {sub(/^## /,""); printf " \033[36m%-12s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)
## build: build the forgejo-mcp binary
.PHONY: build
build:
$(GO) build -v -ldflags '-s -w $(LDFLAGS)' -o $(EXECUTABLE)
## vendor: tidy and verify module dependencies
.PHONY: vendor
vendor:
@echo 'Tidying and verifying module dependencies...'
go mod tidy
go mod verify
## container: build container image using podman
IMAGE_NAME ?= forgejo-mcp
IMAGE_TAG ?= $(shell git describe --tags --abbrev=0 2>/dev/null | sed 's/^v//' || echo "latest")
.PHONY: container
container:
podman build --build-arg VERSION=$(VERSION) -t $(IMAGE_NAME):$(IMAGE_TAG) -f Containerfile .
## mcpb: build the Claude Desktop Extension (.mcpb) for the host platform
GOOS ?= $(shell $(GO) env GOOS)
GOARCH ?= $(shell $(GO) env GOARCH)
MCPB_OUT ?= dist/forgejo-mcp_$(VERSION)_$(GOOS)_$(GOARCH).mcpb
.PHONY: mcpb
mcpb: build
@command -v jq >/dev/null || { echo "jq is required" >&2; exit 1; }
@command -v npx >/dev/null || { echo "npx (Node.js) is required" >&2; exit 1; }
@mkdir -p dist extension/bin
cp $(EXECUTABLE) extension/bin/forgejo-mcp
chmod +x extension/bin/forgejo-mcp
cp extension/manifest.json extension/manifest.json.orig
@trap 'mv -f extension/manifest.json.orig extension/manifest.json 2>/dev/null || true' EXIT; \
jq --arg v "$(VERSION)" '.version=$$v' extension/manifest.json > extension/manifest.json.tmp && \
mv extension/manifest.json.tmp extension/manifest.json && \
npx -y @anthropic-ai/mcpb pack extension/ "$(MCPB_OUT)"
@echo "Built $(MCPB_OUT)"
## check-demos: validate anchored Showboat demos against their specs
.PHONY: check-demos
check-demos:
./scripts/ci/check-spec-demo-anchors.sh