87 lines
1.8 KiB
Bash
Executable File
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
|