#!/bin/bash # Script to run all development servers concurrently # Colors for output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' MAGENTA='\033[0;35m' CYAN='\033[0;36m' NC='\033[0m' # No Color # Function to cleanup processes on exit cleanup() { echo -e "\n${YELLOW}Shutting down all services...${NC}" kill $(jobs -p) 2>/dev/null wait echo -e "${GREEN}All services stopped${NC}" exit 0 } # Set up trap to cleanup on script exit trap cleanup EXIT INT TERM # Function to run a service with colored output run_service() { local name=$1 local color=$2 local dir=$3 shift 3 local cmd="$@" echo -e "${color}Starting $name...${NC}" (cd "$dir" && exec $cmd 2>&1 | sed "s/^/[$name] /" | while IFS= read -r line; do echo -e "${color}${line}${NC}"; done) & } # Check if required tools are installed echo -e "${CYAN}Checking requirements...${NC}" if ! command -v air &> /dev/null; then echo -e "${RED}Error: 'air' is not installed. Please install it first:${NC}" echo "go install github.com/air-verse/air@latest" exit 1 fi if ! command -v pnpm &> /dev/null; then echo -e "${RED}Error: 'pnpm' is not installed. Please install it first:${NC}" echo "npm install -g pnpm" exit 1 fi if ! command -v deno &> /dev/null; then echo -e "${RED}Error: 'deno' is not installed. Please install it first:${NC}" echo "curl -fsSL https://deno.land/x/install/install.sh | sh" exit 1 fi echo -e "${GREEN}All requirements satisfied${NC}\n" # Start all services echo -e "${CYAN}Starting all development servers...${NC}\n" # Backend with air run_service "Backend" "$GREEN" "hiling_go" air # Meilisearch run_service "Meilisearch" "$YELLOW" "hiling_go" ./dev-meilisearch.sh # Frontend with pnpm run_service "Frontend" "$BLUE" "hilingriviw" pnpm dev # OpenGraph with deno run_service "OpenGraph" "$MAGENTA" "hiling-opengraph" deno task dev echo -e "\n${CYAN}All services started!${NC}" echo -e "${CYAN}Press Ctrl+C to stop all services${NC}\n" # Wait for all background processes wait