Fix Makefile

This commit is contained in:
James Mills 2022-03-20 08:04:05 +10:00
父節點 ef4f1b7b67
當前提交 c267b36e9e
沒有發現已知的金鑰在資料庫的簽署中
GPG 金鑰 ID: AC4C014F1440EBD6
共有 4 個檔案被更改,包括 204 行新增37 行删除

111
Makefile
查看文件

@ -1,56 +1,93 @@
.PHONY: dev build image test deps clean
-include environ.inc
.PHONY: deps dev build install image release test clean tr tr-merge
CGO_ENABLED=0
COMMIT=`git rev-parse --short HEAD`
LIBRARY=msgbus
SERVER=msgbusd
CLIENT=msgbus
REPO?=prologic/$(LIBRARY)
TAG?=latest
BUILD?=-dev
export CGO_ENABLED=0
VERSION=$(shell git describe --abbrev=0 --tags 2>/dev/null || echo "$VERSION")
COMMIT=$(shell git rev-parse --short HEAD || echo "$COMMIT")
BRANCH=$(shell git rev-parse --abbrev-ref HEAD)
GOCMD=go
GOVER=$(shell go version | grep -o -E 'go1\.17\.[0-9]+')
DESTDIR=/usr/local/bin
BUILD_TAGS="netgo static_build"
BUILD_LDFLAGS="-w -X github.com/$(REPO).GitCommit=$(COMMIT) -X github.com/$(REPO)/Build=$(BUILD)"
ifeq ($(BRANCH), main)
IMAGE := prologic/msgbus
TAG := latest
else
IMAGE := prologic/msgbus
TAG := dev
endif
all: dev
all: preflight build
dev: build
@./cmd/$(SERVER)/$(SERVER)
preflight:
@./preflight.sh
deps:
@go get ./...
build:
@echo " -> Building $(SERVER) $(TAG)$(BUILD) ..."
@cd cmd/$(SERVER) && \
go build -tags $(BUILD_TAGS) -installsuffix netgo \
-ldflags $(BUILD_LDFLAGS) .
@echo "Built $$(./cmd/$(SERVER)/$(SERVER) -v)"
@echo
@echo " -> Building $(CLIENT) $(TAG)$(BUILD) ..."
@cd cmd/$(CLIENT) && \
go build -tags $(BUILD_TAGS) -installsuffix netgo \
-ldflags $(BUILD_LDFLAGS) .
@echo "Built $$(./cmd/$(CLIENT)/$(CLIENT) --version)"
dev : DEBUG=1
dev : build
@./msgbus -v
@./msgbusd -v
cli:
@$(GOCMD) build -tags "netgo static_build" -installsuffix netgo \
-ldflags "-w \
-X $(shell go list).Version=$(VERSION) \
-X $(shell go list).Commit=$(COMMIT)" \
./cmd/msgbus/
server: generate
@$(GOCMD) build $(FLAGS) -tags "netgo static_build" -installsuffix netgo \
-ldflags "-w \
-X $(shell go list).Version=$(VERSION) \
-X $(shell go list).Commit=$(COMMIT)" \
./cmd/msgbusd/...
build: cli server
generate:
@if [ x"$(DEBUG)" = x"1" ]; then \
echo 'Running in debug mode...'; \
fi
install: build
@install -D -m 755 ./cmd/$(CLIENT)/$(CLIENT) $(DESTDIR)/$(CLIENT)
@install -D -m 755 ./cmd/$(SERVER)/$(SERVER) $(DESTDIR)/$(SERVER)
@install -D -m 755 msgbusd $(DESTDIR)/msgbusd
@install -D -m 755 msgbus $(DESTDIR)/msgbus
image:
@docker build --build-arg TAG=$(TAG) --build-arg BUILD=$(BUILD) -t $(REPO):$(TAG) .
@echo "Image created: $(REPO):$(TAG)"
ifeq ($(PUBLISH), 1)
image: generate
@docker build --build-arg VERSION="$(VERSION)" --build-arg COMMIT="$(COMMIT)" -t $(IMAGE):$(TAG) .
@docker push $(IMAGE):$(TAG)
else
image: generate
@docker build --build-arg VERSION="$(VERSION)" --build-arg COMMIT="$(COMMIT)" -t $(IMAGE):$(TAG) .
endif
profile:
@go test -cpuprofile cpu.prof -memprofile mem.prof -v -bench ./...
release: generate
@./tools/release.sh
bench:
@go test -v -bench ./...
fmt:
@$(GOCMD) fmt ./...
test:
@go test -v -cover -coverprofile=coverage.txt -covermode=atomic -coverpkg=./... -race ./...
@CGO_ENABLED=1 $(GOCMD) test -v -cover -race ./...
coverage:
@CGO_ENABLED=1 $(GOCMD) test -v -cover -race -cover -coverprofile=coverage.out ./...
@$(GOCMD) tool cover -html=coverage.out
bench: bench-yarn.txt
go test -race -benchtime=1x -cpu 16 -benchmem -bench "^(Benchmark)" go.yarn.social/types
bench-yarn.txt:
curl -s https://twtxt.net/user/prologic/twtxt.txt > $@
clean:
@git clean -f -d -X
tr:
@goi18n merge -outdir ./internal/langs ./internal/langs/active.*.toml
tr-merge:
@goi18n merge -outdir ./internal/langs ./internal/langs/active.*.toml ./internal/langs/translate.*.toml

