Fix Makefile
This commit is contained in:
父節點
ef4f1b7b67
當前提交
c267b36e9e
111
Makefile
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
|
||||
|
|
|
@ -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
|
載入中…
新增問題並參考