#!/usr/bin/env bash # SFCraft 文档开发服务器入口 (Linux / macOS / Unix): 先同步贴图, 再启动 hugo server。 # 贴图同步失败(有物品找不到)时终止启动。 # 用法: ./scripts/dev.sh [-NoSync] [hugo server 参数...] set -euo pipefail DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" NOSYNC=0 HUGO_ARGS=() for arg in "$@"; do case "$arg" in -NoSync|--no-sync|-nosync) NOSYNC=1 ;; *) HUGO_ARGS+=("$arg") ;; esac done if [ "$NOSYNC" -eq 0 ]; then echo echo "[1/2] 同步物品贴图" "$DIR/sync-items.sh" else echo "[跳过] 已指定 -NoSync, 不执行贴图同步" fi if ! command -v hugo >/dev/null 2>&1; then HUGO_BIN="" if [ -n "${HUGO:-}" ] && [ -x "$HUGO" ]; then HUGO_BIN="$HUGO" elif [ -n "${LOCALAPPDATA:-}" ]; then HUGO_BIN="$(find "$LOCALAPPDATA/Microsoft/WinGet/Packages" -maxdepth 3 -name hugo.exe 2>/dev/null | head -n 1)" fi if [ -z "$HUGO_BIN" ]; then echo "[错误] 未找到 hugo, 请安装 Hugo、将其加入 PATH, 或设置环境变量 HUGO。" >&2 exit 1 fi else HUGO_BIN="$(command -v hugo)" fi echo echo "[2/2] 启动 hugo server" exec "$HUGO_BIN" server "${HUGO_ARGS[@]}"