53 lines
1.4 KiB
Bash
Executable File
53 lines
1.4 KiB
Bash
Executable File
#!/bin/zsh
|
|
|
|
set -u
|
|
|
|
PROJECT_DIR="${0:A:h}"
|
|
RUN_DIR="$PROJECT_DIR/.run"
|
|
PID_FILE="$RUN_DIR/spine-connector.pid"
|
|
LOG_FILE="$RUN_DIR/spine-connector.log"
|
|
HEALTH_URL="http://127.0.0.1:27843/v1/health"
|
|
|
|
mkdir -p "$RUN_DIR"
|
|
cd "$PROJECT_DIR" || exit 1
|
|
|
|
if [[ -f "$PID_FILE" ]]; then
|
|
CONNECTOR_PID="$(tr -dc '0-9' < "$PID_FILE")"
|
|
if [[ -n "$CONNECTOR_PID" ]] && kill -0 "$CONNECTOR_PID" 2>/dev/null; then
|
|
echo "Spine粒子连接器已经在运行。"
|
|
exit 0
|
|
fi
|
|
rm -f "$PID_FILE"
|
|
fi
|
|
|
|
if ! command -v node >/dev/null 2>&1; then
|
|
echo "未找到 Node.js,请先安装 Node.js 18 或更高版本。"
|
|
read "?按回车键关闭窗口..."
|
|
exit 1
|
|
fi
|
|
|
|
echo "正在启动 Spine粒子连接器..."
|
|
# 关闭标准输入并让 zsh 立即脱离任务,避免双击脚本的 Terminal 窗口关闭时带走连接器。
|
|
nohup node "$PROJECT_DIR/connector/spine-connector.mjs" > "$LOG_FILE" 2>&1 < /dev/null &!
|
|
CONNECTOR_PID=$!
|
|
echo "$CONNECTOR_PID" > "$PID_FILE"
|
|
|
|
for _ in {1..40}; do
|
|
if ! kill -0 "$CONNECTOR_PID" 2>/dev/null; then
|
|
echo "连接器启动失败:"
|
|
tail -n 30 "$LOG_FILE"
|
|
rm -f "$PID_FILE"
|
|
read "?按回车键关闭窗口..."
|
|
exit 1
|
|
fi
|
|
if curl -fsS "$HEALTH_URL" >/dev/null 2>&1; then
|
|
echo "Spine粒子连接器启动成功,可以回到网页直接导出 .spine。"
|
|
exit 0
|
|
fi
|
|
sleep 0.25
|
|
done
|
|
|
|
echo "连接器启动超时,请查看日志:$LOG_FILE"
|
|
read "?按回车键关闭窗口..."
|
|
exit 1
|