二進制
msgbus Executable file

未顯示二進位檔案。

二進制
msgbusd Executable file

未顯示二進位檔案。

130
preflight.sh Executable file
查看文件

@ -0,0 +1,130 @@
#!/bin/sh
set -e
color() {
fg="$1"
bg="${2}"
ft="${3:-0}"
printf "\33[%s;%s;%s" "$ft" "$fg" "$bg"
}
color_reset() {
printf "\033[0m"
}
ok() {
if [ -t 1 ]; then
printf "%s[ OK ]%s\n" "$(color 37 42m 1)" "$(color_reset)"
else
printf "%s\n" "[ OK ]"
fi
}
err() {
if [ -t 1 ]; then
printf "%s[ ERR ]%s\n" "$(color 37 41m 1)" "$(color_reset)"
else
printf "%s\n" "[ ERR ]"
fi
}
run() {
retval=0
logfile="$(mktemp -t "run-XXXXXX")"
if "$@" 2> "$logfile"; then
ok
else
retval=$?
err
cat "$logfile" || true
fi
rm -rf "$logfile"
return $retval
}
progress() {
printf "%-40s" "$(printf "%s ... " "$1")"
}
log() {
printf "%s\n" "$1"
}
log2() {
printf "%s\n" "$1" 1>&2
}
error() {
log "ERROR: ${1}"
}
fail() {
log "FATAL: ${1}"
exit 1
}
check_goversion() {
progress "Checking Go version"
if ! command -v go > /dev/null 2>&1; then
log2 "Cannot find the Go compiler"
return 1
fi
gover="$(go version | grep -o -E 'go[0-9]+\.[0-9]+(\.[0-9]+)?')"
if ! go version | grep -E 'go1\.1[78](\.[0-9]+)?' > /dev/null; then
log2 "Go 1.17+ is required, found ${gover}"
return 1
fi
return 0
}
check_path() {
progress "Checking \$PATH"
gobin="$(eval "$(go env | grep GOBIN)")"
gopath="$(eval "$(go env | grep GOPATH)")"
if [ -n "$gobin" ] && ! echo "$PATH" | grep "$gobin" > /dev/null; then
log2 "\$GOBIN '$gobin' is not in your \$PATH"
return 1
fi
if [ -n "$gopath" ] && ! echo "$PATH" | grep "$gopath/bin" > /dev/null; then
log2 "\$GOPATH/bin '$gopath/bin' is not in your \$PATH"
return 1
fi
if ! echo "$PATH" | grep "$HOME/go/bin" > /dev/null; then
log2 "\$HOME/go/bin is not in your \$PATH"
return 1
fi
return 0
}
check_deps() {
progress "Checking deps"
return 0
}
steps="check_goversion check_path check_deps"
_main() {
for step in $steps; do
if ! run "$step"; then
fail "🙁 preflight failed"
fi
done
log "🥳 All Done! Ready to build, run: make build"
}
if [ -n "$0" ] && [ x"$0" != x"-bash" ]; then
_main "$@"
fi