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,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
|