65 lines
1.8 KiB
Bash
Executable File
65 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env zsh
|
|
|
|
SESSION_NAME="crussell-dev"
|
|
|
|
# --- Load root .env into environment ---
|
|
set -a
|
|
source .env
|
|
set +a
|
|
echo "✅ Loaded environment from .env"
|
|
|
|
# --- Check if Docker is running, auto-start if necessary ---
|
|
if ! docker info > /dev/null 2>&1; then
|
|
echo "🐳 Docker daemon is not running. Attempting to start it..."
|
|
sudo systemctl start docker
|
|
sleep 2
|
|
if ! docker info > /dev/null 2>&1; then
|
|
echo "❌ Failed to start Docker. Exiting."
|
|
exit 1
|
|
fi
|
|
echo "✅ Docker started successfully."
|
|
fi
|
|
|
|
# --- Reset PostgreSQL ---
|
|
echo "🗑️ Resetting PostgreSQL container..."
|
|
docker compose down -v postgres
|
|
docker compose up postgres -d
|
|
|
|
echo "⏳ Waiting 5 seconds for DB init..."
|
|
sleep 5
|
|
|
|
# --- Kill existing tmux session (optional clean start) ---
|
|
tmux has-session -t $SESSION_NAME 2>/dev/null
|
|
if [ $? -eq 0 ]; then
|
|
echo "⚠️ Existing tmux session detected — killing it..."
|
|
tmux kill-session -t $SESSION_NAME
|
|
fi
|
|
|
|
# --- Start new tmux session ---
|
|
echo "🎛️ Starting tmux session: $SESSION_NAME"
|
|
tmux new-session -d -s $SESSION_NAME -n DB
|
|
|
|
# Pane 1: DB (already named `DB` via -n)
|
|
tmux send-keys -t $SESSION_NAME "docker exec -it postgres psql -U myuser -d mydb -c \"\\dt\"" C-m
|
|
|
|
# Split for Frontend
|
|
tmux split-window -h -t $SESSION_NAME
|
|
tmux select-pane -t $SESSION_NAME:0.1 -T "Frontend"
|
|
tmux send-keys -t $SESSION_NAME:0.1 "cd frontend && npm run dev -- --host" C-m
|
|
|
|
# Split for Backend
|
|
tmux split-window -h -t $SESSION_NAME
|
|
tmux select-pane -t $SESSION_NAME:0.2 -T "Backend"
|
|
tmux send-keys -t $SESSION_NAME:0.2 "cd backend && go run -tags dev ./main.go" C-m
|
|
|
|
# Balance layout
|
|
tmux select-layout -t $SESSION_NAME even-horizontal
|
|
|
|
# Ensure pane 0 is labeled correctly
|
|
tmux select-pane -t $SESSION_NAME:0.0 -T "DB"
|
|
|
|
# Focus the DB pane before attaching
|
|
tmux select-pane -t $SESSION_NAME:0.0
|
|
|
|
# Attach
|
|
tmux attach-session -t $SESSION_NAME |