forgegit 1.4.1 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,78 +0,0 @@
1
- # ==== Sistema operativo ====
2
- Thumbs.db
3
- ehthumbs.db
4
- Desktop.ini
5
- $RECYCLE.BIN/
6
- *.lnk
7
- .DS_Store
8
-
9
- # ==== Editor / IDE ====
10
- .vscode/
11
- .idea/
12
- *.swp
13
- *.swo
14
- *~
15
-
16
- # ==== Node.js ====
17
- node_modules/
18
- npm-debug.log*
19
- yarn-debug.log*
20
- yarn-error.log*
21
- pnpm-debug.log*
22
- package-lock.json
23
- yarn.lock
24
- pnpm-lock.yaml
25
-
26
- # ==== Python ====
27
- __pycache__/
28
- *.py[cod]
29
- .Python
30
- venv/
31
- .venv/
32
- env/
33
- .env
34
-
35
- # ==== Rust ====
36
- target/
37
- Cargo.lock
38
-
39
- # ==== Go ====
40
- *.test
41
- *.out
42
-
43
- # ==== Build / dist ====
44
- dist/
45
- build/
46
- out/
47
- .cache/
48
- .parcel-cache/
49
- .vite/
50
-
51
- # ==== Modelos / cache IA ====
52
- *.onnx
53
- *.bin
54
- *.wasm
55
- *.pb
56
- models/
57
- cache/
58
- .huggingface/
59
-
60
- # ==== Backups manuales ====
61
- versiones/
62
- old_versions/
63
- backup/
64
- backups/
65
-
66
- # ==== Reportes de auditoria ====
67
- audits/
68
-
69
- # ==== Temporales ====
70
- *.log
71
- *.tmp
72
- *.bak
73
- *.orig
74
-
75
- # ==== Capturas ====
76
- screenshots/
77
- capturas/
78
- test-output/
@@ -1,85 +0,0 @@
1
- @echo off
2
- setlocal EnableDelayedExpansion
3
- chcp 65001 >nul 2>nul
4
-
5
- cd /d "%~dp0..\.."
6
-
7
- REM --- Colores ANSI ---
8
- for /F %%a in ('echo prompt $E ^| cmd') do set "ESC=%%a"
9
- if "!ESC!"=="" (
10
- set "C_CY=" & set "C_BC=" & set "C_GR=" & set "C_YE="
11
- set "C_RE=" & set "C_GY=" & set "C_WH=" & set "C_RS="
12
- ) else (
13
- set "C_CY=!ESC![36m" & set "C_BC=!ESC![96m"
14
- set "C_GR=!ESC![32m" & set "C_YE=!ESC![33m"
15
- set "C_RE=!ESC![31m" & set "C_GY=!ESC![90m"
16
- set "C_WH=!ESC![97m" & set "C_RS=!ESC![0m"
17
- )
18
-
19
- echo.
20
- echo !C_CY!============================================!C_RS!
21
- echo !C_BC! HISTORIAL!C_RS! !C_GY!- Vista rapida del proyecto!C_RS!
22
- echo !C_CY!============================================!C_RS!
23
- echo.
24
-
25
- REM --- COMMITS ---
26
- if not exist ".git" (
27
- echo !C_RE![X]!C_RS! Sin repositorio Git.
28
- goto :tags
29
- )
30
-
31
- echo !C_CY!-------------------------------------------------------------!C_RS!
32
- echo !C_BC! ULTIMOS 20 COMMITS!C_RS!
33
- echo !C_CY!-------------------------------------------------------------!C_RS!
34
- echo !C_GY! IDX FECHA HASH MENSAJE!C_RS!
35
- echo !C_CY!-------------------------------------------------------------!C_RS!
36
-
37
- git log -n 20 --date=format:"%%Y-%%m-%%d %%H:%%M:%%S" --pretty=format:"%%h %%ad %%s" > "%TEMP%\fgh_log.txt" 2>nul
38
-
39
- set "IDX=0"
40
- for /f "delims=" %%L in ('type "%TEMP%\fgh_log.txt"') do (
41
- set "LINE=%%L"
42
- set "HASH=!LINE:~0,7!"
43
- set "DT=!LINE:~8,19!"
44
- set "MSG=!LINE:~28!"
45
- echo !C_YE![!IDX!]!C_RS! !C_GY!!DT!!C_RS! !C_YE!!HASH!!C_RS! !C_WH!!MSG!!C_RS!
46
- set /a IDX+=1
47
- )
48
- del "%TEMP%\fgh_log.txt" >nul 2>nul
49
- echo !C_CY!-------------------------------------------------------------!C_RS!
50
- echo.
51
-
52
- :tags
53
- echo !C_CY!-------------------------------------------------------------!C_RS!
54
- echo !C_BC! TAGS!C_RS!
55
- echo !C_CY!-------------------------------------------------------------!C_RS!
56
- if exist ".git" git tag -l
57
- echo.
58
-
59
- echo !C_CY!-------------------------------------------------------------!C_RS!
60
- echo !C_BC! SNAPSHOTS!C_RS!
61
- echo !C_CY!-------------------------------------------------------------!C_RS!
62
- if exist "versiones" goto :show_snaps
63
- echo !C_GY!sin snapshots!C_RS!
64
- goto :end_snaps
65
-
66
- :show_snaps
67
- dir /b /o-n "versiones" 2>nul
68
-
69
- :end_snaps
70
- echo !C_CY!-------------------------------------------------------------!C_RS!
71
- echo.
72
-
73
- call :shell_if_double_click
74
- endlocal
75
- exit /b 0
76
-
77
- :shell_if_double_click
78
- if "%NO_PAUSE%"=="1" goto :eof
79
- echo %cmdcmdline% | find /i "%~nx0" >nul
80
- if errorlevel 1 goto :eof
81
- echo.
82
- echo !C_GY!Sesion interactiva. Escribe 'exit' para cerrar.!C_RS!
83
- echo.
84
- cmd /k
85
- goto :eof
@@ -1,97 +0,0 @@
1
- @echo off
2
- setlocal EnableDelayedExpansion
3
- chcp 65001 >nul 2>nul
4
-
5
- cd /d "%~dp0..\.."
6
-
7
- REM --- Colores ANSI (con fallback) ---
8
- for /F %%a in ('echo prompt $E ^| cmd') do set "ESC=%%a"
9
- if "!ESC!"=="" (
10
- set "C_CY=" & set "C_BC=" & set "C_GR=" & set "C_YE="
11
- set "C_RE=" & set "C_GY=" & set "C_WH=" & set "C_RS="
12
- ) else (
13
- set "C_CY=!ESC![36m" & set "C_BC=!ESC![96m"
14
- set "C_GR=!ESC![32m" & set "C_YE=!ESC![33m"
15
- set "C_RE=!ESC![31m" & set "C_GY=!ESC![90m"
16
- set "C_WH=!ESC![97m" & set "C_RS=!ESC![0m"
17
- )
18
-
19
- echo.
20
- echo !C_CY!============================================!C_RS!
21
- echo !C_BC! PUSH!C_RS! !C_GY!- Push a GitHub!C_RS!
22
- echo !C_CY!============================================!C_RS!
23
- echo.
24
-
25
- if not exist ".git" (
26
- echo !C_RE![X]!C_RS! No hay repositorio Git. Ejecuta: !C_WH!init.cmd!C_RS!
27
- call :shell_if_double_click
28
- exit /b 1
29
- )
30
-
31
- git diff --cached --quiet
32
- set "STAGED=!ERRORLEVEL!"
33
- git diff --quiet
34
- set "UNSTAGED=!ERRORLEVEL!"
35
-
36
- if !STAGED! NEQ 0 goto :has_changes
37
- if !UNSTAGED! NEQ 0 goto :has_changes
38
- goto :check_remote
39
-
40
- :has_changes
41
- echo !C_YE![!]!C_RS! Hay cambios sin commitear.
42
- echo.
43
- set "SAVE="
44
- set /p "SAVE= !C_BC!Guardar cambios primero?!C_RS! !C_GY![S/n]!C_RS!: "
45
- if /i "!SAVE!"=="n" goto :check_remote
46
- echo.
47
- set "SKIP_HISTORIAL=1"
48
- set "NO_PAUSE=1"
49
- call "guardar.cmd"
50
- set "SKIP_HISTORIAL="
51
- set "NO_PAUSE="
52
- echo.
53
-
54
- :check_remote
55
- git remote get-url origin >nul 2>nul
56
- if errorlevel 1 (
57
- echo !C_RE![X]!C_RS! No hay remote 'origin' configurado.
58
- echo.
59
- echo !C_GY!Para vincular tu repo a GitHub:!C_RS!
60
- echo.
61
- echo !C_WH!git remote add origin https://github.com/TU-USUARIO/TU-REPO.git!C_RS!
62
- echo.
63
- call :shell_if_double_click
64
- exit /b 1
65
- )
66
-
67
- echo !C_GY!Subiendo a GitHub...!C_RS!
68
- echo.
69
-
70
- git push -u origin main --follow-tags
71
- set "RC=!ERRORLEVEL!"
72
-
73
- echo.
74
- if !RC! EQU 0 (
75
- echo !C_GR![OK]!C_RS! Push completado
76
- ) else (
77
- echo !C_RE![ERROR]!C_RS! Push fallo con codigo !RC!
78
- )
79
- echo.
80
-
81
- set "NO_PAUSE=1"
82
- call "%~dp0historial.cmd"
83
- set "NO_PAUSE="
84
-
85
- call :shell_if_double_click
86
- endlocal
87
- exit /b 0
88
-
89
- :shell_if_double_click
90
- if "%NO_PAUSE%"=="1" goto :eof
91
- echo %cmdcmdline% | find /i "%~nx0" >nul
92
- if errorlevel 1 goto :eof
93
- echo.
94
- echo !C_GY!Sesion interactiva. Escribe 'exit' para cerrar.!C_RS!
95
- echo.
96
- cmd /k
97
- goto :eof
@@ -1,34 +0,0 @@
1
- # {{PROJECT_NAME}}
2
-
3
- Proyecto inicializado con `forge.cmd`.
4
-
5
- ## Estructura
6
-
7
- - `forge.cmd` - Menu interactivo + CLI
8
- - `.forge/` - Infraestructura (helpers, templates, lib)
9
-
10
- ## Comandos
11
-
12
- ### CLI directo
13
-
14
- forge Menu interactivo
15
- forge save Commit de cambios
16
- forge push Push a GitHub
17
- forge log Ver commits recientes
18
- forge snap Crear/restaurar snapshots
19
- forge audit Generar reporte diff
20
- forge open Abrir en VS Code
21
- forge help Ayuda completa
22
-
23
- ### Helper scripts en .forge/commands/
24
-
25
- - save.cmd - Commit
26
- - push.cmd - Push a GitHub
27
- - snapshots.cmd - Backups
28
- - historial.cmd - Log
29
- - auditar.cmd - Reportes
30
- - abrir.cmd - VS Code
31
-
32
- ---
33
-
34
- Generado por forge-git v{{FG_VERSION}}
@@ -1,73 +0,0 @@
1
- @echo off
2
- setlocal EnableDelayedExpansion
3
- chcp 65001 >nul 2>nul
4
-
5
- cd /d "%~dp0..\.."
6
-
7
- for /F %%a in ('echo prompt $E ^| cmd') do set "ESC=%%a"
8
- if "!ESC!"=="" (
9
- set "C_CY=" & set "C_BC=" & set "C_GR=" & set "C_YE="
10
- set "C_RE=" & set "C_GY=" & set "C_WH=" & set "C_RS="
11
- ) else (
12
- set "C_CY=!ESC![36m" & set "C_BC=!ESC![96m"
13
- set "C_GR=!ESC![32m" & set "C_YE=!ESC![33m"
14
- set "C_RE=!ESC![31m" & set "C_GY=!ESC![90m"
15
- set "C_WH=!ESC![97m" & set "C_RS=!ESC![0m"
16
- )
17
-
18
- if not exist ".git" (
19
- echo !C_RE![X]!C_RS! No hay repositorio Git. Ejecuta: !C_WH!init.cmd!C_RS!
20
- exit /b 1
21
- )
22
-
23
- git add -A >nul 2>nul
24
- git diff --cached --quiet
25
- if not errorlevel 1 (
26
- echo !C_GY!Sin cambios para SAVE.!C_RS!
27
- exit /b 0
28
- )
29
-
30
- echo.
31
- echo !C_CY!------------------------------------------------------------!C_RS!
32
- echo !C_BC! SAVE!C_RS! !C_GY!- Commit local!C_RS!
33
- echo !C_CY!------------------------------------------------------------!C_RS!
34
- echo.
35
- echo !C_GY!Archivos a SAVE:!C_RS!
36
- git diff --cached --name-only | findstr /n "^"
37
- echo.
38
- echo !C_GY!Evita usar: " # : + / , en el mensaje!C_RS!
39
- echo.
40
- echo !C_BC!Mensaje del commit!C_RS! !C_GY![Enter = Sin definir]!C_RS!
41
- set "MSG="
42
- set /p MSG=
43
- if "!MSG!"=="" set "MSG=Sin definir"
44
-
45
- git commit -q -m "!MSG!"
46
- if errorlevel 1 (
47
- echo.
48
- echo !C_RE![X]!C_RS! Commit fallo. Revisa el mensaje.
49
- exit /b 1
50
- )
51
- echo.
52
- echo !C_GR![OK]!C_RS! Commit: !C_WH!!MSG!!C_RS!
53
- echo.
54
-
55
- if "%SKIP_HISTORIAL%"=="1" goto :skip_hist
56
- set "NO_PAUSE=1"
57
- call "%~dp0historial.cmd"
58
- set "NO_PAUSE="
59
- :skip_hist
60
-
61
- call :shell_if_double_click
62
- endlocal
63
- exit /b 0
64
-
65
- :shell_if_double_click
66
- if "%NO_PAUSE%"=="1" goto :eof
67
- echo %cmdcmdline% | find /i "%~nx0" >nul
68
- if errorlevel 1 goto :eof
69
- echo.
70
- echo !C_GY!Sesion interactiva. Escribe 'exit' para cerrar.!C_RS!
71
- echo.
72
- cmd /k
73
- goto :eof
@@ -1,329 +0,0 @@
1
- @echo off
2
- setlocal EnableDelayedExpansion
3
- chcp 65001 >nul 2>nul
4
-
5
- cd /d "%~dp0..\.."
6
-
7
- REM --- Colores ANSI (con fallback) ---
8
- for /F %%a in ('echo prompt $E ^| cmd') do set "ESC=%%a"
9
- if "!ESC!"=="" (
10
- set "C_CY=" & set "C_BC=" & set "C_GR=" & set "C_YE="
11
- set "C_RE=" & set "C_GY=" & set "C_WH=" & set "C_RS="
12
- ) else (
13
- set "C_CY=!ESC![36m" & set "C_BC=!ESC![96m"
14
- set "C_GR=!ESC![32m" & set "C_YE=!ESC![33m"
15
- set "C_RE=!ESC![31m" & set "C_GY=!ESC![90m"
16
- set "C_WH=!ESC![97m" & set "C_RS=!ESC![0m"
17
- )
18
-
19
- REM --- Args ---
20
- if /i "%~1"=="ayuda" goto :ayuda
21
- if /i "%~1"=="--help" goto :ayuda
22
- if /i "%~1"=="-h" goto :ayuda
23
- if /i "%~1"=="listar" goto :listar
24
- if /i "%~1"=="crear" goto :crear
25
- if /i "%~1"=="volver" goto :volver_arg
26
- goto :menu
27
-
28
- REM ============================================================
29
- REM MENU PRINCIPAL
30
- REM ============================================================
31
- :menu
32
- echo.
33
- echo !C_CY!============================================!C_RS!
34
- echo !C_BC! SNAPSHOTS!C_RS! !C_GY!- Copias de seguridad!C_RS!
35
- echo !C_CY!============================================!C_RS!
36
- echo.
37
- echo !C_GY!Un snapshot es una copia completa del proyecto.!C_RS!
38
- echo !C_GY!Sirve para volver atras si algo se rompe.!C_RS!
39
- echo.
40
-
41
- call :count
42
- if !SNAP_COUNT! EQU 0 (
43
- echo !C_GY!No hay snapshots todavia.!C_RS!
44
- ) else (
45
- echo !C_CY!.!C_RS! !C_GY!Snapshots disponibles:!C_RS! !C_WH!!SNAP_COUNT!!C_RS!
46
- echo.
47
- call :list_short
48
- )
49
- echo.
50
-
51
- echo !C_CY!------------------------------------------------------------!C_RS!
52
- echo !C_BC! QUE QUIERES HACER?!C_RS!
53
- echo !C_CY!------------------------------------------------------------!C_RS!
54
- echo !C_YE![c]!C_RS! Crear snapshot
55
- if !SNAP_COUNT! GTR 0 (
56
- echo !C_YE![v]!C_RS! Volver a un snapshot
57
- )
58
- echo !C_YE![l]!C_RS! Listar con detalles
59
- echo !C_YE![Enter]!C_RS! Salir
60
- echo !C_CY!------------------------------------------------------------!C_RS!
61
- echo.
62
-
63
- set "ACTION="
64
- set /p "ACTION= !C_BC!Opcion!C_RS!: "
65
-
66
- if /i "!ACTION!"=="c" goto :crear
67
- if /i "!ACTION!"=="v" goto :volver_prompt
68
- if /i "!ACTION!"=="l" goto :listar
69
- goto :end
70
-
71
- REM ============================================================
72
- REM CREAR SNAPSHOT
73
- REM ============================================================
74
- :crear
75
- echo.
76
- echo !C_CY!------------------------------------------------------------!C_RS!
77
- echo !C_BC! CREAR SNAPSHOT!C_RS!
78
- echo !C_CY!------------------------------------------------------------!C_RS!
79
- echo.
80
- echo !C_GY!Copia todo el proyecto en versiones\!C_RS!
81
- echo !C_GY!Excluye: .git, versiones, node_modules, audits, etc.!C_RS!
82
- echo.
83
-
84
- set "SNAP_NAME="
85
- set /p "SNAP_NAME= !C_BC!Nombre!C_RS! !C_GY![Enter=Sin definir]!C_RS!: "
86
- if "!SNAP_NAME!"=="" set "SNAP_NAME=Sin definir"
87
-
88
- for /f %%i in ('powershell -NoProfile -Command "Get-Date -Format yyyy-MM-dd_HHmmss"') do set "TS=%%i"
89
- set "DEST=versiones\!TS!_!SNAP_NAME!"
90
-
91
- if not exist "versiones" mkdir "versiones"
92
- if not exist "!DEST!" mkdir "!DEST!"
93
-
94
- echo.
95
- echo !C_GY!Copiando archivos...!C_RS!
96
- robocopy "." "!DEST!" /E /XD .git versiones old_versions backup backups node_modules __pycache__ venv .venv env dist build out cache .cache .parcel-cache .vite .vscode .idea audits /XF *.log *.tmp *.bak *.orig Thumbs.db .DS_Store /NFL /NDL /NJH /NJS /NC /NS /NP >nul
97
- set "RC=!ERRORLEVEL!"
98
-
99
- echo.
100
- if !RC! GEQ 8 (
101
- echo !C_RE![X]!C_RS! Robocopy fallo con codigo !RC!
102
- goto :end
103
- )
104
-
105
- set "FCOUNT=0"
106
- for /f %%c in ('dir /b /s "!DEST!" 2^>nul ^| find /c /v ""') do set "FCOUNT=%%c"
107
-
108
- echo !C_GR![OK]!C_RS! Snapshot creado
109
- echo.
110
- echo !C_GY!Ubicacion:!C_RS! !C_WH!!DEST!!C_RS!
111
- echo !C_GY!Archivos:!C_RS! !C_WH!!FCOUNT!!C_RS!
112
- echo.
113
-
114
- goto :end
115
-
116
- REM ============================================================
117
- REM LISTAR (short, para menu)
118
- REM ============================================================
119
- :list_short
120
- set "IDX=0"
121
- for /f "delims=" %%D in ('dir /b /o-n "versiones" 2^>nul') do (
122
- if !IDX! LSS 3 (
123
- echo !C_YE![!IDX!]!C_RS! !C_WH!%%D!C_RS!
124
- )
125
- set /a IDX+=1
126
- )
127
- if !IDX! GTR 3 (
128
- echo !C_GY!... y !IDX! mas en total!C_RS!
129
- )
130
- goto :eof
131
-
132
- REM ============================================================
133
- REM LISTAR (full)
134
- REM ============================================================
135
- :listar
136
- call :count
137
- if !SNAP_COUNT! EQU 0 (
138
- echo.
139
- echo !C_GY!No hay snapshots. Crea uno con:!C_RS! !C_WH!snapshots.cmd crear!C_RS!
140
- goto :end
141
- )
142
-
143
- echo.
144
- echo !C_CY!-------------------------------------------------------------!C_RS!
145
- echo !C_BC! SNAPSHOTS DISPONIBLES!C_RS!
146
- echo !C_CY!-------------------------------------------------------------!C_RS!
147
- echo !C_GY! IDX NOMBRE ARCHIVOS!C_RS!
148
- echo !C_CY!-------------------------------------------------------------!C_RS!
149
-
150
- set "IDX=0"
151
- for /f "delims=" %%D in ('dir /b /o-n "versiones" 2^>nul') do (
152
- set "S_!IDX!=%%D"
153
- set "FC=0"
154
- for /f %%c in ('dir /b /s "versiones\%%D" 2^>nul ^| find /c /v ""') do set "FC=%%c"
155
- echo !C_YE![!IDX!]!C_RS! !C_WH!%%D!C_RS! !C_GY!(!FC! archivos)!C_RS!
156
- set /a IDX+=1
157
- )
158
-
159
- echo !C_CY!-------------------------------------------------------------!C_RS!
160
- echo !C_GY!Total: !SNAP_COUNT! snapshots!C_RS!
161
- echo.
162
- goto :end
163
-
164
- REM ============================================================
165
- REM VOLVER (prompt)
166
- REM ============================================================
167
- :volver_prompt
168
- call :count
169
- if !SNAP_COUNT! EQU 0 (
170
- echo !C_RE![X]!C_RS! No hay snapshots.
171
- goto :end
172
- )
173
-
174
- call :listar_body
175
-
176
- set "RESTORE_IDX="
177
- set /p "RESTORE_IDX= !C_BC!Indice a restaurar!C_RS! !C_GY![0-!SNAP_COUNT!-1]!C_RS!: "
178
- if "!RESTORE_IDX!"=="" goto :end
179
-
180
- call :do_restore "!RESTORE_IDX!"
181
- goto :end
182
-
183
- :volver_arg
184
- if "%~2"=="" (
185
- echo !C_RE![X]!C_RS! Falta el indice.
186
- echo !C_GY!Uso: snapshots.cmd volver <indice>!C_RS!
187
- goto :end
188
- )
189
- call :listar_body
190
- call :do_restore "%~2"
191
- goto :end
192
-
193
- REM Cuerpo compartido de listado
194
- :listar_body
195
- echo.
196
- echo !C_CY!-------------------------------------------------------------!C_RS!
197
- echo !C_BC! SNAPSHOTS DISPONIBLES!C_RS!
198
- echo !C_CY!-------------------------------------------------------------!C_RS!
199
- set "IDX=0"
200
- for /f "delims=" %%D in ('dir /b /o-n "versiones" 2^>nul') do (
201
- set "S_!IDX!=%%D"
202
- echo !C_YE![!IDX!]!C_RS! !C_WH!%%D!C_RS!
203
- set /a IDX+=1
204
- )
205
- echo !C_CY!-------------------------------------------------------------!C_RS!
206
- echo.
207
- goto :eof
208
-
209
- REM ============================================================
210
- REM DO RESTORE
211
- REM ============================================================
212
- :do_restore
213
- set "TARGET=%~1"
214
- set "SNAP_NAME=!S_%TARGET%!"
215
-
216
- if "!SNAP_NAME!"=="" (
217
- echo !C_RE![X]!C_RS! Indice !TARGET! no existe.
218
- goto :eof
219
- )
220
-
221
- set "SNAP_PATH=versiones\!SNAP_NAME!"
222
- if not exist "!SNAP_PATH!" (
223
- echo !C_RE![X]!C_RS! Snapshot no encontrado: !SNAP_PATH!
224
- goto :eof
225
- )
226
-
227
- echo !C_CY!------------------------------------------------------------!C_RS!
228
- echo !C_BC! CONFIRMAR RESTAURACION!C_RS!
229
- echo !C_CY!------------------------------------------------------------!C_RS!
230
- echo.
231
- echo !C_GY!Snapshot:!C_RS! !C_WH!!SNAP_NAME!!C_RS!
232
- echo !C_GY!Modo:!C_RS! !C_WH!overlay (no borra archivos)!C_RS!
233
- echo.
234
- echo !C_GY!Se creara un backup automatico antes de restaurar.!C_RS!
235
- echo !C_YE!ATENCION: los cambios actuales pueden perderse.!C_RS!
236
- echo.
237
-
238
- set "CONFIRM="
239
- set /p "CONFIRM= !C_BC!Escribe SI para confirmar!C_RS!: "
240
- if /i not "!CONFIRM!"=="SI" (
241
- echo !C_GY!Cancelado.!C_RS!
242
- goto :eof
243
- )
244
-
245
- REM --- Backup pre-restore ---
246
- echo.
247
- echo !C_GY!Creando backup de seguridad...!C_RS!
248
- for /f %%i in ('powershell -NoProfile -Command "Get-Date -Format yyyy-MM-dd_HHmmss"') do set "TS=%%i"
249
- set "PREBK=versiones\!TS!_pre-restore"
250
-
251
- if not exist "!PREBK!" mkdir "!PREBK!"
252
- robocopy "." "!PREBK!" /E /XD .git versiones old_versions backup backups node_modules __pycache__ venv .venv env dist build out cache .cache .parcel-cache .vite .vscode .idea audits /XF *.log *.tmp *.bak *.orig Thumbs.db .DS_Store /NFL /NDL /NJH /NJS /NC /NS /NP >nul
253
- echo !C_GR![OK]!C_RS! Backup: !C_WH!!PREBK!!C_RS!
254
- echo.
255
-
256
- REM --- Restore ---
257
- echo !C_GY!Restaurando archivos...!C_RS!
258
- robocopy "!SNAP_PATH!" "." /E /XD .git versiones audits /XF *.log *.tmp /NFL /NDL /NJH /NJS /NC /NS /NP >nul
259
- set "RC=!ERRORLEVEL!"
260
-
261
- echo.
262
- if !RC! GEQ 8 (
263
- echo !C_RE![X]!C_RS! Restauracion fallo con codigo !RC!
264
- echo !C_GY!Puedes volver al estado previo con:!C_RS! !C_WH!snapshots.cmd volver!C_RS!
265
- goto :eof
266
- )
267
-
268
- echo !C_GR![OK]!C_RS! Snapshot restaurado.
269
- echo.
270
- echo !C_GY!Si algo salio mal, tu estado previo esta en:!C_RS!
271
- echo !C_WH!!PREBK!!C_RS!
272
- echo.
273
- goto :eof
274
-
275
- REM ============================================================
276
- REM CONTAR
277
- REM ============================================================
278
- :count
279
- set "SNAP_COUNT=0"
280
- if exist "versiones" (
281
- for /f %%c in ('dir /b /ad "versiones" 2^>nul ^| find /c /v ""') do set "SNAP_COUNT=%%c"
282
- )
283
- goto :eof
284
-
285
- REM ============================================================
286
- REM AYUDA
287
- REM ============================================================
288
- :ayuda
289
- echo.
290
- echo !C_CY!============================================!C_RS!
291
- echo !C_BC! SNAPSHOTS!C_RS! !C_GY!- Ayuda!C_RS!
292
- echo !C_CY!============================================!C_RS!
293
- echo.
294
- echo !C_BC!USO:!C_RS!
295
- echo !C_WH!snapshots.cmd!C_RS! Menu interactivo
296
- echo !C_WH!snapshots.cmd crear!C_RS! Crear snapshot
297
- echo !C_WH!snapshots.cmd listar!C_RS! Listar snapshots
298
- echo !C_WH!snapshots.cmd volver <idx>!C_RS! Restaurar por indice
299
- echo !C_WH!snapshots.cmd --help!C_RS! Esta ayuda
300
- echo.
301
- echo !C_BC!FLUJO TIPICO:!C_RS!
302
- echo !C_GY!1. Antes de un cambio riesgoso:!C_RS!
303
- echo !C_WH!snapshots.cmd crear!C_RS! !C_GY!(nombre: antes de refactor)!C_RS!
304
- echo !C_GY!2. Haces los cambios...!C_RS!
305
- echo !C_GY!3. Si algo se rompe:!C_RS!
306
- echo !C_WH!snapshots.cmd volver 0!C_RS!
307
- echo.
308
- echo !C_BC!SEGURIDAD:!C_RS!
309
- echo !C_GY!- Preview antes de restaurar!C_RS!
310
- echo !C_GY!- Confirmacion con "SI" mayusculas!C_RS!
311
- echo !C_GY!- Backup automatico pre-restore!C_RS!
312
- echo !C_GY!- Modo overlay (no borra archivos)^^!C_RS!
313
- echo.
314
- goto :end
315
-
316
- :end
317
- call :shell_if_double_click
318
- endlocal
319
- exit /b 0
320
-
321
- :shell_if_double_click
322
- if "%NO_PAUSE%"=="1" goto :eof
323
- echo %cmdcmdline% | find /i "%~nx0" >nul
324
- if errorlevel 1 goto :eof
325
- echo.
326
- echo !C_GY!Sesion interactiva. Escribe 'exit' para cerrar.!C_RS!
327
- echo.
328
- cmd /k
329
- goto :eof
File without changes