99 lines
2.4 KiB
Makefile
99 lines
2.4 KiB
Makefile
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
|
|
|
|
find-tests:
|
|
@find . -name "*_test.go"
|
|
|
|
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 \
|
|
--add-comments-tag="translators" \
|
|
$$(find . -name "*.go" -not -path "*vendor*" | sort)
|
|
|
|
.PHONY: update-pot-po-metadata
|
|
update-pot-po-metadata:
|
|
@sed -i "s/charset=CHARSET/charset=UTF-8/g" pkg/i18n/locales/*.po pkg/i18n/locales/*.pot
|
|
|
|
.PHONY: build-mo
|
|
build-mo:
|
|
@set -eu; \
|
|
for lang in $(POFILES); do \
|
|
msgfmt $$lang -o $$(echo $$lang | sed 's/.po/.mo/g') --statistics; \
|
|
done
|