62 lines
1.4 KiB
Makefile
62 lines
1.4 KiB
Makefile
VERSION ?= dev
|
|
LDFLAGS := -ldflags="-s -w -X main.version=$(VERSION)"
|
|
|
|
.PHONY: build test test-short lint fmt vet tidy run docker clean
|
|
|
|
build:
|
|
CGO_ENABLED=0 go build $(LDFLAGS) -o bin/tomswallapi ./cmd/tomswallapi
|
|
|
|
test:
|
|
go test ./...
|
|
|
|
# Tests that self-skip container-backed DB cases when Docker is unavailable.
|
|
test-short:
|
|
go test -short ./...
|
|
|
|
lint: vet
|
|
gofmt -l -d .
|
|
|
|
fmt:
|
|
gofmt -w .
|
|
|
|
vet:
|
|
go vet ./...
|
|
|
|
tidy:
|
|
go mod tidy
|
|
|
|
run: build
|
|
./bin/tomswallapi
|
|
|
|
docker:
|
|
docker build --build-arg VERSION=$(VERSION) -t tomswallapi:$(VERSION) .
|
|
|
|
clean:
|
|
rm -rf bin
|
|
|
|
# Version-bump targets: compute the next semver tag from the latest v* tag,
|
|
# then create and push it. The v* tag triggers the docker release pipeline.
|
|
.PHONY: patch minor major
|
|
patch: ; @$(MAKE) bump PART=patch
|
|
minor: ; @$(MAKE) bump PART=minor
|
|
major: ; @$(MAKE) bump PART=major
|
|
|
|
.PHONY: bump
|
|
bump:
|
|
@current=$$(git tag -l 'v*' --sort=-v:refname | head -1); \
|
|
current=$${current:-v0.0.0}; \
|
|
v=$${current#v}; \
|
|
major=$$(echo $$v | cut -d. -f1); \
|
|
minor=$$(echo $$v | cut -d. -f2); \
|
|
patch=$$(echo $$v | cut -d. -f3); \
|
|
case "$(PART)" in \
|
|
major) major=$$((major+1)); minor=0; patch=0;; \
|
|
minor) minor=$$((minor+1)); patch=0;; \
|
|
patch) patch=$$((patch+1));; \
|
|
*) echo "PART must be major|minor|patch"; exit 1;; \
|
|
esac; \
|
|
next="v$$major.$$minor.$$patch"; \
|
|
echo "Tagging $$next (was $$current)"; \
|
|
git tag -a "$$next" -m "Release $$next"; \
|
|
git push origin "$$next"
|