-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdev.sh
More file actions
executable file
·49 lines (45 loc) · 1.93 KB
/
Copy pathdev.sh
File metadata and controls
executable file
·49 lines (45 loc) · 1.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/usr/bin/env bash
# scripts/dev.sh — raguide 本地开发总入口(分发器, 真身)。
# 根目录 dev.sh 是指向本文件的软链, 故 ./dev.sh <cmd> ≡ scripts/dev.sh <cmd>。
#
# 用法:
# ./dev.sh [up] 启动全栈(Docker+后端+前端), 后台运行不占用终端 [默认]; 加 -f 前台跟日志(Ctrl+C 停)
# ./dev.sh status 查看 Docker 栈 + 前后端 + 端口状态(只读)
# ./dev.sh stop 停前后端(Docker 留, 因为重启慢)
# ./dev.sh down 停前后端 + Docker 栈(数据卷保留)
# ./dev.sh restart 停前后端后重新启动(Docker 不动)
# ./dev.sh logs 跟随前后端日志(不停服务)
#
# 各子命令实现在 scripts/dev/<cmd>.sh, 也可单独执行(如 scripts/dev/status.sh)。
# 说明: 后端首启会预热 in-process embedder(bge-m3 + JinaCLIP), 约 20–30s 才 ready, 属正常。
set -uo pipefail
# ---- 解析本脚本真实位置(兼容经根目录软链调用) ----
_SRC="${BASH_SOURCE[0]}"
while [ -L "$_SRC" ]; do
_D="$(cd -P "$(dirname "$_SRC")" >/dev/null 2>&1 && pwd)"
_SRC="$(readlink "$_SRC")"
[[ "$_SRC" != /* ]] && _SRC="$_D/$_SRC"
done
SCRIPT_DIR="$(cd -P "$(dirname "$_SRC")" >/dev/null 2>&1 && pwd)" # = <root>/scripts
DEV_DIR="$SCRIPT_DIR/dev"
usage() {
# 打印 shebang 之后、首个非注释行之前的注释块(去掉前导 "# ")。
awk 'NR==1{next} /^#/{sub(/^# ?/,""); print; next} {exit}' "$_SRC"
}
cmd="${1:-up}"
[[ "$cmd" == "--down" ]] && cmd="down" # 兼容旧用法
case "$cmd" in
up|"") exec bash "$DEV_DIR/up.sh" "${@:2}" ;; # 透传 up 之后的参数(如 -f 前台)
status|st) exec bash "$DEV_DIR/status.sh" ;;
stop) exec bash "$DEV_DIR/stop.sh" ;;
down) exec bash "$DEV_DIR/down.sh" ;;
restart|re) exec bash "$DEV_DIR/restart.sh" ;;
logs|log) exec bash "$DEV_DIR/logs.sh" ;;
-h|--help|help) usage ;;
*)
echo "未知子命令: $cmd" >&2
echo >&2
usage >&2
exit 2
;;
esac