142 lines
4.1 KiB
Makefile
142 lines
4.1 KiB
Makefile
# Colors
|
|
CYAN := \033[36m
|
|
YELLOW := \033[33m
|
|
GREEN := \033[32m
|
|
RED := \033[31m
|
|
RESET := \033[0m
|
|
|
|
# Emoji
|
|
CHECK := ✅
|
|
BUILD := 🔨
|
|
CLEAN := 🧹
|
|
RUN := 🚀
|
|
CSS := 🎨
|
|
TEST := 🧪
|
|
DOCKER := 🐳
|
|
WARN := ⚠️
|
|
DOCS := 📚
|
|
|
|
# Variables
|
|
BINARY_NAME := goth.stack
|
|
DOCKER_IMAGE := goth-stack
|
|
GO_FILES := $(wildcard *.go)
|
|
CSS_INPUT := lib/stylegen/base.css
|
|
CSS_OUTPUT := public/css/styles.css
|
|
|
|
# Docker detection
|
|
DOCKER_ENV := $(shell if [ -f /.dockerenv ]; then echo true; else echo false; fi)
|
|
ifeq ($(DOCKER_ENV),true)
|
|
BASE_PATH := /app
|
|
else
|
|
BASE_PATH := $(CURDIR)
|
|
endif
|
|
|
|
.PHONY: all build clean run dev stylegen docker-dev docker-build docker-run test help reset ensure-swag
|
|
|
|
help:
|
|
@echo "$(CYAN)Available commands:$(RESET)"
|
|
@echo "$(YELLOW)make clean$(RESET) - Remove build artifacts"
|
|
@echo "$(YELLOW)make reset$(RESET) - Clean and reset the project to initial state"
|
|
@echo "$(YELLOW)make build$(RESET) - Generate CSS, docs, and build Go binary"
|
|
@echo "$(YELLOW)make run$(RESET) - Build and run the binary"
|
|
@echo "$(YELLOW)make dev$(RESET) - Run in development mode"
|
|
@echo "$(YELLOW)make docker-dev$(RESET)- Run development environment in Docker"
|
|
@echo "$(YELLOW)make docker-run$(RESET)- Run production container"
|
|
@echo "$(YELLOW)make test$(RESET) - Run tests"
|
|
@echo "$(YELLOW)make prod$(RESET) - Full production build"
|
|
|
|
# Check if swag is installed
|
|
ensure-swag:
|
|
@command -v swag >/dev/null 2>&1 || { \
|
|
echo "$(WARN) $(RED)Swagger CLI (swag) is not installed. Installing...$(RESET)"; \
|
|
go install github.com/swaggo/swag/cmd/swag@latest; \
|
|
}
|
|
|
|
reset:
|
|
@echo "$(CLEAN) $(CYAN)Performing complete project reset...$(RESET)"
|
|
@rm -f $(BINARY_NAME)
|
|
@rm -f $(CSS_OUTPUT)
|
|
@rm -rf public/css/*
|
|
@rm -f tailwind.config.js
|
|
@rm -rf docs/docs.go docs/swagger.json docs/swagger.yaml
|
|
@go clean -cache -testcache -modcache
|
|
@echo "$(CHECK) $(GREEN)Project reset complete$(RESET)"
|
|
|
|
clean:
|
|
@echo "$(CLEAN) $(CYAN)Cleaning build artifacts...$(RESET)"
|
|
@rm -f $(BINARY_NAME)
|
|
@rm -f $(CSS_OUTPUT)
|
|
@echo "$(CHECK) $(GREEN)Cleanup complete$(RESET)"
|
|
|
|
stylegen:
|
|
@echo "$(CSS) $(CYAN)Generating CSS styles...$(RESET)"
|
|
@echo "Current working directory: $$(pwd)"
|
|
@echo "Contents of current directory:"
|
|
@ls -la
|
|
@echo "\nContents of lib/stylegen:"
|
|
@ls -la lib/stylegen
|
|
@echo "\nContents of lib/stylegen/tw:"
|
|
@ls -la lib/stylegen/tw
|
|
@chmod +x $(BASE_PATH)/lib/stylegen/gen.sh
|
|
@chmod +x $(BASE_PATH)/lib/stylegen/tw/*
|
|
@$(BASE_PATH)/lib/stylegen/gen.sh \
|
|
-e "html" \
|
|
-d "$(BASE_PATH)/pages/templates" \
|
|
-o "$(BASE_PATH)/public/css"
|
|
@echo "$(CHECK) $(GREEN)CSS generation complete$(RESET)"
|
|
|
|
swaggergen: ensure-swag
|
|
@echo "$(DOCS) $(CYAN)Generating Swagger documentation...$(RESET)"
|
|
@swag init
|
|
@echo "$(CHECK) $(GREEN)Swagger docs generated$(RESET)"
|
|
|
|
# Combined generation target
|
|
generate: stylegen swaggergen
|
|
|
|
build: generate
|
|
@echo "$(BUILD) $(CYAN)Building binary...$(RESET)"
|
|
@go build -o $(BINARY_NAME)
|
|
@echo "$(CHECK) $(GREEN)Build complete: $(BINARY_NAME)$(RESET)"
|
|
|
|
test:
|
|
@echo "$(TEST) $(CYAN)Running tests...$(RESET)"
|
|
@go test ./...
|
|
@echo "$(CHECK) $(GREEN)Tests complete$(RESET)"
|
|
|
|
dev: generate
|
|
@echo "$(RUN) $(CYAN)Starting development server...$(RESET)"
|
|
@go run main.go
|
|
|
|
run: build
|
|
@echo "$(RUN) $(CYAN)Running server...$(RESET)"
|
|
@./$(BINARY_NAME)
|
|
|
|
docker-dev:
|
|
@echo "$(DOCKER) $(CYAN)Starting development container...$(RESET)"
|
|
@docker-compose -f docker-compose.dev.yml up --build
|
|
|
|
docker-build: generate
|
|
@echo "$(DOCKER) $(CYAN)Building production Docker image...$(RESET)"
|
|
@docker build -t $(DOCKER_IMAGE) .
|
|
@echo "$(CHECK) $(GREEN)Docker image build complete$(RESET)"
|
|
|
|
docker-run: docker-build
|
|
@echo "$(DOCKER) $(CYAN)Running production container...$(RESET)"
|
|
@docker-compose up
|
|
|
|
deps:
|
|
@echo "$(BUILD) $(CYAN)Installing dependencies...$(RESET)"
|
|
@go mod download
|
|
@go install github.com/swaggo/swag/cmd/swag@latest
|
|
@echo "$(CHECK) $(GREEN)Dependencies installed$(RESET)"
|
|
|
|
fmt:
|
|
@echo "$(BUILD) $(CYAN)Formatting code...$(RESET)"
|
|
@go fmt ./...
|
|
@echo "$(CHECK) $(GREEN)Code formatting complete$(RESET)"
|
|
|
|
# Full production build
|
|
prod: clean generate build
|
|
@echo "$(CHECK) $(GREEN)Production build complete$(RESET)"
|
|
|
|
.DEFAULT_GOAL := help
|