-
Notifications
You must be signed in to change notification settings - Fork 248
Expand file tree
/
Copy pathGARSS-WINDOWS.bat
More file actions
156 lines (132 loc) · 3.36 KB
/
Copy pathGARSS-WINDOWS.bat
File metadata and controls
156 lines (132 loc) · 3.36 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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
@echo off
chcp 65001 >nul
setlocal EnableExtensions
set "ROOT_DIR=%~dp0"
if "%ROOT_DIR:~-1%"=="\" set "ROOT_DIR=%ROOT_DIR:~0,-1%"
set "PROJECT_DIR=%ROOT_DIR%\garss-studio"
set "COMPOSE_FILE=docker-compose.dev.yml"
cd /d "%PROJECT_DIR%" || exit /b 1
if not "%~1"=="" (
call :run_action "%~1"
exit /b %ERRORLEVEL%
)
:menu
echo GARSS
echo.
echo 1^) 启动
echo 2^) 关闭
echo 3^) 升级
echo 4^) 查看状态
echo 5^) 退出控制台(不关闭服务)
echo.
set /p "action=请选择操作 [1/2/3/4/5]: "
echo.
call :run_action "%action%"
set "exit_code=%ERRORLEVEL%"
if "%exit_code%"=="99" exit /b 0
echo.
if "%exit_code%"=="0" (
echo 操作完成。
) else (
echo 操作失败,请查看上面的错误信息。
)
echo.
pause
echo.
goto menu
:run_action
set "selected=%~1"
if /i "%selected%"=="1" goto do_start
if /i "%selected%"=="start" goto do_start
if "%selected%"=="启动" goto do_start
if /i "%selected%"=="2" goto do_stop
if /i "%selected%"=="stop" goto do_stop
if "%selected%"=="关闭" goto do_stop
if /i "%selected%"=="3" goto do_upgrade
if /i "%selected%"=="upgrade" goto do_upgrade
if "%selected%"=="升级" goto do_upgrade
if /i "%selected%"=="4" goto do_status
if /i "%selected%"=="status" goto do_status
if "%selected%"=="状态" goto do_status
if "%selected%"=="查看状态" goto do_status
if /i "%selected%"=="5" goto do_exit
if /i "%selected%"=="exit" goto do_exit
if /i "%selected%"=="quit" goto do_exit
if "%selected%"=="退出" goto do_exit
if "%selected%"=="退出控制台" goto do_exit
echo 未知操作: %selected%
echo 可用操作: start / stop / upgrade / status / exit
exit /b 1
:ensure_docker
docker --version >nul 2>nul
if errorlevel 1 (
echo 请先安装并启动 Docker Desktop。
exit /b 1
)
exit /b 0
:ensure_env
if not exist ".env" (
copy ".env.example" ".env" >nul
echo 已从 .env.example 创建 .env
)
exit /b 0
:set_entry_url
set "ACCESS_CODE=banana"
if exist ".env" (
for /f "usebackq tokens=1,* delims==" %%A in (".env") do (
if "%%A"=="ACCESS_CODE" set "ACCESS_CODE=%%B"
)
)
set "ACCESS_CODE=%ACCESS_CODE:"=%"
set "GARSS_URL=http://127.0.0.1:25173/reader?pw=%ACCESS_CODE%"
exit /b 0
:open_entry
call :set_entry_url
echo 入口: %GARSS_URL%
start "" "%GARSS_URL%"
exit /b 0
:do_start
echo 正在启动 GARSS...
echo.
call :ensure_docker || exit /b 1
call :ensure_env || exit /b 1
docker compose -f "%COMPOSE_FILE%" up --build -d
if errorlevel 1 exit /b %ERRORLEVEL%
call :open_entry
exit /b 0
:do_stop
echo 正在关闭 GARSS...
echo.
call :ensure_docker || exit /b 1
docker compose -f "%COMPOSE_FILE%" down
exit /b %ERRORLEVEL%
:do_upgrade
echo 正在升级 GARSS...
echo.
call :ensure_docker || exit /b 1
call :ensure_env || exit /b 1
if exist "%ROOT_DIR%\.git" (
docker run --rm -v "%ROOT_DIR%:/repo" -w /repo alpine/git pull --ff-only
if errorlevel 1 exit /b %ERRORLEVEL%
) else (
echo 未检测到 .git,跳过代码拉取。
)
docker compose -f "%COMPOSE_FILE%" pull rsshub
if errorlevel 1 exit /b %ERRORLEVEL%
docker compose -f "%COMPOSE_FILE%" up --build -d
if errorlevel 1 exit /b %ERRORLEVEL%
call :open_entry
exit /b 0
:do_status
echo 正在查看 GARSS 状态...
echo.
call :ensure_docker || exit /b 1
call :ensure_env || exit /b 1
call :set_entry_url
echo 入口: %GARSS_URL%
echo.
docker compose -f "%COMPOSE_FILE%" ps
exit /b %ERRORLEVEL%
:do_exit
echo 正在退出控制台,GARSS 服务不会被关闭。
exit /b 99