-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinicio.bat
More file actions
107 lines (89 loc) · 3.55 KB
/
inicio.bat
File metadata and controls
107 lines (89 loc) · 3.55 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
@echo off
REM Cambia la codificación a UTF-8
@chcp 65001 >nul
setlocal enabledelayedexpansion
REM Cambia si tu contenedor tiene otro nombre
set "MONGO_CONTAINER=mongodb"
set "BACKUP_DIR=backups"
REM Carga las variables del .env si existe
if exist .env (
for /f "usebackq delims=" %%L in (".env") do (
set "line=%%L"
for /f "tokens=1,* delims==" %%A in ("!line!") do (
set "%%A=%%B"
)
)
)
REM Extrae los datos de la variable .env MONGODB_URI
for /f %%A in ('powershell -NoProfile -Command "$uri='%MONGODB_URI%'; $m=[regex]::Match($uri, 'mongodb://(?<user>[^:]+):(?<pass>[^@]+)@[^/]+/(?<db>[^?]+)'); Write-Output ($m.Groups['user'].Value + '|' + $m.Groups['pass'].Value + '|' + $m.Groups['db'].Value)"') do (
for /f "tokens=1,2,3 delims=|" %%U in ("%%A") do (
set "MONGO_USER=%%U"
set "MONGO_PASS=%%V"
set "MONGO_DB=%%W"
)
)
echo Bienvenido al menú de configuración del bot
echo ===========================================
echo 1: Recrear los comandos slash
echo 2: Recrear los contenedores docker
echo 3: Backup de mongodb
echo 4: Restaurar mongodb
echo ===========================================
choice /c 1234 /n /m "Selecciona una opcion:"
goto :case-%errorlevel%
:case-1
echo Selecionada Recrear los comandos slash
CALL pnpm install --frozen-lockfile --ignore-scripts
CALL pnpm run build
CALL node . slash
GOTO fin
:case-2
echo Selecionada Recrear los contenedores docker
REM Construye la imagen y inicia el docker-compose
CALL docker compose up -d --build
GOTO fin
:case-3
echo Selecionada Backup de mongodb
for /f "usebackq delims=" %%A in (`powershell -NoProfile -Command "Get-Date -Format 'yyyy-MM-dd_HH-mm-ss'"`) do set "DATE=%%A"
set "BACKUP_FILE=%BACKUP_DIR%\mongo-backup-!DATE!.gz"
if not exist %BACKUP_DIR% mkdir %BACKUP_DIR%
echo Realizando backup de MongoDB en !BACKUP_FILE! ...
CALL docker exec %MONGO_CONTAINER% bash -c "mongodump --username=%MONGO_USER% --password=%MONGO_PASS% --db=%MONGO_DB% --authenticationDatabase=admin --archive=/tmp/backup.gz --gzip"
if !ERRORLEVEL! NEQ 0 (
echo ERROR: Falló mongodump
exit /b 1
)
echo Copiando desde el contenedor a: !BACKUP_FILE!
CALL docker cp %MONGO_CONTAINER%:/tmp/backup.gz "!BACKUP_FILE!"
if !ERRORLEVEL! NEQ 0 (
echo ERROR: No se pudo copiar el backup desde el contenedor
exit /b 1
)
CALL docker exec %MONGO_CONTAINER% rm /tmp/backup.gz >nul
echo Backup realizado correctamente
GOTO fin
:case-4
echo Seleccionada Restaurar mongodb
REM Es necesario un segundo argumento
if "%2" == "" (
echo ERROR: Debes especificar el archivo de backup para restaurar
echo Uso: %~nx0 -restore nombre-backup.gz
exit /b 1
)
set "RESTORE_FILE=%~2"
for %%I in ("!RESTORE_FILE!") do set "RESTORE_FILE=%%~fI"
if not exist "!RESTORE_FILE!" (
echo ERROR: El archivo !RESTORE_FILE! no existe
exit /b 1
)
echo Restaurando MongoDB desde !RESTORE_FILE! ...
type "!RESTORE_FILE!" | CALL docker exec -i %MONGO_CONTAINER% mongorestore --username=%MONGO_USER% --password=%MONGO_PASS% --authenticationDatabase=admin --archive --gzip --drop
if !ERRORLEVEL! EQU 0 (
echo Restauración completada correctamente
) else (
echo ERROR: Falló la restauracion
)
GOTO fin
:fin
endlocal
exit /b 0