mirror of
https://github.com/hanzoai/core-js.git
synced 2026-09-24 16:58:15 +00:00
65 lines
1.4 KiB
Bash
65 lines
1.4 KiB
Bash
#!/bin/bash
|
|
LOCK_FILE=./runner.lock
|
|
PID_FILE=./runner.pid
|
|
|
|
export NVM_DIR="$HOME/.nvm"
|
|
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
|
|
|
|
kill_old_build() {
|
|
if [ -f "$PID_FILE" ]; then
|
|
OLD_PID=$(cat "$PID_FILE")
|
|
if ps -p "$OLD_PID" > /dev/null 2>&1; then
|
|
kill -TERM -"$OLD_PID"
|
|
echo "Previous build $OLD_PID in progress. Terminating..."
|
|
sleep 2
|
|
if ps -p "$OLD_PID" > /dev/null 2>&1; then
|
|
kill -KILL -"$OLD_PID"
|
|
echo "PID $OLD_PID still alive, sending SIGKILL!"
|
|
fi
|
|
fi
|
|
rm -f "$LOCK_FILE" "$PID_FILE"
|
|
fi
|
|
}
|
|
|
|
kill_old_build
|
|
|
|
if ! ln -s "$$" "$LOCK_FILE" 2>/dev/null; then
|
|
echo "Another build still running, exit"
|
|
exit 1
|
|
fi
|
|
|
|
CLEANED=0
|
|
cleanup() {
|
|
if [ "$CLEANED" -eq 0 ]; then
|
|
CLEANED=1
|
|
echo "Cleaning up from $$"
|
|
rm -f "$LOCK_FILE" "$PID_FILE"
|
|
if [ -n "$NODE_PID" ] && ps -p "$NODE_PID" > /dev/null 2>&1; then
|
|
kill -TERM -"$NODE_PID" 2>/dev/null || true
|
|
kill -KILL -"$NODE_PID" 2>/dev/null || true
|
|
fi
|
|
fi
|
|
}
|
|
|
|
trap cleanup EXIT HUP INT TERM
|
|
|
|
echo "Lock acquired by $$, starting build..."
|
|
|
|
BRANCH_ARG=""
|
|
if [ -n "$1" ]; then
|
|
BRANCH_ARG="branch=$1"
|
|
fi
|
|
|
|
if [ -z "$BRANCH_ARG" ]; then
|
|
setsid node ./runner.mjs &
|
|
else
|
|
setsid node ./runner.mjs "$BRANCH_ARG" &
|
|
fi
|
|
NODE_PID=$!
|
|
echo "$NODE_PID" > "$PID_FILE"
|
|
|
|
wait $NODE_PID
|
|
EXIT_CODE=$?
|
|
|
|
exit $EXIT_CODE
|