@echo off
setlocal EnableDelayedExpansion
@cd "%~dp0"
cls

set pkg_count=0 

rem !!!!!!!!!!!!!!!!!!!!!!!! CREATE PACKAGES HERE !!!!!!!!!!!!!!!!!!!!!!!!
call :NEW_PKG "Python 2.7.11" python-2.7.11.msi "python.exe -h" "https://www.python.org/ftp/python/2.7.11/python-2.7.11.msi"
call :NEW_PKG MinGW mingw-get-setup.exe "gcc.exe --help" "http://downloads.sourceforge.net/project/mingw/Installer/mingw-get-setup.exe?r=http%3A%2F%2Fwww.mingw.org%2Fdownload%2Finstaller%3F`&ts=1466972726`&use_mirror=ufpr"
call :NEW_PKG "Clang 3.8.0 (LLVM)" LLVM-3.8.0-win32.exe "clang.exe --help" "http://llvm.org/releases/3.8.0/LLVM-3.8.0-win32.exe"
call :NEW_PKG Git Git-2.9.0-64-bit.exe "git.exe --help" "https://github.com/git-for-windows/git/releases/download/v2.9.0.windows.1/Git-2.9.0-32-bit.exe"
call :NEW_PKG QEMU qemu-w32-setup-20160523.exe "qemu-img.exe --help" "http://qemu.weilnetz.de/w32/qemu-w32-setup-20160523.exe"
call :NEW_PKG "Eltima Virtual Serial Port Driver" vspd.exe "dummy_exe.exe" "http://www.eltima.com/download/vspd.exe"
rem !!!!!!!!!!!!!!!!!!!!!!!! CREATE PACKAGES HERE !!!!!!!!!!!!!!!!!!!!!!!!

echo ********* Kernel Development Toolkit Downloader *********
echo * The script will now download and install the following packages:
for /L %%i in (1,1,%pkg_count%) do (
	call echo %%i- %%pkg[%%i].Name%%
)

:PROMPT
SET /P ACCEPT="* Do you accept these changes [Y]/n: "
IF /I "%ACCEPT%" NEQ "Y" GOTO END

echo. && echo ***** Step 1: Downloading Packages *****

for /L %%i in (1,1,%pkg_count%) do (
	call echo     %%i- Downloading %%pkg[%%i].Name%% . . .
	!pkg[%%i].Exec! >nul 2>&1 && (
    		echo     The program is already installed
	) || (
    		if NOT exist "!pkg[%%i].Setup!" (
			powershell -Command "(New-Object Net.WebClient).DownloadFile('!pkg[%%i].URL!', '!pkg[%%i].Setup!')"
			echo     Done
		) else (
			echo     File already exists
		)
	)
	echo.
)

echo. && echo ***** Step 2: Setting Environment Variables *****
if not exist "C:\Program Files (x86)\qemu\" (
	reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_SZ /d "%path%;C:\MinGW\bin;C:\MinGW\msys\1.0\bin;C:\Python27;C:\Program Files (x86)\qemu"
)

echo ***** Step 3: Installing Packages *****
for /L %%i in (1,1,%pkg_count%) do (
	if exist "!pkg[%%i].Setup!" (
		call echo     %%i- Installing %%pkg[%%i].Name%% . . .
		!pkg[%%i].Setup!
	)
)

echo. && echo ***** Step 4: Installing Kernel Source Code *****
"C:\Program Files (x86)\Git\bin\git" clone https://github.com/miguelangelo78/Kernel-Test.git
cd Kernel-Test
"C:\Program Files (x86)\Git\bin\git" pull
cd ..

echo ***** Step 5: Success! ***** && echo.

:PROMPT
SET /P CLEAN_ACCEPT="* Do you wish to clean up the downloaded files [Y]/n: "
IF /I "%CLEAN_ACCEPT%" NEQ "Y" GOTO INSTALLEND

echo * Deleting downloaded files
for /L %%i in (1,1,%pkg_count%) do (
	call echo     %%i- Deleting %%pkg[%%i].Name%% . . .
	del "!pkg[%%i].Setup!"
)

:INSTALLEND
echo. && echo ** Download and Installation complete! **
PAUSE
GOTO END

:NEW_PKG

set /A pkg_count=%pkg_count%+1
set pkg[%pkg_count%].Name=%~1
set pkg[%pkg_count%].Setup=%~2
set pkg[%pkg_count%].Exec=%~3
set pkg[%pkg_count%].URL="%~4"
goto:EOF

:END
endlocal