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.
@@ -0,0 +1,141 @@
1
+ @echo off
2
+ setlocal EnableDelayedExpansion
3
+ chcp 65001 >nul 2>nul
4
+
5
+ REM --- FORGE_HOME desde tools/bin/ ---
6
+ for %%I in ("%~dp0..\..") do set "FORGE_HOME=%%~fI"
7
+ set "TARGET=%CD%"
8
+
9
+ REM --- Subcomandos ---
10
+ if /i "%~1"=="update" goto :update
11
+ if /i "%~1"=="help" goto :help
12
+ if /i "%~1"=="--help" goto :help
13
+ if /i "%~1"=="-h" goto :help
14
+
15
+ REM --- Default: install ---
16
+ goto :install
17
+
18
+ REM ============================================================
19
+ REM HELP
20
+ REM ============================================================
21
+ :help
22
+ echo.
23
+ echo ============================================
24
+ echo forgeGit - Ayuda
25
+ echo ============================================
26
+ echo.
27
+ echo USO:
28
+ echo forge Instala forgeGit en la carpeta actual
29
+ echo forge update Actualiza templates/core del kit
30
+ echo forge help Esta ayuda
31
+ echo.
32
+ echo QUE HACE:
33
+ echo - Copia init.cmd, config.cmd, lib/, templates/
34
+ echo - Ejecuta init.cmd automaticamente
35
+ echo - Deja el proyecto con 7 helpers listos
36
+ echo.
37
+ goto :end
38
+
39
+ REM ============================================================
40
+ REM INSTALL
41
+ REM ============================================================
42
+ :install
43
+ if /i "%TARGET%"=="%FORGE_HOME%" (
44
+ echo.
45
+ echo [!] Estas dentro del kit forgeGit.
46
+ echo [!] Ve a un proyecto nuevo y ejecuta: forge
47
+ echo.
48
+ exit /b 1
49
+ )
50
+
51
+ echo.
52
+ echo ============================================
53
+ echo forgeGit - Instalando en:
54
+ echo %TARGET%
55
+ echo ============================================
56
+ echo.
57
+
58
+ REM --- Safety: detectar instalacion previa ---
59
+ if exist "%TARGET%\init.cmd" (
60
+ echo [!] Ya existe init.cmd en este proyecto.
61
+ echo [!] Puede ser de un forgeGit anterior.
62
+ echo.
63
+ set "CONFIRM="
64
+ set /p "CONFIRM= Sobrescribir? [S/n]: "
65
+ if /i "!CONFIRM!"=="n" (
66
+ echo Cancelado.
67
+ exit /b 0
68
+ )
69
+ echo.
70
+ )
71
+
72
+ if not exist "%TARGET%\lib" mkdir "%TARGET%\lib"
73
+ if not exist "%TARGET%\templates" mkdir "%TARGET%\templates"
74
+
75
+ copy /Y "%FORGE_HOME%\init.cmd" "%TARGET%\" >nul
76
+ copy /Y "%FORGE_HOME%\config.cmd" "%TARGET%\" >nul
77
+ copy /Y "%FORGE_HOME%\lib\*.cmd" "%TARGET%\lib\" >nul
78
+ copy /Y "%FORGE_HOME%\templates\*.tpl" "%TARGET%\templates\" >nul
79
+
80
+ echo Archivos copiados desde forgeGit.
81
+ echo.
82
+
83
+ cd /d "%TARGET%"
84
+ call "%TARGET%\init.cmd"
85
+
86
+ goto :end
87
+
88
+ REM ============================================================
89
+ REM UPDATE
90
+ REM ============================================================
91
+ :update
92
+ if /i "%TARGET%"=="%FORGE_HOME%" (
93
+ echo.
94
+ echo [!] Estas dentro del kit forgeGit.
95
+ echo [!] No hay nada que actualizar aqui.
96
+ echo.
97
+ exit /b 1
98
+ )
99
+
100
+ if not exist "%TARGET%\init.cmd" (
101
+ echo.
102
+ echo [X] Este proyecto no tiene forgeGit instalado.
103
+ echo Ejecuta primero: forge
104
+ echo.
105
+ exit /b 1
106
+ )
107
+
108
+ echo.
109
+ echo ============================================
110
+ echo forgeGit - Actualizando
111
+ echo %TARGET%
112
+ echo ============================================
113
+ echo.
114
+
115
+ echo Actualizando core (init.cmd, config.cmd)...
116
+ copy /Y "%FORGE_HOME%\init.cmd" "%TARGET%\" >nul
117
+ copy /Y "%FORGE_HOME%\config.cmd" "%TARGET%\" >nul
118
+
119
+ echo Actualizando lib/...
120
+ if not exist "%TARGET%\lib" mkdir "%TARGET%\lib"
121
+ robocopy "%FORGE_HOME%\lib" "%TARGET%\lib" /E /NFL /NDL /NJH /NJS /NC /NS /NP >nul
122
+
123
+ echo Actualizando templates/...
124
+ if not exist "%TARGET%\templates" mkdir "%TARGET%\templates"
125
+ robocopy "%FORGE_HOME%\templates" "%TARGET%\templates" /E /NFL /NDL /NJH /NJS /NC /NS /NP >nul
126
+
127
+ echo.
128
+ echo [OK] Actualizado.
129
+ echo.
130
+ echo Nota: los helpers (guardar, subir, etc.) NO se
131
+ echo regeneran automaticamente.
132
+ echo.
133
+ echo Para regenerarlos:
134
+ echo init.cmd --force
135
+ echo.
136
+
137
+ goto :end
138
+
139
+ :end
140
+ endlocal
141
+ exit /b 0
@@ -0,0 +1,141 @@
1
+ @echo off
2
+ setlocal EnableDelayedExpansion
3
+ chcp 65001 >nul 2>nul
4
+
5
+ cd /d "%~dp0"
6
+
7
+ echo.
8
+ echo ============================================
9
+ echo forgeGit - Instalación (MODO SEGURO)
10
+ echo ============================================
11
+ echo.
12
+
13
+ for %%I in ("%~dp0..") do set "FORGE_HOME=%%~fI"
14
+ set "BIN=%FORGE_HOME%\tools\bin"
15
+
16
+ REM --- Verificar bin\forge.cmd ---
17
+ if not exist "%BIN%\forge.cmd" (
18
+ echo [X] No se encontro: %BIN%\forge.cmd
19
+ pause
20
+ exit /b 1
21
+ )
22
+
23
+ REM --- 1. Backup del PATH ---
24
+ if not exist "backups" mkdir "backups"
25
+ for /f %%i in ('powershell -NoProfile -Command "Get-Date -Format yyyy-MM-dd_HHmmss"') do set "TS=%%i"
26
+ set "BACKUP=%CD%\backups\PATH_backup_%TS%.txt"
27
+
28
+ echo [1/6] Backup del PATH de usuario...
29
+ powershell -NoProfile -Command ^
30
+ "$old = [Environment]::GetEnvironmentVariable('Path', 'User');" ^
31
+ "if ($null -eq $old) { $old = '' };" ^
32
+ "[System.IO.File]::WriteAllText('%BACKUP%', $old, [System.Text.UTF8Encoding]::new($false));" ^
33
+ "Write-Host ' [OK] Backup guardado.';" ^
34
+ "Write-Host (' Tamano: ' + $old.Length + ' caracteres');"
35
+ echo.
36
+
37
+ REM --- 2. Verificar que no este ya ---
38
+ powershell -NoProfile -Command ^
39
+ "$old = [Environment]::GetEnvironmentVariable('Path', 'User');" ^
40
+ "if ($null -eq $old) { $old = '' };" ^
41
+ "if ($old -like '*%BIN%*') { exit 0 } else { exit 1 }"
42
+
43
+ if not errorlevel 1 (
44
+ echo [2/6] Ya estaba instalado. Nada que hacer.
45
+ pause
46
+ exit /b 0
47
+ )
48
+ echo [2/6] No estaba en el PATH. Continuando...
49
+ echo.
50
+
51
+ REM --- 3. Preview de los cambios ---
52
+ echo [3/6] Vista previa del cambio:
53
+ echo.
54
+ echo PATH actual:
55
+ powershell -NoProfile -Command ^
56
+ "$old = [Environment]::GetEnvironmentVariable('Path', 'User');" ^
57
+ "if ($null -eq $old) { $old = '' };" ^
58
+ "$parts = $old -split ';' | Where-Object { $_ -ne '' };" ^
59
+ "Write-Host (' ' + $parts.Count + ' entradas');"
60
+ echo.
61
+ echo Se agregara:
62
+ echo %BIN%
63
+ echo.
64
+ set "CONFIRM="
65
+ set /p "CONFIRM= Continuar? [S/n]: "
66
+ if /i "!CONFIRM!"=="n" (
67
+ echo Cancelado.
68
+ pause
69
+ exit /b 0
70
+ )
71
+ echo.
72
+
73
+ REM --- 4. Aplicar cambio con API (sin setx - sin limite 1024) ---
74
+ echo [4/6] Aplicando cambio...
75
+ powershell -NoProfile -Command ^
76
+ "$old = [Environment]::GetEnvironmentVariable('Path', 'User');" ^
77
+ "if ($null -eq $old) { $old = '' };" ^
78
+ "$new = if ($old -eq '') { '%BIN%' } else { $old + ';%BIN%' };" ^
79
+ "$oldCount = ($old -split ';' | Where-Object { $_ -ne '' }).Count;" ^
80
+ "$newCount = ($new -split ';' | Where-Object { $_ -ne '' }).Count;" ^
81
+ "if ($newCount -ne ($oldCount + 1)) {" ^
82
+ " Write-Host ' [X] Validacion fallo (count no cambio).';" ^
83
+ " exit 1;" ^
84
+ "}" ^
85
+ "[Environment]::SetEnvironmentVariable('Path', $new, 'User');" ^
86
+ "Write-Host ' [OK] PATH actualizado.';"
87
+
88
+ if errorlevel 1 (
89
+ echo [X] Fallo. Restaurando backup...
90
+ powershell -NoProfile -Command ^
91
+ "$content = [System.IO.File]::ReadAllText('%BACKUP%');" ^
92
+ "[Environment]::SetEnvironmentVariable('Path', $content, 'User');" ^
93
+ "Write-Host ' [OK] Restaurado.';"
94
+ pause
95
+ exit /b 1
96
+ )
97
+ echo.
98
+
99
+ REM --- 5. Verificar el cambio ---
100
+ echo [5/6] Verificando...
101
+ timeout /t 1 /nobreak >nul
102
+ powershell -NoProfile -Command ^
103
+ "$new = [Environment]::GetEnvironmentVariable('Path', 'User');" ^
104
+ "if ($new -like '*%BIN%*') {" ^
105
+ " Write-Host ' [OK] forgeGit esta en el PATH.';" ^
106
+ "} else {" ^
107
+ " Write-Host ' [X] No aparece. Restaurando...';" ^
108
+ " $content = [System.IO.File]::ReadAllText('%BACKUP%');" ^
109
+ " [Environment]::SetEnvironmentVariable('Path', $content, 'User');" ^
110
+ " Write-Host ' [OK] Restaurado.';" ^
111
+ " exit 1;" ^
112
+ "}"
113
+
114
+ if errorlevel 1 (
115
+ pause
116
+ exit /b 1
117
+ )
118
+ echo.
119
+
120
+ REM --- 6. Instrucciones ---
121
+ echo [6/6] Instalacion completada
122
+ echo.
123
+ echo ============================================
124
+ echo Instalación exitosa
125
+ echo ============================================
126
+ echo.
127
+ echo Cierra esta ventana y abre una NUEVA terminal.
128
+ echo.
129
+ echo Uso:
130
+ echo cd C:\MiProyecto
131
+ echo forge
132
+ echo.
133
+ echo Restaurar PATH anterior:
134
+ echo tools\restore.cmd
135
+ echo.
136
+ echo Backup: %BACKUP%
137
+ echo.
138
+
139
+ pause
140
+ endlocal
141
+ exit /b 0
package/tools/pack.cmd ADDED
@@ -0,0 +1,57 @@
1
+ @echo off
2
+ setlocal EnableDelayedExpansion
3
+ chcp 65001 >nul 2>nul
4
+
5
+ cd /d "%~dp0"
6
+
7
+ echo.
8
+ echo ============================================
9
+ echo Pack - Distribucion limpia
10
+ echo ============================================
11
+ echo.
12
+
13
+ set "ROOT=%~dp0.."
14
+ set "DIST=%~dp0..\..\forgeGit-dist"
15
+ set "OUT=%DIST%\forgeGit"
16
+
17
+ REM --- Limpiar destino previo ---
18
+ if exist "%DIST%" rmdir /s /q "%DIST%"
19
+
20
+ mkdir "%OUT%"
21
+ mkdir "%OUT%\lib"
22
+ mkdir "%OUT%\templates"
23
+ mkdir "%OUT%\tools"
24
+ mkdir "%OUT%\tools\bin"
25
+ mkdir "%OUT%\tests"
26
+
27
+ echo Copiando archivos core...
28
+ copy /Y "%ROOT%\init.cmd" "%OUT%\" >nul
29
+ copy /Y "%ROOT%\config.cmd" "%OUT%\" >nul
30
+ copy /Y "%ROOT%\README.md" "%OUT%\" >nul
31
+
32
+ echo Copiando modulos internos...
33
+ copy /Y "%ROOT%\lib\*.cmd" "%OUT%\lib\" >nul
34
+
35
+ echo Copiando templates...
36
+ copy /Y "%ROOT%\templates\*.tpl" "%OUT%\templates\" >nul
37
+
38
+ echo Copiando tools...
39
+ copy /Y "%ROOT%\tools\*.cmd" "%OUT%\tools\" >nul
40
+ copy /Y "%ROOT%\tools\bin\*.cmd" "%OUT%\tools\bin\" >nul
41
+
42
+ echo Copiando tests...
43
+ copy /Y "%ROOT%\tests\*.cmd" "%OUT%\tests\" >nul
44
+
45
+ echo.
46
+ echo ============================================
47
+ echo Distribucion creada en:
48
+ echo %OUT%
49
+ echo ============================================
50
+ echo.
51
+ echo Contenido:
52
+ echo.
53
+ dir /b /s "%OUT%"
54
+ echo.
55
+
56
+ endlocal
57
+ exit /b 0
@@ -0,0 +1,53 @@
1
+ @echo off
2
+ setlocal EnableDelayedExpansion
3
+ chcp 65001 >nul 2>nul
4
+
5
+ cd /d "%~dp0"
6
+
7
+ echo.
8
+ echo ============================================
9
+ echo Release - Empaquetar y comprimir
10
+ echo ============================================
11
+ echo.
12
+
13
+ REM --- 1. Pack ---
14
+ call "%~dp0pack.cmd"
15
+
16
+ REM --- 2. Leer version ---
17
+ call "%~dp0..\config.cmd"
18
+ set "ZIP=%~dp0..\..\forgeGit-v%FG_VERSION%.zip"
19
+
20
+ REM --- 3. Comprimir ---
21
+ echo Comprimiendo v%FG_VERSION%...
22
+ if exist "%ZIP%" del "%ZIP%" >nul 2>nul
23
+
24
+ cd /d "%~dp0..\..\forgeGit-dist"
25
+ powershell -NoProfile -Command "Compress-Archive -Path 'forgeGit' -DestinationPath '%ZIP%' -Force"
26
+
27
+ if not exist "%ZIP%" (
28
+ echo [X] Fallo al comprimir
29
+ pause
30
+ exit /b 1
31
+ )
32
+
33
+ for %%f in ("%ZIP%") do set "SIZE=%%~zf"
34
+
35
+ echo.
36
+ echo ============================================
37
+ echo Release listo:
38
+ echo %ZIP%
39
+ echo Tamano: !SIZE! bytes
40
+ echo ============================================
41
+ echo.
42
+ echo Siguiente:
43
+ echo 1. Se abre GitHub Releases en tu navegador
44
+ echo 2. Tag: v%FG_VERSION%
45
+ echo 3. Attach: forgeGit-v%FG_VERSION%.zip
46
+ echo 4. Publish
47
+ echo.
48
+
49
+ REM --- 4. Abrir navegador ---
50
+ start "" "https://github.com/vloitz/forgeGit/releases/new"
51
+
52
+ endlocal
53
+ exit /b 0
@@ -0,0 +1,71 @@
1
+ @echo off
2
+ setlocal EnableDelayedExpansion
3
+ chcp 65001 >nul 2>nul
4
+
5
+ cd /d "%~dp0"
6
+
7
+ echo.
8
+ echo ============================================
9
+ echo forgeGit - Restaurar PATH
10
+ echo ============================================
11
+ echo.
12
+
13
+ if not exist "backups" (
14
+ echo [X] No hay carpeta backups\
15
+ pause
16
+ exit /b 1
17
+ )
18
+
19
+ echo Backups disponibles:
20
+ echo.
21
+ set "IDX=0"
22
+ for /f "delims=" %%F in ('dir /b /o-n "backups\PATH_backup_*.txt" 2^>nul') do (
23
+ echo [!IDX!] %%F
24
+ set "BK_!IDX!=%%F"
25
+ set /a IDX+=1
26
+ )
27
+
28
+ if !IDX! EQU 0 (
29
+ echo (vacio)
30
+ pause
31
+ exit /b 1
32
+ )
33
+
34
+ echo.
35
+ set "SEL="
36
+ set /p "SEL= Numero a restaurar [0-!IDX!-1]: "
37
+ if "!SEL!"=="" (
38
+ echo Cancelado.
39
+ pause
40
+ exit /b 0
41
+ )
42
+
43
+ set "TARGET=!BK_%SEL%!"
44
+ if "!TARGET!"=="" (
45
+ echo [X] Numero invalido.
46
+ pause
47
+ exit /b 1
48
+ )
49
+
50
+ echo.
51
+ echo Restaurando: !TARGET!
52
+ echo.
53
+ set "CONFIRM="
54
+ set /p "CONFIRM= Escribe SI para confirmar: "
55
+ if /i not "!CONFIRM!"=="SI" (
56
+ echo Cancelado.
57
+ pause
58
+ exit /b 0
59
+ )
60
+
61
+ powershell -NoProfile -Command ^
62
+ "$content = [System.IO.File]::ReadAllText('backups\!TARGET!');" ^
63
+ "[Environment]::SetEnvironmentVariable('Path', $content, 'User');" ^
64
+ "Write-Host ' [OK] PATH restaurado.';"
65
+
66
+ echo.
67
+ echo Cierra la terminal para aplicar los cambios.
68
+ echo.
69
+ pause
70
+ endlocal
71
+ exit /b 0
@@ -0,0 +1,54 @@
1
+ @echo off
2
+ setlocal EnableDelayedExpansion
3
+ chcp 65001 >nul 2>nul
4
+
5
+ cd /d "%~dp0"
6
+
7
+ echo.
8
+ echo ============================================
9
+ echo forgeGit - Desinstalación (MODO SEGURO)
10
+ echo ============================================
11
+ echo.
12
+
13
+ for %%I in ("%~dp0..") do set "FORGE_HOME=%%~fI"
14
+ set "BIN=%FORGE_HOME%\tools\bin"
15
+
16
+ REM --- Backup ---
17
+ if not exist "backups" mkdir "backups"
18
+ for /f %%i in ('powershell -NoProfile -Command "Get-Date -Format yyyy-MM-dd_HHmmss"') do set "TS=%%i"
19
+ set "BACKUP=%CD%\backups\PATH_backup_%TS%.txt"
20
+
21
+ echo [1/2] Backup del PATH actual...
22
+ powershell -NoProfile -Command ^
23
+ "$old = [Environment]::GetEnvironmentVariable('Path', 'User');" ^
24
+ "if ($null -eq $old) { $old = '' };" ^
25
+ "[System.IO.File]::WriteAllText('%BACKUP%', $old, [System.Text.UTF8Encoding]::new($false));" ^
26
+ "Write-Host ' [OK] Backup: %BACKUP%';"
27
+ echo.
28
+
29
+ echo [2/2] Quitando forgeGit del PATH...
30
+ powershell -NoProfile -Command ^
31
+ "$old = [Environment]::GetEnvironmentVariable('Path', 'User');" ^
32
+ "if ($null -eq $old) { $old = '' };" ^
33
+ "$parts = $old -split ';' | Where-Object { $_ -ne '%BIN%' -and $_ -ne '' };" ^
34
+ "$new = $parts -join ';';" ^
35
+ "$oldCount = ($old -split ';' | Where-Object { $_ -ne '' }).Count;" ^
36
+ "$newCount = ($new -split ';' | Where-Object { $_ -ne '' }).Count;" ^
37
+ "if ($newCount -eq ($oldCount - 1)) {" ^
38
+ " setx PATH $new >nul;" ^
39
+ " Write-Host ' [OK] Removido.';" ^
40
+ "} elseif ($newCount -eq $oldCount) {" ^
41
+ " Write-Host ' [!] No estaba en el PATH.';" ^
42
+ "} else {" ^
43
+ " Write-Host ' [X] Validacion fallo. Sin cambios.';" ^
44
+ " exit 1;" ^
45
+ "}"
46
+
47
+ echo.
48
+ echo Backup guardado en: %BACKUP%
49
+ echo.
50
+ echo Cierra la terminal para aplicar.
51
+ echo.
52
+ pause
53
+ endlocal
54
+ exit /b 0