initial commit
This commit is contained in:
32
dev.sh
Executable file
32
dev.sh
Executable file
@@ -0,0 +1,32 @@
|
||||
#!/usr/bin/env bash
|
||||
# Start every dev server declared in stack.conf. Ctrl-C stops all of them.
|
||||
set -euo pipefail
|
||||
|
||||
here="$(cd "$(dirname "$0")" && pwd)"
|
||||
source "$here/stack.conf"
|
||||
|
||||
# The workspace root, which holds every repo of the stack as a sibling.
|
||||
cd "$here/.."
|
||||
|
||||
pids=()
|
||||
|
||||
cleanup() {
|
||||
trap - EXIT INT TERM
|
||||
[ ${#pids[@]} -gt 0 ] && kill -TERM "${pids[@]}" 2>/dev/null
|
||||
wait 2>/dev/null || true
|
||||
}
|
||||
trap cleanup EXIT INT TERM
|
||||
|
||||
for service in "${SERVICES[@]}"; do
|
||||
IFS='|' read -r dir setup run <<<"$service"
|
||||
[ -n "$run" ] || continue
|
||||
echo "==> $dir: $run"
|
||||
(cd "$dir" && exec bash -c "$run") &
|
||||
pids+=($!)
|
||||
done
|
||||
|
||||
[ ${#pids[@]} -gt 0 ] || { echo "no run command in stack.conf" >&2; exit 1; }
|
||||
|
||||
# Return as soon as one server exits, so cleanup stops the others rather than
|
||||
# leaving half a stack running.
|
||||
wait -n || true
|
||||
Reference in New Issue
Block a user