forgegit 1.3.0 → 1.4.1
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/.forge/commands/.gitkeep +0 -0
- package/.forge/commands/abrir.cmd +51 -0
- package/.forge/commands/auditar.cmd +340 -0
- package/.forge/commands/historial.cmd +85 -0
- package/.forge/commands/push.cmd +97 -0
- package/.forge/commands/save.cmd +73 -0
- package/.forge/commands/snapshots.cmd +329 -0
- package/.forge/init.cmd +200 -0
- package/.forge/lib/.gitkeep +0 -0
- package/.forge/lib/git-ops.cmd +92 -0
- package/.forge/lib/templates.cmd +98 -0
- package/.forge/lib/ui.cmd +59 -0
- package/.forge/templates/.gitkeep +0 -0
- package/.forge/templates/abrir.cmd.tpl +51 -0
- package/.forge/templates/auditar.cmd.tpl +340 -0
- package/.forge/templates/forge.cmd.tpl +114 -0
- package/.forge/templates/gitignore.tpl +78 -0
- package/.forge/templates/historial.cmd.tpl +85 -0
- package/.forge/templates/push.cmd.tpl +97 -0
- package/.forge/templates/readme.md.tpl +34 -0
- package/.forge/templates/save.cmd.tpl +73 -0
- package/.forge/templates/serve-static.js +86 -0
- package/.forge/templates/serve.cmd.tpl +209 -0
- package/.forge/templates/snapshots.cmd.tpl +329 -0
- package/MANUAL.md +61 -68
- package/config.cmd +14 -14
- package/forge.cmd +114 -0
- package/init.cmd +199 -190
- package/lib/git-ops.cmd +91 -91
- package/lib/templates.cmd +98 -97
- package/lib/ui.cmd +58 -57
- package/package.json +38 -36
- package/templates/forge.cmd.tpl +6 -2
- package/templates/serve-static.js +86 -0
- package/templates/serve.cmd.tpl +209 -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
|
package/.forge/init.cmd
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
@echo off
|
|
2
|
+
setlocal EnableDelayedExpansion
|
|
3
|
+
chcp 65001 >nul 2>nul
|
|
4
|
+
|
|
5
|
+
cd /d "%~dp0"
|
|
6
|
+
cls
|
|
7
|
+
|
|
8
|
+
set "ROOT=%~dp0"
|
|
9
|
+
|
|
10
|
+
REM --- Detectar donde esta lib/ y templates/ ---
|
|
11
|
+
if exist ".forge\lib\ui.cmd" (
|
|
12
|
+
set "LIB=%ROOT%.forge\lib"
|
|
13
|
+
set "TPL=%ROOT%.forge\templates"
|
|
14
|
+
set "CMDS=%ROOT%.forge\commands"
|
|
15
|
+
) else (
|
|
16
|
+
set "LIB=%ROOT%lib"
|
|
17
|
+
set "TPL=%ROOT%templates"
|
|
18
|
+
set "CMDS=%ROOT%.forge\commands"
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
REM --- Force mode ---
|
|
22
|
+
set "FORCE=0"
|
|
23
|
+
if /i "%~1"=="--force" set "FORCE=1"
|
|
24
|
+
if /i "%~1"=="force" set "FORCE=1"
|
|
25
|
+
if /i "%~1"=="-f" set "FORCE=1"
|
|
26
|
+
|
|
27
|
+
call "%ROOT%config.cmd"
|
|
28
|
+
|
|
29
|
+
for %%a in ("%CD%") do set "PROJECT_NAME=%%~nxa"
|
|
30
|
+
|
|
31
|
+
call "%LIB%\ui.cmd" banner
|
|
32
|
+
|
|
33
|
+
REM --- STEP 1/17: Node.js ---
|
|
34
|
+
where node >nul 2>nul
|
|
35
|
+
if errorlevel 1 (
|
|
36
|
+
echo [1/17] Node.js MISSING
|
|
37
|
+
echo Descargalo desde: https://nodejs.org/
|
|
38
|
+
goto :abort
|
|
39
|
+
)
|
|
40
|
+
for /f "tokens=*" %%v in ('node --version 2^>nul') do set "NODE_VER=%%v"
|
|
41
|
+
call "%LIB%\ui.cmd" step 1/17 "Node.js !NODE_VER!" "OK"
|
|
42
|
+
|
|
43
|
+
REM --- STEP 2/17: Git ---
|
|
44
|
+
where git >nul 2>nul
|
|
45
|
+
if errorlevel 1 (
|
|
46
|
+
echo [2/17] Git MISSING
|
|
47
|
+
echo Descargalo desde: https://git-scm.com/download/win
|
|
48
|
+
goto :abort
|
|
49
|
+
)
|
|
50
|
+
for /f "tokens=*" %%v in ('git --version 2^>nul') do set "GIT_VER=%%v"
|
|
51
|
+
call "%LIB%\ui.cmd" step 2/17 "!GIT_VER!" "OK"
|
|
52
|
+
|
|
53
|
+
REM --- STEP 3/17: Init repo ---
|
|
54
|
+
call "%LIB%\git-ops.cmd" init
|
|
55
|
+
|
|
56
|
+
REM --- STEP 4/17: Branch main ---
|
|
57
|
+
call "%LIB%\git-ops.cmd" branch_main
|
|
58
|
+
|
|
59
|
+
REM --- STEP 5/17: Crear estructura .forge/ ---
|
|
60
|
+
if exist ".forge\commands" goto :step5_ok
|
|
61
|
+
mkdir ".forge" 2>nul
|
|
62
|
+
mkdir ".forge\commands" 2>nul
|
|
63
|
+
mkdir ".forge\lib" 2>nul
|
|
64
|
+
mkdir ".forge\templates" 2>nul
|
|
65
|
+
call "%LIB%\ui.cmd" step 5/17 "Estructura .forge/" "CREADO"
|
|
66
|
+
goto :step6
|
|
67
|
+
:step5_ok
|
|
68
|
+
call "%LIB%\ui.cmd" step 5/17 "Estructura .forge/" "YA EXISTE"
|
|
69
|
+
|
|
70
|
+
:step6
|
|
71
|
+
REM --- STEP 6/17: .gitignore ---
|
|
72
|
+
if exist ".gitignore" goto :step6_ok
|
|
73
|
+
call "%LIB%\templates.cmd" write_gitignore
|
|
74
|
+
call "%LIB%\ui.cmd" step 6/17 ".gitignore universal" "CREADO"
|
|
75
|
+
goto :step7
|
|
76
|
+
:step6_ok
|
|
77
|
+
call "%LIB%\ui.cmd" step 6/17 ".gitignore" "YA EXISTE"
|
|
78
|
+
|
|
79
|
+
:step7
|
|
80
|
+
REM --- STEP 7/17: README.md ---
|
|
81
|
+
if exist "README.md" goto :step7_ok
|
|
82
|
+
call "%LIB%\templates.cmd" write_readme
|
|
83
|
+
call "%LIB%\ui.cmd" step 7/17 "README.md adaptativo" "CREADO"
|
|
84
|
+
goto :step8
|
|
85
|
+
:step7_ok
|
|
86
|
+
call "%LIB%\ui.cmd" step 7/17 "README.md" "YA EXISTE"
|
|
87
|
+
|
|
88
|
+
:step8
|
|
89
|
+
REM --- STEP 8/17: forge.cmd ---
|
|
90
|
+
if exist "forge.cmd" goto :step8_ok
|
|
91
|
+
call "%LIB%\templates.cmd" write_forge
|
|
92
|
+
call "%LIB%\ui.cmd" step 8/17 "forge.cmd menu" "CREADO"
|
|
93
|
+
goto :step9
|
|
94
|
+
:step8_ok
|
|
95
|
+
call "%LIB%\ui.cmd" step 8/17 "forge.cmd" "YA EXISTE"
|
|
96
|
+
|
|
97
|
+
:step9
|
|
98
|
+
REM --- STEP 9/17: save.cmd ---
|
|
99
|
+
if exist ".forge\commands\save.cmd" goto :step9_ok
|
|
100
|
+
call "%LIB%\templates.cmd" write_save
|
|
101
|
+
call "%LIB%\ui.cmd" step 9/17 "save.cmd" "CREADO"
|
|
102
|
+
goto :step10
|
|
103
|
+
:step9_ok
|
|
104
|
+
call "%LIB%\ui.cmd" step 9/17 "save.cmd" "YA EXISTE"
|
|
105
|
+
|
|
106
|
+
:step10
|
|
107
|
+
REM --- STEP 10/17: push.cmd ---
|
|
108
|
+
if exist ".forge\commands\push.cmd" goto :step10_ok
|
|
109
|
+
call "%LIB%\templates.cmd" write_push
|
|
110
|
+
call "%LIB%\ui.cmd" step 10/17 "push.cmd" "CREADO"
|
|
111
|
+
goto :step11
|
|
112
|
+
:step10_ok
|
|
113
|
+
call "%LIB%\ui.cmd" step 10/17 "push.cmd" "YA EXISTE"
|
|
114
|
+
|
|
115
|
+
:step11
|
|
116
|
+
REM --- STEP 11/17: snapshots.cmd ---
|
|
117
|
+
if exist ".forge\commands\snapshots.cmd" goto :step11_ok
|
|
118
|
+
call "%LIB%\templates.cmd" write_snapshots
|
|
119
|
+
call "%LIB%\ui.cmd" step 11/17 "snapshots.cmd" "CREADO"
|
|
120
|
+
goto :step12
|
|
121
|
+
:step11_ok
|
|
122
|
+
call "%LIB%\ui.cmd" step 11/17 "snapshots.cmd" "YA EXISTE"
|
|
123
|
+
|
|
124
|
+
:step12
|
|
125
|
+
REM --- STEP 12/17: historial.cmd ---
|
|
126
|
+
if exist ".forge\commands\historial.cmd" goto :step12_ok
|
|
127
|
+
call "%LIB%\templates.cmd" write_historial
|
|
128
|
+
call "%LIB%\ui.cmd" step 12/17 "historial.cmd" "CREADO"
|
|
129
|
+
goto :step13
|
|
130
|
+
:step12_ok
|
|
131
|
+
call "%LIB%\ui.cmd" step 12/17 "historial.cmd" "YA EXISTE"
|
|
132
|
+
|
|
133
|
+
:step13
|
|
134
|
+
REM --- STEP 13/17: abrir.cmd ---
|
|
135
|
+
if exist ".forge\commands\abrir.cmd" goto :step13_ok
|
|
136
|
+
call "%LIB%\templates.cmd" write_abrir
|
|
137
|
+
call "%LIB%\ui.cmd" step 13/17 "abrir.cmd" "CREADO"
|
|
138
|
+
goto :step14
|
|
139
|
+
:step13_ok
|
|
140
|
+
call "%LIB%\ui.cmd" step 13/17 "abrir.cmd" "YA EXISTE"
|
|
141
|
+
|
|
142
|
+
:step14
|
|
143
|
+
REM --- STEP 14/17: auditar.cmd ---
|
|
144
|
+
if exist ".forge\commands\auditar.cmd" goto :step14_ok
|
|
145
|
+
call "%LIB%\templates.cmd" write_auditar
|
|
146
|
+
call "%LIB%\ui.cmd" step 14/17 "auditar.cmd" "CREADO"
|
|
147
|
+
goto :step15
|
|
148
|
+
:step14_ok
|
|
149
|
+
call "%LIB%\ui.cmd" step 14/17 "auditar.cmd" "YA EXISTE"
|
|
150
|
+
|
|
151
|
+
:step15
|
|
152
|
+
REM --- STEP 15/17: serve.cmd ---
|
|
153
|
+
if exist ".forge\commands\serve.cmd" goto :step15_ok
|
|
154
|
+
call "%LIB%\templates.cmd" write_serve
|
|
155
|
+
call "%LIB%\ui.cmd" step 15/17 "serve.cmd" "CREADO"
|
|
156
|
+
goto :step16
|
|
157
|
+
:step15_ok
|
|
158
|
+
call "%LIB%\ui.cmd" step 15/17 "serve.cmd" "YA EXISTE"
|
|
159
|
+
|
|
160
|
+
:step16
|
|
161
|
+
REM --- STEP 16/17: Commit ---
|
|
162
|
+
call "%LIB%\git-ops.cmd" has_changes
|
|
163
|
+
if errorlevel 1 (
|
|
164
|
+
set "USER_MSG="
|
|
165
|
+
set /p "USER_MSG= Mensaje del commit [Enter = default]: "
|
|
166
|
+
if "!USER_MSG!"=="" set "USER_MSG=%COMMIT_MESSAGE%"
|
|
167
|
+
call "%LIB%\git-ops.cmd" commit "!USER_MSG!"
|
|
168
|
+
call "%LIB%\ui.cmd" step 16/17 "Commit: !USER_MSG!" "CREADO"
|
|
169
|
+
) else (
|
|
170
|
+
call "%LIB%\ui.cmd" step 16/17 "Sin cambios para commit" "SKIP"
|
|
171
|
+
)
|
|
172
|
+
|
|
173
|
+
REM --- STEP 17/17: Tag ---
|
|
174
|
+
call "%LIB%\git-ops.cmd" tag
|
|
175
|
+
if errorlevel 1 (
|
|
176
|
+
call "%LIB%\ui.cmd" step 17/17 "Tag %TAG_INITIAL%" "CREADO"
|
|
177
|
+
) else (
|
|
178
|
+
call "%LIB%\ui.cmd" step 17/17 "Tag %TAG_INITIAL%" "YA EXISTE"
|
|
179
|
+
)
|
|
180
|
+
|
|
181
|
+
call "%LIB%\ui.cmd" done
|
|
182
|
+
call :shell_if_double_click
|
|
183
|
+
endlocal
|
|
184
|
+
exit /b 0
|
|
185
|
+
|
|
186
|
+
:abort
|
|
187
|
+
call "%LIB%\ui.cmd" abort
|
|
188
|
+
call :shell_if_double_click
|
|
189
|
+
endlocal
|
|
190
|
+
exit /b 1
|
|
191
|
+
|
|
192
|
+
:shell_if_double_click
|
|
193
|
+
if "%NO_PAUSE%"=="1" goto :eof
|
|
194
|
+
echo %cmdcmdline% | find /i "%~nx0" >nul
|
|
195
|
+
if errorlevel 1 goto :eof
|
|
196
|
+
echo.
|
|
197
|
+
echo Sesion interactiva abierta. Escribe 'exit' para cerrar.
|
|
198
|
+
echo.
|
|
199
|
+
cmd /k
|
|
200
|
+
goto :eof
|
|
File without changes
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
@echo off
|
|
2
|
+
REM ============================================================
|
|
3
|
+
REM forge-git / lib/git-ops.cmd
|
|
4
|
+
REM Git operations
|
|
5
|
+
REM
|
|
6
|
+
REM Usage:
|
|
7
|
+
REM call "git-ops.cmd" init - init repo
|
|
8
|
+
REM call "git-ops.cmd" branch_main - rename branch to main
|
|
9
|
+
REM call "git-ops.cmd" has_changes - check for pending changes
|
|
10
|
+
REM call "git-ops.cmd" commit "msg" - commit with message
|
|
11
|
+
REM call "git-ops.cmd" tag - create tag
|
|
12
|
+
REM
|
|
13
|
+
REM Return codes:
|
|
14
|
+
REM 0 = nothing to do (already exists / no changes)
|
|
15
|
+
REM 1 = action performed
|
|
16
|
+
REM ============================================================
|
|
17
|
+
|
|
18
|
+
REM --- Detectar PROJECT_ROOT ---
|
|
19
|
+
REM Si git-ops.cmd esta en .forge/lib/ -> PROJECT_ROOT = ..\..
|
|
20
|
+
REM Si git-ops.cmd esta en lib/ -> PROJECT_ROOT = ..
|
|
21
|
+
set "ROOT=%~dp0"
|
|
22
|
+
REM Detectar si estamos dentro de .forge
|
|
23
|
+
echo "%ROOT%" | find /i ".forge" >nul
|
|
24
|
+
if not errorlevel 1 (
|
|
25
|
+
set "PROJECT_ROOT=%ROOT%..\.."
|
|
26
|
+
) else (
|
|
27
|
+
set "PROJECT_ROOT=%ROOT%.."
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
if "%~1"=="init" goto :init
|
|
31
|
+
if "%~1"=="branch_main" goto :branch_main
|
|
32
|
+
if "%~1"=="has_changes" goto :has_changes
|
|
33
|
+
if "%~1"=="commit" goto :commit
|
|
34
|
+
if "%~1"=="tag" goto :tag
|
|
35
|
+
goto :eof
|
|
36
|
+
|
|
37
|
+
:init
|
|
38
|
+
pushd "%PROJECT_ROOT%"
|
|
39
|
+
if exist ".git" (
|
|
40
|
+
popd
|
|
41
|
+
call "%~dp0ui.cmd" step 3/17 "Repositorio Git" "YA EXISTE"
|
|
42
|
+
exit /b 0
|
|
43
|
+
)
|
|
44
|
+
git init -q
|
|
45
|
+
if errorlevel 1 (
|
|
46
|
+
popd
|
|
47
|
+
call "%~dp0ui.cmd" step 3/17 "Repositorio Git" "ERROR"
|
|
48
|
+
exit /b 1
|
|
49
|
+
)
|
|
50
|
+
popd
|
|
51
|
+
call "%~dp0ui.cmd" step 3/17 "Repositorio Git" "CREADO"
|
|
52
|
+
exit /b 1
|
|
53
|
+
|
|
54
|
+
:branch_main
|
|
55
|
+
pushd "%PROJECT_ROOT%"
|
|
56
|
+
git branch -M %BRANCH_MAIN% >nul 2>nul
|
|
57
|
+
popd
|
|
58
|
+
call "%~dp0ui.cmd" step 4/17 "Rama principal: %BRANCH_MAIN%" "OK"
|
|
59
|
+
exit /b 0
|
|
60
|
+
|
|
61
|
+
:has_changes
|
|
62
|
+
pushd "%PROJECT_ROOT%"
|
|
63
|
+
git add -A >nul 2>nul
|
|
64
|
+
git diff --cached --quiet
|
|
65
|
+
set "RC=%ERRORLEVEL%"
|
|
66
|
+
popd
|
|
67
|
+
if %RC% NEQ 0 ( exit /b 1 ) else ( exit /b 0 )
|
|
68
|
+
|
|
69
|
+
:commit
|
|
70
|
+
set "MSG=%~2"
|
|
71
|
+
if "!MSG!"=="" set "MSG=%COMMIT_MESSAGE%"
|
|
72
|
+
pushd "%PROJECT_ROOT%"
|
|
73
|
+
git commit -q -m "!MSG!"
|
|
74
|
+
set "RC=%ERRORLEVEL%"
|
|
75
|
+
popd
|
|
76
|
+
if %RC% NEQ 0 ( exit /b 0 ) else ( exit /b 1 )
|
|
77
|
+
|
|
78
|
+
:tag
|
|
79
|
+
pushd "%PROJECT_ROOT%"
|
|
80
|
+
git rev-parse %TAG_INITIAL% >nul 2>nul
|
|
81
|
+
if not errorlevel 1 (
|
|
82
|
+
popd
|
|
83
|
+
exit /b 0
|
|
84
|
+
)
|
|
85
|
+
git rev-parse HEAD >nul 2>nul
|
|
86
|
+
if errorlevel 1 (
|
|
87
|
+
popd
|
|
88
|
+
exit /b 0
|
|
89
|
+
)
|
|
90
|
+
git tag -a %TAG_INITIAL% -m "%TAG_MESSAGE%" 2>nul
|
|
91
|
+
popd
|
|
92
|
+
exit /b 1
|