54 lines
1.4 KiB
Makefile
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
|