Files
predavanja/Events-WebApi/start-all.sh
2026-05-12 17:23:45 +02:00

87 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
WEBAPI_PROJECT="$ROOT_DIR/Events.WebAPI/Events.WebAPI.csproj"
FILESAPI_PROJECT="$ROOT_DIR/Events.FilesAPI/Events.FilesAPI.csproj"
CLIENTAPP_DIR="$ROOT_DIR/Events.ClientApp"
pids=()
start_process() {
if command -v setsid >/dev/null 2>&1; then
setsid "$@" &
else
"$@" &
fi
pids+=($!)
}
stop_process() {
local signal="$1"
local pid="$2"
kill "-$signal" -- "-$pid" 2>/dev/null || kill "-$signal" "$pid" 2>/dev/null || true
}
cleanup() {
local exit_code=$?
trap - INT TERM EXIT
if ((${#pids[@]} > 0)); then
echo
echo "Stopping Events stack..."
for pid in "${pids[@]}"; do
stop_process INT "$pid"
done
sleep 1
for pid in "${pids[@]}"; do
stop_process TERM "$pid"
done
sleep 1
for pid in "${pids[@]}"; do
stop_process KILL "$pid"
done
wait "${pids[@]}" 2>/dev/null || true
fi
exit "$exit_code"
}
trap cleanup INT TERM EXIT
if [[ ! -d "$CLIENTAPP_DIR/node_modules" ]]; then
echo "Missing node_modules in Events.ClientApp."
echo "Run: cd \"$CLIENTAPP_DIR\" && npm install"
exit 1
fi
"$ROOT_DIR/stop-all.sh" >/dev/null 2>&1 || true
echo "Starting Events.WebAPI on https://localhost:7295"
start_process dotnet run --launch-profile https --project "$WEBAPI_PROJECT"
echo "Starting Events.FilesAPI on https://localhost:7296"
start_process dotnet run --launch-profile https --project "$FILESAPI_PROJECT"
echo "Starting Events.ClientApp on http://localhost:5173"
start_process env CLIENTAPP_DIR="$CLIENTAPP_DIR" bash -c 'cd "$CLIENTAPP_DIR" && npm run dev'
echo
echo "Events stack is starting."
echo "WebAPI: https://localhost:7295"
echo "FilesAPI: https://localhost:7296"
echo "ClientApp: http://localhost:5173"
echo
echo "Press Ctrl+C to stop all processes."
wait