go-shout/Makefile
2026-03-10 16:30:28 -07:00

54 lines
1.4 KiB
Makefile

.PHONY: build test unit integration clean dist release
VERSION ?= $(shell git describe --tags --always --dirty)
LDFLAGS := -ldflags "-s -w -X main.version=$(VERSION)"
GITEA_URL := https://git.nose.space
REPO := defunkt/go-shout
build:
go build $(LDFLAGS) -o shout .
test: unit integration
unit:
go test ./...
integration: build
./shout test
clean:
rm -f shout
rm -rf dist
dist: clean
GOOS=darwin GOARCH=arm64 go build $(LDFLAGS) -o dist/shout-darwin-arm64 .
GOOS=linux GOARCH=amd64 go build $(LDFLAGS) -o dist/shout-linux-amd64 .
release: dist
@test -n "$(TAG)" || (echo "usage: make release TAG=v0.1.0" && exit 1)
git tag $(TAG)
git push origin $(TAG)
@echo "Creating release $(TAG)..."
@RELEASE_ID=$$(curl -sf \
-X POST \
-H "Authorization: token $${GITEA_TOKEN}" \
-H "Content-Type: application/json" \
-d '{"tag_name":"$(TAG)","name":"$(TAG)"}' \
"$(GITEA_URL)/api/v1/repos/$(REPO)/releases" | \
python3 -c "import sys,json; print(json.load(sys.stdin)['id'])") && \
for f in dist/shout-*; do \
echo "Uploading $$f..."; \
curl -sf \
-X POST \
-H "Authorization: token $${GITEA_TOKEN}" \
-F "attachment=@$$f" \
"$(GITEA_URL)/api/v1/repos/$(REPO)/releases/$$RELEASE_ID/assets?name=$$(basename $$f)" > /dev/null; \
done
@echo "Released $(TAG): $(GITEA_URL)/$(REPO)/releases/tag/$(TAG)"
install: build
sudo cp ./shout /usr/local/bin
uninstall:
sudo rm /usr/local/bin/shout