1+ # Build configuration
12BUILD_PREFIX = env GOOS=linux GOARCH=arm64 go build
23COMMON_LDFLAGS = -s -w -extldflags '-static'
34COMMON_TAGS = lambda.norpc netgo
45DEPLOYMENT_STAGE = ${TF_WORKSPACE}
6+ BUILD_DIR = build
7+ PACKAGES_DIR = $(BUILD_DIR ) /packages
58
6- # Update this line to set environment-specific tags for prod and dev
9+ # Environment configuration
710ENV_TAGS = $(if $(filter prod,$(DEPLOYMENT_STAGE ) ) ,prod,$(if $(filter dev,$(DEPLOYMENT_STAGE ) ) ,dev,) )
811
9- .PHONY : build clean deploy gomodgen
12+ # Lambda configuration
13+ LAMBDA_DIR = lambda
14+ LAMBDA_CMD_DIR = cmd/lambda
1015
11- build : lambda/*
12- for func in lambda/* ; do \
13- mkdir -p build/packages/$$(basename $${func}) ; \
16+ .PHONY : all build clean deploy gomodgen local dev-deps logs logs-mongo help check-deps
17+
18+ # Default target
19+ all : check-deps build
20+
21+ # Help target
22+ help :
23+ @echo " Available targets:"
24+ @echo " all - Build everything (default target)"
25+ @echo " build - Build Lambda functions"
26+ @echo " clean - Remove build artifacts"
27+ @echo " deploy - Deploy to AWS using serverless"
28+ @echo " gomodgen - Generate go.mod file"
29+ @echo " local - Run local development server"
30+ @echo " dev-deps - Start development dependencies"
31+ @echo " logs - View all logs"
32+ @echo " logs-mongo - View MongoDB logs"
33+ @echo " help - Show this help message"
34+ @echo " check-deps - Check required dependencies"
35+
36+ # Check for required dependencies
37+ check-deps :
38+ @command -v go > /dev/null 2>&1 || { echo " Error: Go is not installed" ; exit 1; }
39+ @command -v docker > /dev/null 2>&1 || { echo " Error: Docker is not installed" ; exit 1; }
40+ @command -v docker compose > /dev/null 2>&1 || { echo " Error: docker-compose is not installed" ; exit 1; }
41+ @command -v sls > /dev/null 2>&1 || { echo " Error: Serverless Framework is not installed" ; exit 1; }
42+
43+ build :
44+ @echo " Building Lambda functions..."
45+ @mkdir -p $(PACKAGES_DIR )
46+ @for func in $(LAMBDA_DIR ) /* /$(LAMBDA_CMD_DIR ) ; do \
47+ funcname=$$(echo $$func | cut -d'/' -f2 ) ; \
48+ mkdir -p $(PACKAGES_DIR ) /$$ funcname; \
1449 $(BUILD_PREFIX ) -ldflags " $( COMMON_LDFLAGS) " -tags " $( COMMON_TAGS) $( ENV_TAGS) " \
1550 -trimpath \
16- -o build/packages/ $$( basename $${func}) /bootstrap lambda/ $$( basename $${ func}) /* .go ; \
17- zip -j build/packages/ $$( basename $${func}) .zip build/packages/ $$( basename $${func}) /bootstrap ; \
51+ -o $( PACKAGES_DIR ) / $$ funcname /bootstrap $$ func/* .go; \
52+ zip -j $( PACKAGES_DIR ) / $$ funcname .zip $( PACKAGES_DIR ) / $$ funcname /bootstrap; \
1853 done
54+ @echo " Build completed successfully!"
1955
2056clean :
21- rm -rf ./build ./vendor Gopkg.lock
57+ @echo " Cleaning build artifacts..."
58+ @rm -rf ./$(BUILD_DIR ) ./vendor Gopkg.lock
59+ @echo " Clean completed!"
2260
2361deploy : clean build
24- sls deploy --stage $(DEPLOYMENT_STAGE ) --verbose
62+ @echo " Deploying to $( DEPLOYMENT_STAGE) ..."
63+ @sls deploy --stage $(DEPLOYMENT_STAGE ) --verbose
2564
2665gomodgen :
27- chmod u+x gomod.sh
28- ./gomod.sh
66+ @chmod u+x gomod.sh
67+ @./gomod.sh
68+
69+ # Local development targets
70+ local :
71+ @echo " Starting local development server..."
72+ @go run cmd/local/main.go
73+
74+ dev-deps :
75+ @echo " Starting development dependencies..."
76+ @docker compose up -d
77+
78+ # Logging targets
79+ logs-mongo :
80+ @docker compose logs -f mongodb
81+
82+ logs : logs-mongo
0 commit comments