-
Notifications
You must be signed in to change notification settings - Fork 248
Expand file tree
/
Copy pathGARSS-LINUX.sh
More file actions
executable file
·134 lines (120 loc) · 2.93 KB
/
Copy pathGARSS-LINUX.sh
File metadata and controls
executable file
·134 lines (120 loc) · 2.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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#!/bin/sh
ROOT_DIR=$(CDPATH= cd "$(dirname "$0")" && pwd)
PROJECT_DIR="$ROOT_DIR/garss-studio"
COMPOSE_FILE="docker-compose.dev.yml"
cd "$PROJECT_DIR" || exit 1
ensure_docker() {
if ! docker --version >/dev/null 2>&1; then
echo "请先安装并启动 Docker。"
return 1
fi
}
ensure_env() {
if [ ! -f ".env" ]; then
cp ".env.example" ".env"
echo "已从 .env.example 创建 .env"
fi
}
entry_url() {
access_code=$(grep -E '^ACCESS_CODE=' .env 2>/dev/null | head -n 1 | cut -d= -f2-)
access_code=${access_code%\"}
access_code=${access_code#\"}
access_code=${access_code:-banana}
echo "http://127.0.0.1:25173/reader?pw=$access_code"
}
open_entry() {
url="$1"
echo "入口: $url"
if command -v xdg-open >/dev/null 2>&1; then
xdg-open "$url" >/dev/null 2>&1 &
else
echo "无法自动打开浏览器,请手动访问: $url"
fi
}
run_action() {
action="$1"
case "$action" in
1|start|启动)
echo "正在启动 GARSS..."
echo ""
ensure_docker || return $?
ensure_env
docker compose -f "$COMPOSE_FILE" up --build -d || return $?
open_entry "$(entry_url)"
return 0
;;
2|stop|关闭)
echo "正在关闭 GARSS..."
echo ""
ensure_docker || return $?
docker compose -f "$COMPOSE_FILE" down
return $?
;;
3|upgrade|升级)
echo "正在升级 GARSS..."
echo ""
ensure_docker || return $?
ensure_env
if [ -d "$ROOT_DIR/.git" ]; then
docker run --rm -v "$ROOT_DIR:/repo" -w /repo alpine/git pull --ff-only || return $?
else
echo "未检测到 .git,跳过代码拉取。"
fi
docker compose -f "$COMPOSE_FILE" pull rsshub || return $?
docker compose -f "$COMPOSE_FILE" up --build -d || return $?
open_entry "$(entry_url)"
return 0
;;
4|status|状态|查看状态)
echo "正在查看 GARSS 状态..."
echo ""
ensure_docker || return $?
ensure_env
echo "入口: $(entry_url)"
echo ""
docker compose -f "$COMPOSE_FILE" ps
return $?
;;
5|exit|quit|退出|退出控制台)
echo "正在退出控制台,GARSS 服务不会被关闭。"
return 99
;;
*)
echo "未知操作: $action"
echo "可用操作: start / stop / upgrade / status / exit"
return 1
;;
esac
}
if [ -n "$1" ]; then
run_action "$1"
exit $?
fi
while true; do
echo "GARSS"
echo ""
echo "1) 启动"
echo "2) 关闭"
echo "3) 升级"
echo "4) 查看状态"
echo "5) 退出控制台(不关闭服务)"
echo ""
printf "请选择操作 [1/2/3/4/5]: "
read action
echo ""
run_action "$action"
exit_code=$?
if [ "$exit_code" -eq 99 ]; then
exit 0
fi
echo ""
if [ "$exit_code" -eq 0 ]; then
echo "操作完成。"
else
echo "操作失败,请查看上面的错误信息。"
fi
echo ""
printf "按回车返回菜单..."
read _input
echo ""
done