DESTDIR?= PREFIX?=/usr/local EXECUTABLE?=fail2ban_exporter # List make commands .PHONY: ls ls: cat Makefile | grep "^[a-zA-Z#].*" | cut -d ":" -f 1 | sed s';#;\n#;'g # Download dependencies .PHONY: download download: go mod download # Update project dependencies .PHONY: update update: go get -u go mod download go mod tidy # Run project tests .PHONY: test test: download go test ./... -v -race # Look for "suspicious constructs" in source code .PHONY: vet vet: download go vet ./... # Format code .PHONY: fmt fmt: download go mod tidy go fmt ./... # Check for unformatted go code .PHONY: check/fmt check/fmt: download test -z $(shell gofmt -l .) # Build project .PHONY: build build: CGO_ENABLED=0 go build \ -ldflags "\ -X main.version=${shell git describe --tags} \ -X main.commit=${shell git rev-parse HEAD} \ -X main.date=${shell date --iso-8601=seconds} \ -X main.builtBy=manual \ " \ -trimpath \ -o ${EXECUTABLE} \ exporter.go # Build project docker container .PHONY: build/docker build/docker: build docker build -t ${EXECUTABLE} . .PHONY: install install: build install -D --mode 0644 systemd/systemd.service ${DESTDIR}/usr/lib/systemd/system/${EXECUTABLE}.service install -D --mode 0755 --target-directory ${DESTDIR}${PREFIX}/bin/${EXECUTABLE} ${EXECUTABLE} # NOTE: Set restrict file permissions by default to protect optional basic auth credentials install -D --mode 0600 --target-directory ${DESTDIR}/etc/conf.d ${EXECUTABLE} install -D --mode 0755 --target-directory ${DESTDIR}${PREFIX}/share/licenses/LICENSE LICENSE