@@ -34,23 +34,26 @@ NC='\033[0m' # No Color
3434# Required services for edge function development
3535# Note: Services like imgproxy, studio, inbucket, analytics, vector, pg_meta are optional
3636# Container names use project_id suffix from config.toml (e.g., supabase_db_cli for project_id="cli")
37- # We use pattern matching to handle different project suffixes
38- REQUIRED_SERVICES =(
37+ # The project_id matches the "name" field in project.json
38+ REQUIRED_SERVICE_PREFIXES =(
3939 " supabase_db_"
4040 " supabase_kong_"
4141 " supabase_edge_runtime_"
4242 " supabase_rest_"
4343 " supabase_realtime_"
4444)
4545
46- # Check if all required services are running via docker ps
46+ # Check if all required services are running for a specific project
4747# This is more reliable than `supabase status` which returns 0 even with stopped services
48+ # Args: $1 = project_name (e.g., "cli", "edge-worker")
4849check_required_services_running () {
50+ local project_name=" $1 "
4951 local running_containers
5052 running_containers=$( docker ps --format ' {{.Names}}' 2> /dev/null)
5153
52- for service_prefix in " ${REQUIRED_SERVICES[@]} " ; do
53- if ! echo " $running_containers " | grep -q " ^${service_prefix} " ; then
54+ for service_prefix in " ${REQUIRED_SERVICE_PREFIXES[@]} " ; do
55+ local full_container_name=" ${service_prefix}${project_name} "
56+ if ! echo " $running_containers " | grep -qF " $full_container_name " ; then
5457 return 1
5558 fi
5659 done
@@ -72,15 +75,30 @@ if [ ! -d "$PROJECT_DIR" ]; then
7275 exit 1
7376fi
7477
78+ # Convert to absolute path for consistent file lookups after cd
79+ PROJECT_DIR=$( realpath " $PROJECT_DIR " )
80+
7581# Change to project directory (Supabase CLI uses current directory)
7682cd " $PROJECT_DIR "
7783
78- echo -e " ${YELLOW} Checking Supabase status in: $PROJECT_DIR ${NC} "
84+ # Extract project name from project.json (matches project_id in supabase/config.toml)
85+ if [ ! -f " $PROJECT_DIR /project.json" ]; then
86+ echo -e " ${RED} Error: project.json not found in $PROJECT_DIR ${NC} " >&2
87+ exit 1
88+ fi
89+
90+ PROJECT_NAME=$( jq -r ' .name' " $PROJECT_DIR /project.json" )
91+ if [ -z " $PROJECT_NAME " ] || [ " $PROJECT_NAME " = " null" ]; then
92+ echo -e " ${RED} Error: Could not read 'name' from project.json${NC} " >&2
93+ exit 1
94+ fi
95+
96+ echo -e " ${YELLOW} Checking Supabase status for project '$PROJECT_NAME ' in: $PROJECT_DIR ${NC} "
7997
8098# Fast path: Check if all required Supabase services are running via docker ps
8199# This is more reliable than `supabase status` which returns 0 even with stopped services
82- if check_required_services_running; then
83- echo -e " ${GREEN} ✓ Supabase is already running (all required services up)${NC} "
100+ if check_required_services_running " $PROJECT_NAME " ; then
101+ echo -e " ${GREEN} ✓ Supabase is already running for project ' $PROJECT_NAME ' (all required services up)${NC} "
84102 exit 0
85103fi
86104
0 commit comments