forked from nbicocchi/learn-python-core
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathupdate.bat
More file actions
85 lines (76 loc) · 2.24 KB
/
update.bat
File metadata and controls
85 lines (76 loc) · 2.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
@echo off
setlocal enabledelayedexpansion
:: URL del repository Git (ZIP)
set "repoUrl=https://github.com/MatteV02/learn-python-core/archive/refs/heads/master.zip"
:: Nome del file ZIP scaricato
set "zipFile=%~dp0repo_update_temp.zip"
:: Cartella di estrazione temporanea
set "tempDir=%~dp0repo_update_temp"
:: 1. Scarica il repository come ZIP usando curl
echo Scaricamento del repository...
curl -L -o "%zipFile%" "%repoUrl%"
if %errorlevel% neq 0 (
echo Errore durante il download del repository.
pause
exit
)
:: 2. Estrai il contenuto del ZIP usando PowerShell
echo Estrazione del repository...
powershell -command "Expand-Archive -Path '%zipFile%' -DestinationPath '%tempDir%' -Force"
if %errorlevel% neq 0 (
echo Errore durante l'estrazione del repository.
pause
exit
)
:: 3. Trova la cartella principale all'interno dell'archivio
set "extractedDir="
for /d %%d in ("%tempDir%\*") do (
set "extractedDir=%%d"
goto :foundDir
)
:foundDir
if not defined extractedDir (
echo Nessuna cartella trovata nell'archivio.
pause
exit
)
:: 4. Verifica se esiste una nuova versione dello script
set "newScriptPath=%extractedDir%\update.bat"
if exist "!newScriptPath!" (
:: Confronta i file: se sono diversi, aggiorna lo script
fc /b "%~f0" "!newScriptPath!" >nul
if !errorlevel! equ 1 (
echo Trovata una versione aggiornata dello script. Autoaggiornamento in corso...
copy /Y "!newScriptPath!" "%~f0" >nul
echo Script autoaggiornato. Riavvia lo script per applicare le modifiche.
pause
exit
)
)
:: 5. Trova la cartella principale all'interno dell'archivio
set "extractedDir="
for /d %%d in ("%tempDir%\*") do (
set "extractedDir=%%d"
goto :foundDir2
)
:foundDir2
if not defined extractedDir (
echo Nessuna cartella trovata nell'archivio.
pause
exit
)
:: 6. Copia i file nella cartella corrente (sovrascrivendo)
echo Aggiornamento dei file...
xcopy "!extractedDir!\*" "%~dp0" /E /Y /Q
if %errorlevel% neq 0 (
echo Errore durante la copia dei file.
pause
exit
)
:: 7. Pulizia dei file temporanei
echo Pulizia dei file temporanei...
del /f /q "%zipFile%" >nul 2>&1
rmdir /s /q "%tempDir%" >nul 2>&1
:: 8. Fine
echo Aggiornamento completato con successo!
pause