66 lines
2.1 KiB
Makefile
66 lines
2.1 KiB
Makefile
BINARY := unitdore
|
|
INSTALL_DIR := /usr/bin
|
|
CONFIG_DIR := /etc/unitdore
|
|
VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")
|
|
LDFLAGS := -ldflags "-X github.com/warkanum/unitdore/cmd.version=$(VERSION)"
|
|
|
|
.PHONY: all build install uninstall test lint clean release-version
|
|
|
|
all: build
|
|
|
|
## build: compile the binary
|
|
build:
|
|
go build $(LDFLAGS) -o $(BINARY) .
|
|
|
|
## install: install binary, man page, and create config dir
|
|
install: build
|
|
install -Dm755 $(BINARY) $(INSTALL_DIR)/$(BINARY)
|
|
install -Dm644 docs/unitdore.1 /usr/share/man/man1/unitdore.1
|
|
mkdir -p $(CONFIG_DIR)
|
|
@echo "Installed to $(INSTALL_DIR)/$(BINARY)"
|
|
@echo "Config dir: $(CONFIG_DIR)"
|
|
|
|
## uninstall: remove binary and man page
|
|
uninstall:
|
|
rm -f $(INSTALL_DIR)/$(BINARY)
|
|
rm -f /usr/share/man/man1/unitdore.1
|
|
@echo "Removed $(INSTALL_DIR)/$(BINARY)"
|
|
|
|
## test: run all unit tests
|
|
test:
|
|
go test ./... -v
|
|
|
|
## test-short: run tests without verbose output
|
|
test-short:
|
|
go test ./...
|
|
|
|
## lint: run go vet
|
|
lint:
|
|
go vet ./...
|
|
|
|
## clean: remove built binary
|
|
clean:
|
|
rm -f $(BINARY)
|
|
|
|
## release-version: bump patch version, update source versions, commit, tag, and push
|
|
release-version:
|
|
@CURRENT=$$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0"); \
|
|
MAJOR=$$(echo $$CURRENT | sed 's/v\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1/'); \
|
|
MINOR=$$(echo $$CURRENT | sed 's/v\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\2/'); \
|
|
PATCH=$$(echo $$CURRENT | sed 's/v\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\3/'); \
|
|
NEXT="v$$MAJOR.$$MINOR.$$((PATCH + 1))"; \
|
|
PKGVER="$$MAJOR.$$MINOR.$$((PATCH + 1))"; \
|
|
echo "Current: $$CURRENT → Next: $$NEXT"; \
|
|
sed -i "s/^var version = .*/var version = \"$$PKGVER\"/" cmd/root.go; \
|
|
sed -i "s/^pkgver=.*/pkgver=$$PKGVER/" pkg/arch/PKGBUILD; \
|
|
sed -i "s/^Version:.*/Version: $$PKGVER/" pkg/centos/unitdore.spec; \
|
|
git add cmd/root.go pkg/arch/PKGBUILD pkg/centos/unitdore.spec; \
|
|
git commit -m "chore(release): update package version to $$PKGVER"; \
|
|
git tag -a "$$NEXT" -m "Release $$NEXT"; \
|
|
git push origin HEAD "$$NEXT"; \
|
|
echo "Pushed $$NEXT — release workflow triggered"
|
|
|
|
## help: show this help
|
|
help:
|
|
@grep -E '^## ' Makefile | sed 's/## / /'
|