# Tender Management Backend Makefile .PHONY: help build run test clean docker-build docker-run docs run-docs # Default target help: @echo "Available targets:" @echo " build - Build the web server" @echo " build-mac - Build for macOS (Intel)" @echo " build-mac-arm64 - Build for macOS (Apple Silicon)" @echo " build-windows - Build for Windows (64-bit)" @echo " build-windows-32 - Build for Windows (32-bit)" @echo " build-all - Build for all platforms" @echo " run - Run the web server" @echo " test - Run tests" @echo " clean - Clean build artifacts" @echo " docker-build - Build Docker image" @echo " docker-run - Run Docker container" # Build the web server build: @echo "Building web server..." @mkdir -p bin @go build -o bin/web ./cmd/web @echo "Build completed successfully!" # Build for macOS (Intel) build-mac: @echo "Building web server for macOS (Intel)..." @mkdir -p bin @GOOS=darwin GOARCH=amd64 go build -o bin/web-mac ./cmd/web @echo "macOS Intel build completed successfully!" # Build for macOS (Apple Silicon) build-mac-arm64: @echo "Building web server for macOS (Apple Silicon)..." @mkdir -p bin @GOOS=darwin GOARCH=arm64 go build -o bin/web-mac-arm64 ./cmd/web @echo "macOS ARM64 build completed successfully!" # Build for Windows (64-bit) build-windows: @echo "Building web server for Windows (64-bit)..." @mkdir -p bin @GOOS=windows GOARCH=amd64 go build -o bin/web.exe ./cmd/web @echo "Windows 64-bit build completed successfully!" # Build for Windows (32-bit) build-windows-32: @echo "Building web server for Windows (32-bit)..." @mkdir -p bin @GOOS=windows GOARCH=386 go build -o bin/web-32.exe ./cmd/web @echo "Windows 32-bit build completed successfully!" # Build for all platforms build-all: build build-mac build-mac-arm64 build-windows build-windows-32 @echo "All platform builds completed successfully!" # Run the web server run: build @echo "Starting web server..." @./bin/web # Run tests test: @echo "Running tests..." @go test ./... # Clean build artifacts clean: @echo "Cleaning build artifacts..." @rm -rf bin/ @go clean # Build Docker image docker-build: @echo "Building Docker image..." @docker build -t tender-management-api . # Run Docker container docker-run: @echo "Running Docker container..." @docker run -p 8081:8081 tender-management-api # Development with hot reload (requires air) dev: @echo "Starting development server with hot reload..." @air # Install development dependencies install-dev: @echo "Installing development dependencies..." @go install github.com/cosmtrek/air@latest # Format code fmt: @echo "Formatting code..." @go fmt ./... # Vet code vet: @echo "Vetting code..." @go vet ./... # Lint code (requires golangci-lint) lint: @echo "Linting code..." @golangci-lint run # Generate API documentation # Marked as .PHONY to avoid collision with the top-level docs directory docs: @echo "Generating API documentation..." @swag init -g cmd/web/main.go -o cmd/web/docs @echo "Swagger documentation generated successfully!" # Run server with documentation run-docs: docs run # Database migrations (placeholder) migrate: @echo "Running database migrations..." @echo "TODO: Implement database migrations" # Seed database (placeholder) seed: @echo "Seeding database..." @echo "TODO: Implement database seeding"