2024-12-18 23:21:12 -06:00
|
|
|
# Emoji
|
|
|
|
CHECK := ✅
|
|
|
|
BUILD := 🔨
|
|
|
|
CLEAN := 🧹
|
|
|
|
RUN := 🚀
|
|
|
|
CSS := 🎨
|
|
|
|
TEST := 🧪
|
|
|
|
DOCKER := 🐳
|
|
|
|
WARN := ⚠️
|
|
|
|
DOCS := 📚
|
|
|
|
|
|
|
|
# Variables
|
2025-01-04 21:24:45 -07:00
|
|
|
BINARY_NAME := atri.dad
|
|
|
|
DOCKER_IMAGE := atri-dot-dad
|
2024-12-18 23:21:12 -06:00
|
|
|
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:
|
2025-01-04 21:24:45 -07:00
|
|
|
@echo "Available commands:"
|
|
|
|
@echo "make clean - Remove build artifacts"
|
|
|
|
@echo "make reset - Clean and reset the project to initial state"
|
|
|
|
@echo "make build - Generate CSS, docs, and build Go binary"
|
|
|
|
@echo "make run - Build and run the binary"
|
|
|
|
@echo "make dev - Run in development mode"
|
|
|
|
@echo "make docker-dev - Run development environment in Docker"
|
|
|
|
@echo "make docker-run - Run production container"
|
|
|
|
@echo "make test - Run tests"
|
|
|
|
@echo "make prod - Full production build"
|
2024-12-18 23:21:12 -06:00
|
|
|
|
|
|
|
# Check if swag is installed
|
|
|
|
ensure-swag:
|
|
|
|
@command -v swag >/dev/null 2>&1 || { \
|
2025-01-04 21:24:45 -07:00
|
|
|
echo "$(WARN) Swagger CLI (swag) is not installed. Installing..."; \
|
2024-12-18 23:21:12 -06:00
|
|
|
go install github.com/swaggo/swag/cmd/swag@latest; \
|
|
|
|
}
|
|
|
|
|
|
|
|
reset:
|
2025-01-04 21:24:45 -07:00
|
|
|
@echo "$(CLEAN) Performing complete project reset..."
|
2024-12-18 23:21:12 -06:00
|
|
|
@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
|
2025-01-04 21:24:45 -07:00
|
|
|
@rm -rf $(BASE_PATH)/tw # Remove the 'tw' directory
|
|
|
|
@echo "$(CHECK) Project reset complete"
|
2024-12-18 23:21:12 -06:00
|
|
|
|
|
|
|
clean:
|
2025-01-04 21:24:45 -07:00
|
|
|
@echo "$(CLEAN) Cleaning build artifacts..."
|
2024-12-18 23:21:12 -06:00
|
|
|
@rm -f $(BINARY_NAME)
|
|
|
|
@rm -f $(CSS_OUTPUT)
|
2025-01-04 21:24:45 -07:00
|
|
|
@rm -rf $(BASE_PATH)/lib/stylegen/tw # Remove the 'tw' directory
|
|
|
|
@echo "$(CHECK) Cleanup complete"
|
2024-12-18 23:21:12 -06:00
|
|
|
|
|
|
|
stylegen:
|
2025-01-04 21:24:45 -07:00
|
|
|
@echo "$(CSS) Generating CSS styles..."
|
2024-12-18 23:21:12 -06:00
|
|
|
@echo "Current working directory: $$(pwd)"
|
|
|
|
@echo "Contents of current directory:"
|
|
|
|
@ls -la
|
|
|
|
@echo "\nContents of lib/stylegen:"
|
|
|
|
@ls -la lib/stylegen
|
|
|
|
@chmod +x $(BASE_PATH)/lib/stylegen/gen.sh
|
|
|
|
@$(BASE_PATH)/lib/stylegen/gen.sh \
|
|
|
|
-e "html" \
|
|
|
|
-d "$(BASE_PATH)/pages/templates" \
|
|
|
|
-o "$(BASE_PATH)/public/css"
|
2025-01-04 21:24:45 -07:00
|
|
|
@echo "$(CHECK) CSS generation complete"
|
2024-12-18 23:21:12 -06:00
|
|
|
|
|
|
|
swaggergen: ensure-swag
|
2025-01-04 21:24:45 -07:00
|
|
|
@echo "$(DOCS) Generating Swagger documentation..."
|
2024-12-18 23:21:12 -06:00
|
|
|
@swag init
|
2025-01-04 21:24:45 -07:00
|
|
|
@echo "$(CHECK) Swagger docs generated"
|
2024-12-18 23:21:12 -06:00
|
|
|
|
|
|
|
# Combined generation target
|
|
|
|
generate: stylegen swaggergen
|
|
|
|
|
|
|
|
build: generate
|
2025-01-04 21:24:45 -07:00
|
|
|
@echo "$(BUILD) Building binary..."
|
2024-12-18 23:21:12 -06:00
|
|
|
@go build -o $(BINARY_NAME)
|
2025-01-04 21:24:45 -07:00
|
|
|
@echo "$(CHECK) Build complete: $(BINARY_NAME)"
|
2024-12-18 23:21:12 -06:00
|
|
|
|
|
|
|
test:
|
2025-01-04 21:24:45 -07:00
|
|
|
@echo "$(TEST) Running tests..."
|
2024-12-18 23:21:12 -06:00
|
|
|
@go test ./...
|
2025-01-04 21:24:45 -07:00
|
|
|
@echo "$(CHECK) Tests complete"
|
2024-12-18 23:21:12 -06:00
|
|
|
|
|
|
|
dev: generate
|
2025-01-04 21:24:45 -07:00
|
|
|
@echo "$(RUN) Starting development server..."
|
2024-12-18 23:21:12 -06:00
|
|
|
@go run main.go
|
|
|
|
|
|
|
|
run: build
|
2025-01-04 21:24:45 -07:00
|
|
|
@echo "$(RUN) Running server..."
|
2024-12-18 23:21:12 -06:00
|
|
|
@./$(BINARY_NAME)
|
|
|
|
|
|
|
|
docker-dev:
|
2025-01-04 21:24:45 -07:00
|
|
|
@echo "$(DOCKER) Starting development container..."
|
2024-12-18 23:21:12 -06:00
|
|
|
@docker-compose -f docker-compose.dev.yml up --build
|
|
|
|
|
|
|
|
docker-build: generate
|
2025-01-04 21:24:45 -07:00
|
|
|
@echo "$(DOCKER) Building production Docker image..."
|
2024-12-18 23:21:12 -06:00
|
|
|
@docker build -t $(DOCKER_IMAGE) .
|
2025-01-04 21:24:45 -07:00
|
|
|
@echo "$(CHECK) Docker image build complete"
|
2024-12-18 23:21:12 -06:00
|
|
|
|
|
|
|
docker-run: docker-build
|
2025-01-04 21:24:45 -07:00
|
|
|
@echo "$(DOCKER) Running production container..."
|
2024-12-18 23:21:12 -06:00
|
|
|
@docker-compose up
|
|
|
|
|
|
|
|
deps:
|
2025-01-04 21:24:45 -07:00
|
|
|
@echo "$(BUILD) Installing dependencies..."
|
2024-12-18 23:21:12 -06:00
|
|
|
@go mod download
|
|
|
|
@go install github.com/swaggo/swag/cmd/swag@latest
|
2025-01-04 21:24:45 -07:00
|
|
|
@echo "$(CHECK) Dependencies installed"
|
2024-12-18 23:21:12 -06:00
|
|
|
|
|
|
|
fmt:
|
2025-01-04 21:24:45 -07:00
|
|
|
@echo "$(BUILD) Formatting code..."
|
2024-12-18 23:21:12 -06:00
|
|
|
@go fmt ./...
|
2025-01-04 21:24:45 -07:00
|
|
|
@echo "$(CHECK) Code formatting complete"
|
2024-12-18 23:21:12 -06:00
|
|
|
|
|
|
|
# Full production build
|
|
|
|
prod: clean generate build
|
2025-01-04 21:24:45 -07:00
|
|
|
@echo "$(CHECK) Production build complete"
|
2024-12-18 23:21:12 -06:00
|
|
|
|
|
|
|
.DEFAULT_GOAL := help
|