Files
Datarush/Makefile
T

97 lines
2.4 KiB
Makefile

GOCMD=go
GOBUILD=$(GOCMD) build -trimpath -ldflags="-s -w"
GOTEST=$(GOCMD) test
BASE_BINARY_NAME=datarush
GW_BINARY_NAME=$(BASE_BINARY_NAME)-gw
MIGRATE_BINARY_NAME=$(BASE_BINARY_NAME)-migrate
AUTH_BINARY_NAME=$(BASE_BINARY_NAME)-auth
BINARY_DIR=bin
PROTOC=protoc
PROTO_DIR=api/proto
PROTO_FILE=${PROTO_DIR}/achievements.proto $(PROTO_DIR)/auth.proto $(PROTO_DIR)/competition.proto $(PROTO_DIR)/results.proto $(PROTO_DIR)/review.proto $(PROTO_DIR)/submission.proto $(PROTO_DIR)/task.proto $(PROTO_DIR)/user.proto
PROTO_OUT=.
.PHONY: install i generate gen generate-gw test build run migrate lint fmt format clean help codegen examples
install:
$(GOCMD) mod download
$(GOCMD) mod tidy
i: install
generate:
$(PROTOC) --version || (echo "protoc not found, install protoc"; exit 1)
$(PROTOC) --go_out=$(PROTO_OUT) --go-grpc_out=$(PROTO_OUT) \
$(PROTO_FILE)
gen: generate
generate-gw:
$(PROTOC) --version || (echo "protoc not found, install protoc"; exit 1)
$(PROTOC) --grpc-gateway_out=$(PROTO_OUT) --grpc-gateway_opt generate_unbound_methods=true \
$(PROTO_FILE)
test:
$(GOTEST) ./...
build-gw:
$(GOBUILD) -o ./$(BINARY_DIR)/$(GW_BINARY_NAME) ./cmd/gw
chmod +x ./$(BINARY_DIR)/$(GW_BINARY_NAME)
build-migrate:
$(GOBUILD) -o ./$(BINARY_DIR)/$(MIGRATE_BINARY_NAME) ./cmd/migrate
chmod +x ./$(BINARY_DIR)/$(MIGRATE_BINARY_NAME)
build-auth:
$(GOBUILD) -o ./$(BINARY_DIR)/$(AUTH_BINARY_NAME) ./cmd/auth
chmod +x ./$(BINARY_DIR)/$(AUTH_BINARY_NAME)
build: build-gw build-migrate build-auth
run:
./$(BINARY_DIR)/$(AUTH_BINARY_NAME) &
./$(BINARY_DIR)/$(GW_BINARY_NAME)
migrate: build-migrate
@cmd=$(word 2,$(MAKECMDGOALS)); \
if [ -z "$$cmd" ]; then \
echo "Usage: make migrate <command>"; \
exit 1; \
fi; \
./$(BINARY_DIR)/$(MIGRATE_BINARY_NAME) -cmd $$cmd
lint:
golangci-lint run -c .golangci.yaml ./...
fmt:
golangci-lint fmt -c .golangci.yaml ./...
format: fmt
clean:
rm -rf bin/*
help:
@echo "Help:"
@echo " install - Install all deps using go mod download"
@echo " i"
@echo " generate - Generate gRPC code"
@echo " gen"
@echo " protoc"
@echo " test - Run tests"
@echo " build - Build all binaries"
@echo " run - Run the application"
@echo " lint - Run golangci-lint linter"
@echo " format - Run golangci-lint formatter"
@echo " fmt"
@echo " clean - Clean build artifacts"
.DEFAULT_GOAL := help
%:
@: