79 lines
2.0 KiB
Bash
Executable File
79 lines
2.0 KiB
Bash
Executable File
#!/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 |