ABRA := ./cmd/abra KADABRA := ./cmd/kadabra COMMIT := $(shell git rev-list -1 HEAD) GOPATH := $(shell go env GOPATH) GOVERSION := 1.24 LDFLAGS := "-X 'main.Commit=$(COMMIT)'" DIST_LDFLAGS := $(LDFLAGS)" -s -w" GCFLAGS := "all=-l -B" DOMAIN := abra POFILES := $(wildcard pkg/i18n/locales/*.po) MOFILES := $(patsubst %.po,%.mo,$(POFILES)) LINGUAS := $(basename $(POFILES)) export GOPRIVATE=coopcloud.tech # NOTE(d1): default `make` optimised for Abra hacking all: format check build-abra test run-abra: @go run -gcflags=$(GCFLAGS) -ldflags=$(LDFLAGS) $(ABRA) run-kadabra: @go run -gcflags=$(GCFLAGS) -ldflags=$(LDFLAGS) $(KADABRA) install-abra: @go install -gcflags=$(GCFLAGS) -ldflags=$(LDFLAGS) $(ABRA) install-kadabra: @go install -gcflags=$(GCFLAGS) -ldflags=$(LDFLAGS) $(KADABRA) install: install-abra install-kadabra build-abra: @go build -v -gcflags=$(GCFLAGS) -ldflags=$(DIST_LDFLAGS) $(ABRA) build-kadabra: @go build -v -gcflags=$(GCFLAGS) -ldflags=$(DIST_LDFLAGS) $(KADABRA) build: build-abra build-kadabra build-docker-abra: @docker run -it -v $(PWD):/abra golang:$(GOVERSION) \ bash -c 'cd /abra; ./scripts/docker/build.sh' build-docker: build-docker-abra clean: @rm '$(GOPATH)/bin/abra' @rm '$(GOPATH)/bin/kadabra' format: @gofmt -s -w $$(find . -type f -name '*.go' | grep -v "/vendor/") check: @test -z $$(gofmt -l $$(find . -type f -name '*.go' | grep -v "/vendor/")) || \ (echo "gofmt: formatting issue - run 'make format' to resolve" && exit 1) test: @go test ./... -cover -v loc: @find . -name "*.go" | xargs wc -l deps: @go get -t -u ./... .PHONY: i18n i18n: update-pot update-pot-po-metadata update-po build-mo .PHONY: update-po update-po: @set -eu; \ for lang in $(LINGUAS); do \ msgmerge --backup=none -U $$lang.po pkg/i18n/locales/$(DOMAIN).pot; \ done .PHONY: update-pot update-pot: @xgettext-go \ -o pkg/i18n/locales/$(DOMAIN).pot \ --keyword=i18n.G \ --sort-output \ $$(find . -name "*.go" -not -path "*vendor*") .PHONY: update-pot-po-metadata update-pot-po-metadata: @sed -i "s/charset=CHARSET/charset=UTF-8/g" pkg/i18n/locales/*.po* .PHONY: build-mo build-mo: @set -eu; \ for lang in $(POFILES); do \ msgfmt $$lang -o $$(echo $$lang | sed 's/.po/.mo/g') --statistics; \ done