mfer/Makefile

83 lines
2.1 KiB
Makefile
Raw Normal View History

2022-12-04 18:55:22 +00:00
export DOCKER_BUILDKIT := 1
2022-12-05 10:40:57 +00:00
export PROGRESS_NO_TRUNC := 1
2022-02-02 06:45:37 +00:00
GOPATH := $(shell go env GOPATH)
export PATH := $(PATH):$(GOPATH)/bin
PROTOC_GEN_GO := $(GOPATH)/bin/protoc-gen-go
2022-12-05 10:40:57 +00:00
SOURCEFILES := mfer/*.go mfer/*.proto internal/*/*.go cmd/*/*.go go.mod go.sum
2022-02-02 05:43:48 +00:00
ARCH := $(shell uname -m)
2022-12-05 22:59:08 +00:00
GITREV_BUILD := $(shell bash $(PWD)/bin/gitrev.sh)
2022-12-04 18:55:22 +00:00
APPNAME := mfer
2022-12-05 22:59:08 +00:00
VERSION := 0.1.0
2022-12-04 18:55:22 +00:00
export DOCKER_IMAGE_CACHE_DIR := $(HOME)/Library/Caches/Docker/$(APPNAME)-$(ARCH)
2022-12-05 22:59:08 +00:00
GOLDFLAGS += -X main.Version=$(VERSION)
GOLDFLAGS += -X main.Gitrev=$(GITREV_BUILD)
2022-02-02 05:43:48 +00:00
GOFLAGS := -ldflags "$(GOLDFLAGS)"
2022-12-05 22:59:08 +00:00
.PHONY: docker default run ci test fixme
2022-12-05 10:40:57 +00:00
default: fmt test
2022-02-02 04:12:32 +00:00
run: ./mfer.cmd
2022-02-02 05:43:48 +00:00
./$<
./$< gen --ignore-dotfiles
2022-12-05 10:40:57 +00:00
ci: test
2022-12-05 22:59:08 +00:00
test: $(SOURCEFILES) mfer/mf.pb.go
2022-12-04 09:19:21 +00:00
go test -v --timeout 3s ./...
$(PROTOC_GEN_GO):
2022-12-05 10:40:57 +00:00
test -e $(PROTOC_GEN_GO) || go install -v google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.1
fixme:
@grep -nir fixme . | grep -v Makefile
2022-02-02 06:45:37 +00:00
devprereqs:
2022-02-02 05:43:48 +00:00
which gofumpt || go install -v mvdan.cc/gofumpt@latest
2022-12-05 10:40:57 +00:00
which golangci-lint || go install -v github.com/golangci/golangci-lint/cmd/golangci-lint@v1.50.1
2022-02-02 05:36:20 +00:00
2022-12-05 22:59:08 +00:00
mfer/mf.pb.go: mfer/mf.proto
cd mfer && go generate .
2022-12-05 22:59:08 +00:00
mfer.cmd: $(SOURCEFILES) mfer/mf.pb.go
protoc --version
cd cmd/mfer && go build -tags urfave_cli_no_docs -o ../../mfer.cmd $(GOFLAGS) .
clean:
2022-12-08 21:40:33 +00:00
rm -rfv mfer/*.pb.go mfer.cmd cmd/mfer/mfer *.dockerimage
2021-11-03 10:49:34 +00:00
2022-12-08 21:40:33 +00:00
fmt: mfer/mf.pb.go
gofumpt -l -w mfer internal cmd
2022-02-02 05:36:20 +00:00
golangci-lint run --fix
-prettier -w *.json
-prettier -w *.md
2022-02-02 05:36:20 +00:00
lint:
golangci-lint run
sh -c 'test -z "$$(gofmt -l .)"'
2022-12-08 21:40:33 +00:00
docker: sneak-mfer.$(ARCH).tzst.dockerimage
2022-12-05 10:40:57 +00:00
2022-12-08 21:40:33 +00:00
sneak-mfer.$(ARCH).tzst.dockerimage: $(SOURCEFILES) vendor.tzst modcache.tzst
2022-12-05 22:59:08 +00:00
docker build --progress plain --build-arg GITREV=$(GITREV_BUILD) -t sneak/mfer .
2022-12-05 10:40:57 +00:00
docker save sneak/mfer | pv | zstdmt -19 > $@
du -sh $@
2022-12-04 18:55:22 +00:00
godoc:
open http://127.0.0.1:6060
godoc -http=:6060
2022-12-08 18:25:30 +00:00
2022-12-08 21:40:33 +00:00
vendor.tzst: go.mod go.sum
go mod tidy
2022-12-08 18:25:30 +00:00
go mod vendor
2022-12-08 21:40:33 +00:00
cd vendor && tar -c . | pv | zstdmt -19 > $(PWD)/$@.tmp
2022-12-08 18:25:30 +00:00
rm -rf vendor
2022-12-08 21:40:33 +00:00
mv $@.tmp $@
modcache.tzst: go.mod go.sum
go mod tidy
cd $(HOME)/go/pkg && chmod -R u+rw . && rm -rf mod sumdb
go mod download -x
cd $(shell go env GOMODCACHE) && tar -c . | pv | zstdmt -19 > $(PWD)/$@.tmp
mv $@.tmp $@