.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