forgegit 1.4.0 → 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.
- 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/{config.cmd → .forge/config.cmd} +1 -1
- package/.forge/init.cmd +173 -0
- package/.forge/lib/.gitkeep +0 -0
- package/.forge/templates/.gitkeep +0 -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/forge.cmd +120 -0
- package/package.json +29 -36
- package/init.cmd +0 -200
- /package/{templates/serve.cmd.tpl → .forge/commands/serve.cmd} +0 -0
- /package/{templates/snapshots.cmd.tpl → .forge/commands/snapshots.cmd} +0 -0
- /package/{lib → .forge/lib}/git-ops.cmd +0 -0
- /package/{lib → .forge/lib}/templates.cmd +0 -0
- /package/{lib → .forge/lib}/ui.cmd +0 -0
- /package/{templates → .forge}/serve-static.js +0 -0
- /package/{templates → .forge/templates}/abrir.cmd.tpl +0 -0
- /package/{templates → .forge/templates}/auditar.cmd.tpl +0 -0
- /package/{templates → .forge/templates}/forge.cmd.tpl +0 -0
- /package/{templates → .forge/templates}/gitignore.tpl +0 -0
- /package/{templates → .forge/templates}/historial.cmd.tpl +0 -0
- /package/{templates → .forge/templates}/push.cmd.tpl +0 -0
- /package/{templates → .forge/templates}/readme.md.tpl +0 -0
- /package/{templates → .forge/templates}/save.cmd.tpl +0 -0
|
File without changes
|
|
@@ -0,0 +1,51 @@
|
|
|
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
|
+
where code >nul 2>nul
|
|
20
|
+
if errorlevel 1 (
|
|
21
|
+
echo.
|
|
22
|
+
echo !C_RE![X]!C_RS! VS Code CLI no esta en el PATH.
|
|
23
|
+
echo.
|
|
24
|
+
echo !C_GY!Instala:!C_RS!
|
|
25
|
+
echo !C_WH!1.!C_RS! Abre VS Code
|
|
26
|
+
echo !C_WH!2.!C_RS! Ctrl+Shift+P
|
|
27
|
+
echo !C_WH!3.!C_RS! "Shell Command: Install 'code' command in PATH"
|
|
28
|
+
echo.
|
|
29
|
+
call :shell_if_double_click
|
|
30
|
+
exit /b 1
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
if "%~1"=="" (
|
|
34
|
+
echo !C_GY!Abriendo proyecto en VS Code...!C_RS!
|
|
35
|
+
code .
|
|
36
|
+
) else (
|
|
37
|
+
echo !C_GY!Abriendo en VS Code:!C_RS! !C_WH!%*!C_RS!
|
|
38
|
+
code %*
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
exit /b 0
|
|
42
|
+
|
|
43
|
+
:shell_if_double_click
|
|
44
|
+
if "%NO_PAUSE%"=="1" goto :eof
|
|
45
|
+
echo %cmdcmdline% | find /i "%~nx0" >nul
|
|
46
|
+
if errorlevel 1 goto :eof
|
|
47
|
+
echo.
|
|
48
|
+
echo !C_GY!Sesion interactiva. Escribe 'exit' para cerrar.!C_RS!
|
|
49
|
+
echo.
|
|
50
|
+
cmd /k
|
|
51
|
+
goto :eof
|
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
@echo off
|
|
2
|
+
setlocal EnableDelayedExpansion
|
|
3
|
+
chcp 65001 >nul 2>nul
|
|
4
|
+
|
|
5
|
+
cd /d "%~dp0..\.."
|
|
6
|
+
|
|
7
|
+
REM - Detectar soporte ANSI (Windows 10+ / Windows Terminal) -
|
|
8
|
+
set "ANSI=1"
|
|
9
|
+
for /F %%a in ('echo prompt $E ^| cmd') do set "ESC=%%a"
|
|
10
|
+
|
|
11
|
+
REM - Fallback si no hay soporte ANSI -
|
|
12
|
+
if "!ESC!"=="" set "ANSI=0"
|
|
13
|
+
|
|
14
|
+
if "!ANSI!"=="1" (
|
|
15
|
+
set "C_CYAN=!ESC![36m"
|
|
16
|
+
set "C_BCYAN=!ESC![96m"
|
|
17
|
+
set "C_GREEN=!ESC![32m"
|
|
18
|
+
set "C_YELLOW=!ESC![33m"
|
|
19
|
+
set "C_RED=!ESC![31m"
|
|
20
|
+
set "C_GRAY=!ESC![90m"
|
|
21
|
+
set "C_DIM=!ESC![2m"
|
|
22
|
+
set "C_WHITE=!ESC![97m"
|
|
23
|
+
set "C_RESET=!ESC![0m"
|
|
24
|
+
) else (
|
|
25
|
+
set "C_CYAN="
|
|
26
|
+
set "C_BCYAN="
|
|
27
|
+
set "C_GREEN="
|
|
28
|
+
set "C_YELLOW="
|
|
29
|
+
set "C_RED="
|
|
30
|
+
set "C_GRAY="
|
|
31
|
+
set "C_DIM="
|
|
32
|
+
set "C_WHITE="
|
|
33
|
+
set "C_RESET="
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
REM - Help flag -
|
|
37
|
+
if /i "%~1"=="-help" goto :help
|
|
38
|
+
if /i "%~1"=="-h" goto :help
|
|
39
|
+
if /i "%~1"=="help" goto :help
|
|
40
|
+
|
|
41
|
+
if not exist ".git" (
|
|
42
|
+
echo !C_RED![X]!C_RESET! No hay repositorio Git. Ejecuta: init.cmd
|
|
43
|
+
exit /b 1
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
REM - Banner -
|
|
47
|
+
echo.
|
|
48
|
+
echo !C_CYAN!============================================!C_RESET!
|
|
49
|
+
echo !C_BCYAN! AUDITAR!C_RESET! !C_GRAY!- Reportes de cambios!C_RESET!
|
|
50
|
+
echo !C_CYAN!============================================!C_RESET!
|
|
51
|
+
echo.
|
|
52
|
+
echo !C_GRAY!Genera un .txt con los cambios entre dos puntos del!C_RESET!
|
|
53
|
+
echo !C_GRAY!historial. Ideal para auditar con IA o revisar un rango.!C_RESET!
|
|
54
|
+
echo.
|
|
55
|
+
|
|
56
|
+
REM - 1. Estado actual -
|
|
57
|
+
for /f "tokens=*" %%b in ('git branch --show-current 2^>nul') do set "BRANCH=%%b"
|
|
58
|
+
|
|
59
|
+
echo !C_CYAN!-!C_RESET! !C_GRAY!Branch:!C_RESET! !C_WHITE!!BRANCH!!C_RESET!
|
|
60
|
+
|
|
61
|
+
git add -A >nul 2>nul
|
|
62
|
+
git diff --cached --quiet
|
|
63
|
+
if errorlevel 1 (
|
|
64
|
+
set "NCH=0"
|
|
65
|
+
for /f %%c in ('git diff --cached --name-only ^| find /c /v ""') do set "NCH=%%c"
|
|
66
|
+
echo !C_CYAN!-!C_RESET! !C_GRAY!Cambios:!C_RESET! !C_YELLOW!!NCH! archivos sin commitear!C_RESET!
|
|
67
|
+
) else (
|
|
68
|
+
echo !C_CYAN!-!C_RESET! !C_GRAY!Cambios:!C_RESET! !C_GREEN!limpio!C_RESET!
|
|
69
|
+
)
|
|
70
|
+
echo.
|
|
71
|
+
|
|
72
|
+
REM - 2. Cuantos commits listar -
|
|
73
|
+
set "LIMIT=10"
|
|
74
|
+
set "INPUT="
|
|
75
|
+
set /p "INPUT= !C_BCYAN!Cuantos commits listar?!C_RESET! !C_GRAY![10 por defecto, T=todos]!C_RESET!: "
|
|
76
|
+
if /i "!INPUT!"=="T" (
|
|
77
|
+
set "LIMIT=9999"
|
|
78
|
+
) else if not "!INPUT!"=="" (
|
|
79
|
+
set "LIMIT=!INPUT!"
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
REM - 3. Log a temp -
|
|
83
|
+
set "TMPLOG=%TEMP%\forge_git_log.txt"
|
|
84
|
+
git log -n !LIMIT! --date=format:"%%Y-%%m-%%d %%H:%%M:%%S" --pretty=format:"%%h %%ad %%s" > "!TMPLOG!" 2>nul
|
|
85
|
+
|
|
86
|
+
REM - 4. Tabla con separadores -
|
|
87
|
+
echo.
|
|
88
|
+
echo !C_CYAN!-------------------------------------------------------------!C_RESET!
|
|
89
|
+
echo !C_BCYAN! HISTORIAL!C_RESET!
|
|
90
|
+
echo !C_CYAN!-------------------------------------------------------------!C_RESET!
|
|
91
|
+
echo !C_GRAY! IDX FECHA HASH MENSAJE!C_RESET!
|
|
92
|
+
echo !C_CYAN!-------------------------------------------------------------!C_RESET!
|
|
93
|
+
|
|
94
|
+
set "IDX=0"
|
|
95
|
+
set "FIRST=1"
|
|
96
|
+
for /f "delims=" %%L in ('type "!TMPLOG!"') do (
|
|
97
|
+
if "!FIRST!"=="0" (
|
|
98
|
+
echo !C_DIM!!C_GRAY! . . . . . . . . . . . . . . . . . . .!C_RESET!
|
|
99
|
+
)
|
|
100
|
+
set "LINE=%%L"
|
|
101
|
+
set "HASH=!LINE:~0,7!"
|
|
102
|
+
set "DATETIME=!LINE:~8,19!"
|
|
103
|
+
set "MSG=!LINE:~28!"
|
|
104
|
+
set "H_!IDX!=!HASH!"
|
|
105
|
+
echo !C_BCYAN![!IDX!]!C_RESET! !C_GRAY!!DATETIME!!C_RESET! !C_YELLOW!!HASH!!C_RESET! !C_WHITE!!MSG!!C_RESET!
|
|
106
|
+
set /a IDX=IDX+1
|
|
107
|
+
set "FIRST=0"
|
|
108
|
+
)
|
|
109
|
+
del "!TMPLOG!" >nul 2>nul
|
|
110
|
+
|
|
111
|
+
if !IDX! EQU 0 (
|
|
112
|
+
echo !C_RED![X]!C_RESET! No hay commits.
|
|
113
|
+
goto :end
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
echo !C_CYAN!-------------------------------------------------------------!C_RESET!
|
|
117
|
+
echo !C_GRAY!Total: !IDX! commits ^(0 = mas reciente^)!C_RESET!
|
|
118
|
+
echo.
|
|
119
|
+
|
|
120
|
+
REM - 5. Modos de uso (ordenados por frecuencia) -
|
|
121
|
+
echo !C_CYAN!-------------------------------------------------------------!C_RESET!
|
|
122
|
+
echo !C_BCYAN! MODOS DE USO!C_RESET!
|
|
123
|
+
echo !C_CYAN!-------------------------------------------------------------!C_RESET!
|
|
124
|
+
echo !C_YELLOW!0,W!C_RESET! !C_GRAY!Comparar ultimo commit vs estado actual!C_RESET! !C_GREEN![recomendado]!C_RESET!
|
|
125
|
+
echo !C_YELLOW!0,3!C_RESET! !C_GRAY!Comparar commit [0] vs commit [3]!C_RESET!
|
|
126
|
+
echo !C_YELLOW!0-3!C_RESET! !C_GRAY!Alias de 0,3!C_RESET!
|
|
127
|
+
echo !C_YELLOW![Enter]!C_RESET! !C_GRAY!Solo ver historial (sin reporte)!C_RESET!
|
|
128
|
+
echo !C_CYAN!-------------------------------------------------------------!C_RESET!
|
|
129
|
+
echo.
|
|
130
|
+
|
|
131
|
+
REM - 6. Pedir rango -
|
|
132
|
+
set "RANGE="
|
|
133
|
+
set /p "RANGE= !C_BCYAN!Rango a auditar:!C_RESET! !C_GRAY![Enter=0,W]!C_RESET!: "
|
|
134
|
+
if "!RANGE!"=="" (
|
|
135
|
+
set "RANGE=0,W"
|
|
136
|
+
echo !C_GRAY!Usando default: 0,W!C_RESET!
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
set "A="
|
|
140
|
+
set "B="
|
|
141
|
+
for /f "tokens=1,2 delims=,-" %%a in ("!RANGE!") do (
|
|
142
|
+
set "A=%%a"
|
|
143
|
+
if not "%%b"=="" set "B=%%b"
|
|
144
|
+
)
|
|
145
|
+
if "!A!"=="" (
|
|
146
|
+
echo !C_RED![X]!C_RESET! Rango invalido.
|
|
147
|
+
goto :end
|
|
148
|
+
)
|
|
149
|
+
if "!B!"=="" set "B=!A!"
|
|
150
|
+
|
|
151
|
+
if /i "!A!"=="W" (
|
|
152
|
+
echo !C_RED![X]!C_RESET! El primer valor debe ser indice numerico. Formato: !C_YELLOW!5,W!C_RESET!
|
|
153
|
+
goto :end
|
|
154
|
+
)
|
|
155
|
+
if /i "!A!"=="WORK" (
|
|
156
|
+
echo !C_RED![X]!C_RESET! El primer valor debe ser indice numerico. Formato: !C_YELLOW!5,W!C_RESET!
|
|
157
|
+
goto :end
|
|
158
|
+
)
|
|
159
|
+
if /i "!A!"=="HEAD" (
|
|
160
|
+
echo !C_RED![X]!C_RESET! El primer valor debe ser indice numerico. Formato: !C_YELLOW!5,W!C_RESET!
|
|
161
|
+
goto :end
|
|
162
|
+
)
|
|
163
|
+
|
|
164
|
+
set "HA=!H_%A%!"
|
|
165
|
+
if "!HA!"=="" (
|
|
166
|
+
echo !C_RED![X]!C_RESET! Indice !A! no existe.
|
|
167
|
+
goto :end
|
|
168
|
+
)
|
|
169
|
+
|
|
170
|
+
set "H_NEW="
|
|
171
|
+
set "H_OLD=!HA!"
|
|
172
|
+
set "IS_WORK=0"
|
|
173
|
+
|
|
174
|
+
if /i "!B!"=="W" set "IS_WORK=1"
|
|
175
|
+
if /i "!B!"=="WORK" set "IS_WORK=1"
|
|
176
|
+
if /i "!B!"=="HEAD" set "IS_WORK=1"
|
|
177
|
+
|
|
178
|
+
if "!IS_WORK!"=="1" (
|
|
179
|
+
set "H_OLD=!HA!"
|
|
180
|
+
set "H_NEW="
|
|
181
|
+
set "OLD_IDX=!A!"
|
|
182
|
+
set "NEW_IDX=WORK"
|
|
183
|
+
set "NEW_LABEL=working tree"
|
|
184
|
+
) else (
|
|
185
|
+
set "HB=!H_%B%!"
|
|
186
|
+
if "!HB!"=="" (
|
|
187
|
+
echo !C_RED![X]!C_RESET! Indice !B! no existe.
|
|
188
|
+
goto :end
|
|
189
|
+
)
|
|
190
|
+
set "OLD_IDX=!A!"
|
|
191
|
+
set "NEW_IDX=!B!"
|
|
192
|
+
if !A! LSS !B! (
|
|
193
|
+
set "OLD_IDX=!B!"
|
|
194
|
+
set "NEW_IDX=!A!"
|
|
195
|
+
)
|
|
196
|
+
set "H_OLD=!H_%OLD_IDX%!"
|
|
197
|
+
set "H_NEW=!H_%NEW_IDX%!"
|
|
198
|
+
set "NEW_LABEL=!H_NEW!"
|
|
199
|
+
)
|
|
200
|
+
|
|
201
|
+
echo.
|
|
202
|
+
echo !C_CYAN!-------------------------------------------------------------!C_RESET! !C_GRAY!Comparando:!C_RESET!
|
|
203
|
+
echo !C_GRAY![antiguo]!C_RESET! !C_YELLOW!!H_OLD!!C_RESET! !C_GRAY!^(idx !OLD_IDX!^)!C_RESET!
|
|
204
|
+
if "!IS_WORK!"=="1" (
|
|
205
|
+
echo !C_GRAY![reciente]!C_RESET! !C_GREEN!working tree!C_RESET!
|
|
206
|
+
) else (
|
|
207
|
+
echo !C_GRAY![reciente]!C_RESET! !C_YELLOW!!H_NEW!!C_RESET! !C_GRAY!^(idx !NEW_IDX!^)!C_RESET!
|
|
208
|
+
)
|
|
209
|
+
echo.
|
|
210
|
+
|
|
211
|
+
REM - 7. Crear audits/ -
|
|
212
|
+
if not exist "audits" mkdir "audits"
|
|
213
|
+
|
|
214
|
+
for /f %%i in ('powershell -NoProfile -Command "Get-Date -Format yyyy-MM-dd_HHmmss"') do set "TS=%%i"
|
|
215
|
+
|
|
216
|
+
if "!IS_WORK!"=="1" (
|
|
217
|
+
set "REPORT=audits\audit_!TS!_!OLD_IDX!-WORK.txt"
|
|
218
|
+
) else (
|
|
219
|
+
set "REPORT=audits\audit_!TS!_!OLD_IDX!-!NEW_IDX!.txt"
|
|
220
|
+
)
|
|
221
|
+
|
|
222
|
+
REM - 8. Escribir reporte (SIN colores) -
|
|
223
|
+
(
|
|
224
|
+
echo # Reporte de auditoria
|
|
225
|
+
echo.
|
|
226
|
+
echo # Generado: %DATE% %TIME%
|
|
227
|
+
echo # Proyecto: %CD%
|
|
228
|
+
echo # Rango: !H_OLD! -^> !NEW_LABEL!
|
|
229
|
+
echo.
|
|
230
|
+
if "!IS_WORK!"=="1" (
|
|
231
|
+
echo # Comparar: git diff !H_OLD!
|
|
232
|
+
) else (
|
|
233
|
+
echo # Comparar: git diff !H_OLD! !H_NEW!
|
|
234
|
+
)
|
|
235
|
+
echo.
|
|
236
|
+
echo # ============================================================
|
|
237
|
+
echo # COMMITS EN EL RANGO
|
|
238
|
+
echo # ============================================================
|
|
239
|
+
echo.
|
|
240
|
+
if "!IS_WORK!"=="1" (
|
|
241
|
+
git log !H_OLD!..HEAD --date=format:"%%Y-%%m-%%d %%H:%%M:%%S" --pretty=format:" %%ad %%h %%s"
|
|
242
|
+
) else (
|
|
243
|
+
git log !H_OLD!^..!H_NEW! --date=format:"%%Y-%%m-%%d %%H:%%M:%%S" --pretty=format:" %%ad %%h %%s"
|
|
244
|
+
)
|
|
245
|
+
echo.
|
|
246
|
+
echo.
|
|
247
|
+
echo # ============================================================
|
|
248
|
+
echo # DIFF COMPLETO
|
|
249
|
+
echo # ============================================================
|
|
250
|
+
echo.
|
|
251
|
+
if "!IS_WORK!"=="1" (
|
|
252
|
+
git diff !H_OLD!
|
|
253
|
+
) else (
|
|
254
|
+
git diff !H_OLD! !H_NEW!
|
|
255
|
+
)
|
|
256
|
+
echo.
|
|
257
|
+
echo.
|
|
258
|
+
echo # ============================================================
|
|
259
|
+
echo # ESTADO ACTUAL (sin commitear)
|
|
260
|
+
echo # ============================================================
|
|
261
|
+
echo.
|
|
262
|
+
git status -short
|
|
263
|
+
) > "!REPORT!" 2>&1
|
|
264
|
+
|
|
265
|
+
REM - 9. Resumen -
|
|
266
|
+
echo !C_GREEN![OK]!C_RESET! Reporte generado
|
|
267
|
+
echo.
|
|
268
|
+
for %%f in ("!REPORT!") do set "SIZE=%%~zf"
|
|
269
|
+
for /f %%l in ('find /c /v "" ^< "!REPORT!"') do set "LINES=%%l"
|
|
270
|
+
|
|
271
|
+
echo !C_GRAY!Archivo:!C_RESET! !C_WHITE!!REPORT!!C_RESET!
|
|
272
|
+
echo !C_GRAY!Tamano:!C_RESET! !C_WHITE!!SIZE! bytes!C_RESET!
|
|
273
|
+
echo !C_GRAY!Lineas:!C_RESET! !C_WHITE!!LINES!!C_RESET!
|
|
274
|
+
echo.
|
|
275
|
+
|
|
276
|
+
REM - 10. Abrir -
|
|
277
|
+
where code >nul 2>nul
|
|
278
|
+
if not errorlevel 1 (
|
|
279
|
+
set "OPEN="
|
|
280
|
+
set /p "OPEN= !C_BCYAN!Abrir en VS Code?!C_RESET! !C_GRAY![S/n]!C_RESET!: "
|
|
281
|
+
if /i not "!OPEN!"=="n" (
|
|
282
|
+
echo !C_GRAY!Abriendo...!C_RESET!
|
|
283
|
+
code "!REPORT!"
|
|
284
|
+
)
|
|
285
|
+
) else (
|
|
286
|
+
echo !C_GRAY![INFO] VS Code CLI no disponible.!C_RESET!
|
|
287
|
+
)
|
|
288
|
+
|
|
289
|
+
echo.
|
|
290
|
+
goto :end
|
|
291
|
+
|
|
292
|
+
REM ============================================================
|
|
293
|
+
REM :help
|
|
294
|
+
REM ============================================================
|
|
295
|
+
:help
|
|
296
|
+
echo.
|
|
297
|
+
echo !C_CYAN!============================================!C_RESET!
|
|
298
|
+
echo !C_BCYAN! AUDITAR!C_RESET! !C_GRAY!- Ayuda!C_RESET!
|
|
299
|
+
echo !C_CYAN!============================================!C_RESET!
|
|
300
|
+
echo.
|
|
301
|
+
echo !C_BCYAN!USO:!C_RESET!
|
|
302
|
+
echo !C_WHITE!auditar.cmd!C_RESET! Modo interactivo
|
|
303
|
+
echo !C_WHITE!auditar.cmd -help!C_RESET! Esta ayuda
|
|
304
|
+
echo.
|
|
305
|
+
echo !C_BCYAN!QUE HACE:!C_RESET!
|
|
306
|
+
echo !C_GRAY!Genera un reporte .txt en audits/ con los cambios!C_RESET!
|
|
307
|
+
echo !C_GRAY!entre dos puntos del historial Git.!C_RESET!
|
|
308
|
+
echo.
|
|
309
|
+
echo !C_BCYAN!MODOS:!C_RESET!
|
|
310
|
+
echo !C_YELLOW!0,W!C_RESET! !C_GRAY!Comparar ultimo commit vs estado actual!C_RESET! !C_GREEN![recomendado]!C_RESET!
|
|
311
|
+
echo !C_YELLOW!0,3!C_RESET! !C_GRAY!Comparar commit 0 vs commit 3!C_RESET!
|
|
312
|
+
echo !C_YELLOW!0-3!C_RESET! !C_GRAY!Alias de 0,3!C_RESET!
|
|
313
|
+
echo !C_YELLOW![Enter]!C_RESET! !C_GRAY!Solo ver historial!C_RESET!
|
|
314
|
+
echo.
|
|
315
|
+
echo !C_BCYAN!EJEMPLOS:!C_RESET!
|
|
316
|
+
echo !C_WHITE!auditar.cmd!C_RESET!
|
|
317
|
+
echo !C_GRAY!Cuantos commits? 10!C_RESET!
|
|
318
|
+
echo !C_GRAY!Rango: 0,W!C_RESET!
|
|
319
|
+
echo !C_GRAY!-> audits\audit_2026-09-12_163200_0-WORK.txt!C_RESET!
|
|
320
|
+
echo.
|
|
321
|
+
echo !C_BCYAN!SALIDA:!C_RESET!
|
|
322
|
+
echo !C_GRAY!Los reportes se guardan en audits\!C_RESET!
|
|
323
|
+
echo !C_GRAY!(excluida del repo por .gitignore^)!C_RESET!
|
|
324
|
+
echo.
|
|
325
|
+
goto :end
|
|
326
|
+
|
|
327
|
+
:end
|
|
328
|
+
call :shell_if_double_click
|
|
329
|
+
endlocal
|
|
330
|
+
exit /b 0
|
|
331
|
+
|
|
332
|
+
:shell_if_double_click
|
|
333
|
+
if "%NO_PAUSE%"=="1" goto :eof
|
|
334
|
+
echo %cmdcmdline% | find /i "%~nx0" >nul
|
|
335
|
+
if errorlevel 1 goto :eof
|
|
336
|
+
echo.
|
|
337
|
+
echo Sesion interactiva. Escribe 'exit' para cerrar.
|
|
338
|
+
echo.
|
|
339
|
+
cmd /k
|
|
340
|
+
goto :eof
|
|
@@ -0,0 +1,85 @@
|
|
|
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
|
|
@@ -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 "%~dp0save.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
|
|
@@ -0,0 +1,73 @@
|
|
|
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 guardar.!C_RS!
|
|
27
|
+
exit /b 0
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
echo.
|
|
31
|
+
echo !C_CY!------------------------------------------------------------!C_RS!
|
|
32
|
+
echo !C_BC! GUARDAR!C_RS! !C_GY!- Commit local!C_RS!
|
|
33
|
+
echo !C_CY!------------------------------------------------------------!C_RS!
|
|
34
|
+
echo.
|
|
35
|
+
echo !C_GY!Archivos a guardar:!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
|
|
@@ -4,7 +4,7 @@ REM Configuration - edit these values to customize
|
|
|
4
4
|
REM Called from init.cmd via: call config.cmd
|
|
5
5
|
REM ============================================================
|
|
6
6
|
|
|
7
|
-
set "FG_VERSION=1.
|
|
7
|
+
set "FG_VERSION=1.5.0"
|
|
8
8
|
set "TAG_INITIAL=v1.0.0"
|
|
9
9
|
set "TAG_MESSAGE=Primera version estable"
|
|
10
10
|
set "BRANCH_MAIN=main"
|