@@ -18,15 +18,63 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
1818PROJECT_ROOT=" $( cd " $SCRIPT_DIR /.." && pwd) "
1919cd " $PROJECT_ROOT "
2020
21- # Environment: staging (default) or prod
22- ENVIRONMENT=" ${1:- staging} "
21+ # Parse named arguments
22+ ENVIRONMENT=" "
23+ TF_WORKSPACE=" "
24+
25+ show_usage () {
26+ echo " Usage: $0 --environment <staging|prod> [--tfworkspace <name>]"
27+ echo " "
28+ echo " Options:"
29+ echo " --environment, -e Deployment environment: staging or prod (required)"
30+ echo " --tfworkspace, -w Terraform workspace name (default: boston-staging or boston-prod)"
31+ echo " --help, -h Show this help message"
32+ }
33+
34+ while [[ $# -gt 0 ]]; do
35+ case " $1 " in
36+ --environment|-e)
37+ ENVIRONMENT=" $2 "
38+ shift 2
39+ ;;
40+ --tfworkspace|-w)
41+ TF_WORKSPACE=" $2 "
42+ shift 2
43+ ;;
44+ --help|-h)
45+ show_usage
46+ exit 0
47+ ;;
48+ * )
49+ echo -e " ${RED} ❌ Error: Unknown argument '${1} '${NC} "
50+ show_usage
51+ exit 1
52+ ;;
53+ esac
54+ done
55+
56+ if [ -z " $ENVIRONMENT " ]; then
57+ echo -e " ${RED} ❌ Error: --environment is required${NC} "
58+ show_usage
59+ exit 1
60+ fi
61+
2362if [ " $ENVIRONMENT " != " staging" ] && [ " $ENVIRONMENT " != " prod" ]; then
24- echo -e " ${RED} ❌ Error: Invalid environment '${ENVIRONMENT} '${NC} "
25- echo " Usage: $0 [staging|prod] "
63+ echo -e " ${RED} ❌ Error: Invalid environment '${ENVIRONMENT} '. Must be 'staging' or 'prod'. ${NC} "
64+ show_usage
2665 exit 1
2766fi
2867
29- echo -e " ${GREEN} 🚀 OpenContext Deployment [${ENVIRONMENT} ]${NC} "
68+ # Default workspace per environment when not explicitly provided
69+ if [ -z " $TF_WORKSPACE " ]; then
70+ if [ " $ENVIRONMENT " = " prod" ]; then
71+ TF_WORKSPACE=" boston-prod"
72+ else
73+ TF_WORKSPACE=" boston-staging"
74+ fi
75+ fi
76+
77+ echo -e " ${GREEN} 🚀 OpenContext Deployment [${ENVIRONMENT} ] (workspace: ${TF_WORKSPACE} )${NC} "
3078echo " ================================"
3179echo " "
3280
249297# Plan first - validates configuration and catches errors before any changes
250298cd terraform/aws
251299
252- # Select Terraform workspace: staging uses default, prod uses its own
253- if [ " $ENVIRONMENT " = " prod" ]; then
254- echo " Selecting Terraform workspace: boston-prod"
255- terraform workspace select boston-prod 2> /dev/null || terraform workspace new boston-prod
256- else
257- echo " Selecting Terraform workspace: default"
258- terraform workspace select default 2> /dev/null || true
259- fi
300+ echo " Selecting Terraform workspace: ${TF_WORKSPACE} "
301+ terraform workspace select "$TF_WORKSPACE" 2> /dev/null || terraform workspace new " $TF_WORKSPACE "
260302
261303echo -e " ${YELLOW} 📋 Planning Terraform changes...${NC} "
262304if ! terraform plan \
272314echo " "
273315echo -e " ${YELLOW} ⚠️ Deployment will apply the planned changes to AWS.${NC} "
274316echo -e " Environment: ${ENVIRONMENT} "
317+ echo -e " Workspace: ${TF_WORKSPACE} "
275318echo -e " Lambda: ${LAMBDA_NAME} "
276319echo -e " Region: ${AWS_REGION} "
277320echo " "
0 commit comments