forgegit 1.2.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.
- package/README.md +26 -0
- package/config.cmd +15 -0
- package/init.cmd +193 -0
- package/lib/git-ops.cmd +69 -0
- package/lib/templates.cmd +79 -0
- package/lib/ui.cmd +63 -0
- package/package.json +35 -0
- package/templates/abrir.cmd.tpl +51 -0
- package/templates/auditar.cmd.tpl +340 -0
- package/templates/gitignore.tpl +78 -0
- package/templates/guardar.cmd.tpl +73 -0
- package/templates/historial.cmd.tpl +85 -0
- package/templates/readme.md.tpl +25 -0
- package/templates/snapshots.cmd.tpl +329 -0
- package/templates/subir.cmd.tpl +97 -0
- package/tests/test.cmd +155 -0
- package/tools/bin/forge-update.cmd +7 -0
- package/tools/bin/forge.cmd +141 -0
- package/tools/install.cmd +141 -0
- package/tools/pack.cmd +57 -0
- package/tools/release.cmd +53 -0
- package/tools/restore.cmd +71 -0
- package/tools/uninstall.cmd +54 -0
|
@@ -0,0 +1,329 @@
|
|
|
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
|
|
@@ -0,0 +1,97 @@
|
|
|
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! SUBIR!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
|
|
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
|
package/tests/test.cmd
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
@echo off
|
|
2
|
+
setlocal EnableDelayedExpansion
|
|
3
|
+
chcp 65001 >nul 2>nul
|
|
4
|
+
|
|
5
|
+
echo.
|
|
6
|
+
echo ============================================
|
|
7
|
+
echo forgeGit - Tests
|
|
8
|
+
echo ============================================
|
|
9
|
+
echo.
|
|
10
|
+
|
|
11
|
+
set "FORGE_HOME=%~dp0.."
|
|
12
|
+
set "TEMP_DIR=%TEMP%\forge_test_%RANDOM%%RANDOM%"
|
|
13
|
+
set "PASS=0"
|
|
14
|
+
set "FAIL=0"
|
|
15
|
+
|
|
16
|
+
echo [SETUP] Creando: %TEMP_DIR%
|
|
17
|
+
mkdir "%TEMP_DIR%" 2>nul
|
|
18
|
+
cd /d "%TEMP_DIR%"
|
|
19
|
+
|
|
20
|
+
REM ============================================================
|
|
21
|
+
REM TEST 1: forge instala correctamente
|
|
22
|
+
REM ============================================================
|
|
23
|
+
echo.
|
|
24
|
+
echo [TEST 1] Ejecutando forge...
|
|
25
|
+
call "%FORGE_HOME%\tools\bin\forge.cmd" < nul >nul 2>nul
|
|
26
|
+
|
|
27
|
+
REM Check archivos core
|
|
28
|
+
if exist "init.cmd" (
|
|
29
|
+
echo [OK] init.cmd creado
|
|
30
|
+
set /a PASS+=1
|
|
31
|
+
) else (
|
|
32
|
+
echo [X] init.cmd NO creado
|
|
33
|
+
set /a FAIL+=1
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
if exist "config.cmd" (
|
|
37
|
+
echo [OK] config.cmd creado
|
|
38
|
+
set /a PASS+=1
|
|
39
|
+
) else (
|
|
40
|
+
echo [X] config.cmd NO creado
|
|
41
|
+
set /a FAIL+=1
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
REM Check 7 helpers
|
|
45
|
+
for %%F in (guardar subir snapshots historial abrir auditar) do (
|
|
46
|
+
if exist "%%F.cmd" (
|
|
47
|
+
echo [OK] %%F.cmd creado
|
|
48
|
+
set /a PASS+=1
|
|
49
|
+
) else (
|
|
50
|
+
echo [X] %%F.cmd NO creado
|
|
51
|
+
set /a FAIL+=1
|
|
52
|
+
)
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
REM Check carpetas
|
|
56
|
+
if exist "lib\ui.cmd" (
|
|
57
|
+
echo [OK] lib\ui.cmd presente
|
|
58
|
+
set /a PASS+=1
|
|
59
|
+
) else (
|
|
60
|
+
echo [X] lib\ui.cmd NO presente
|
|
61
|
+
set /a FAIL+=1
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
if exist "templates\abrir.cmd.tpl" (
|
|
65
|
+
echo [OK] templates\abrir.cmd.tpl presente
|
|
66
|
+
set /a PASS+=1
|
|
67
|
+
) else (
|
|
68
|
+
echo [X] templates\abrir.cmd.tpl NO presente
|
|
69
|
+
set /a FAIL+=1
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
REM Check git
|
|
73
|
+
if exist ".git" (
|
|
74
|
+
echo [OK] repositorio git inicializado
|
|
75
|
+
set /a PASS+=1
|
|
76
|
+
) else (
|
|
77
|
+
echo [X] repositorio git NO inicializado
|
|
78
|
+
set /a FAIL+=1
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
REM Check tag
|
|
82
|
+
git tag -l 2>nul | findstr "v1.0.0" >nul
|
|
83
|
+
if not errorlevel 1 (
|
|
84
|
+
echo [OK] tag v1.0.0 creado
|
|
85
|
+
set /a PASS+=1
|
|
86
|
+
) else (
|
|
87
|
+
echo [X] tag v1.0.0 NO creado
|
|
88
|
+
set /a FAIL+=1
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
REM ============================================================
|
|
92
|
+
REM TEST 2: forge update no rompe nada
|
|
93
|
+
REM ============================================================
|
|
94
|
+
echo.
|
|
95
|
+
echo [TEST 2] Ejecutando forge update...
|
|
96
|
+
call "%FORGE_HOME%\tools\bin\forge.cmd" update < nul >nul 2>nul
|
|
97
|
+
|
|
98
|
+
if exist "init.cmd" (
|
|
99
|
+
echo [OK] init.cmd sigue presente
|
|
100
|
+
set /a PASS+=1
|
|
101
|
+
) else (
|
|
102
|
+
echo [X] init.cmd desaparecio
|
|
103
|
+
set /a FAIL+=1
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
REM ============================================================
|
|
107
|
+
REM TEST 3: forge detecta instalacion previa
|
|
108
|
+
REM ============================================================
|
|
109
|
+
echo.
|
|
110
|
+
echo [TEST 3] Ejecutando forge de nuevo (sin confirmar)...
|
|
111
|
+
echo n | call "%FORGE_HOME%\tools\bin\forge.cmd" >nul 2>nul
|
|
112
|
+
|
|
113
|
+
if exist "init.cmd" (
|
|
114
|
+
echo [OK] init.cmd intacto tras cancelacion
|
|
115
|
+
set /a PASS+=1
|
|
116
|
+
) else (
|
|
117
|
+
echo [X] init.cmd se corrompio
|
|
118
|
+
set /a FAIL+=1
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
REM ============================================================
|
|
122
|
+
REM CLEANUP
|
|
123
|
+
REM ============================================================
|
|
124
|
+
echo.
|
|
125
|
+
echo [CLEANUP] Borrando %TEMP_DIR%
|
|
126
|
+
cd /d "%TEMP%"
|
|
127
|
+
rmdir /s /q "%TEMP_DIR%" 2>nul
|
|
128
|
+
|
|
129
|
+
REM ============================================================
|
|
130
|
+
REM RESULTADO
|
|
131
|
+
REM ============================================================
|
|
132
|
+
echo.
|
|
133
|
+
echo ============================================
|
|
134
|
+
echo Resultado
|
|
135
|
+
echo ============================================
|
|
136
|
+
echo.
|
|
137
|
+
echo PASS: !PASS!
|
|
138
|
+
echo FAIL: !FAIL!
|
|
139
|
+
echo.
|
|
140
|
+
|
|
141
|
+
if !FAIL! GTR 0 (
|
|
142
|
+
echo ============================================
|
|
143
|
+
echo [X] TESTS FALLARON
|
|
144
|
+
echo ============================================
|
|
145
|
+
echo.
|
|
146
|
+
pause
|
|
147
|
+
exit /b 1
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
echo ============================================
|
|
151
|
+
echo [OK] TODOS LOS TESTS PASARON
|
|
152
|
+
echo ============================================
|
|
153
|
+
echo.
|
|
154
|
+
pause
|
|
155
|
+
exit /b 0
|