Files
gochat/Makefile
T
2026-06-04 15:44:48 +08:00

86 lines
2.0 KiB
Makefile

# GoChat Makefile
# Reference: Chatwoot Makefile pattern (setup, db, server, docker, run)
APP_NAME := gochat
GO_ENV ?= development
# Go build flags
LDFLAGS := -s -w
BUILD_DIR := ./bin
# Targets
.PHONY: all setup build run dev test lint clean docker db_create db_migrate db_seed db_reset migrate help
all: build
## setup: Install dependencies
setup:
go mod download
go mod tidy
## build: Compile the binary
build:
go build -ldflags "$(LDFLAGS)" -o $(BUILD_DIR)/$(APP_NAME) ./cmd/gochat/
## run: Run the compiled binary
run: build
./$(BUILD_DIR)/$(APP_NAME)
## dev: Run in development mode with hot reload (requires air)
dev:
air -c .air.toml
## test: Run tests
test:
go test -v -race ./...
## test-cover: Run tests with coverage
test-cover:
go test -v -race -coverprofile=coverage.out ./...
go tool cover -html=coverage.out -o coverage.html
## lint: Run golangci-lint
lint:
golangci-lint run ./...
## clean: Remove build artifacts
clean:
rm -rf $(BUILD_DIR)
rm -f coverage.out coverage.html
## docker: Build Docker image
docker:
docker build -t $(APP_NAME) .
## db_create: Create database (ref: Chatwoot make db_create)
db_create:
@echo "Creating database..."
GOCHAT_ENV=$(GO_ENV) ./scripts/migrate.sh create
## db_migrate: Run migrations (ref: Chatwoot make db_migrate)
db_migrate:
@echo "Running migrations..."
GOCHAT_ENV=$(GO_ENV) ./scripts/migrate.sh up
## db_seed: Seed data (ref: Chatwoot make db_seed)
db_seed:
@echo "Seeding database..."
GOCHAT_ENV=$(GO_ENV) ./scripts/seed.sh
## db_reset: Reset database (ref: Chatwoot make db_reset)
db_reset:
@echo "Resetting database..."
GOCHAT_ENV=$(GO_ENV) ./scripts/migrate.sh down
GOCHAT_ENV=$(GO_ENV) ./scripts/migrate.sh up
GOCHAT_ENV=$(GO_ENV) ./scripts/seed.sh
## migrate: Create a new migration file
migrate:
@read -p "Migration name: " name; migrate create -ext sql -dir migrations -seq $$name
## help: Show this help
help:
@echo "GoChat Makefile Commands:"
@echo ""
@grep -E '^## ' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ": "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' | sed 's/## //g'