Created
December 6, 2020 13:22
-
-
Save sirinath/71965529a8ef8b91318aab668788bb3c to your computer and use it in GitHub Desktop.
Installing and Maintaining JDK Distros using Jabber
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@echo off | |
setlocal EnableDelayedExpansion EnableExtensions | |
if not defined JABBA_HOME set JABBA_HOME=%USERPROFILE%\.jabba | |
set JABBA_JDK=%JABBA_HOME%\jdk | |
set JABBA=%JABBA_HOME%\bin\jabba.exe | |
set "JABBA_PARAM=--arch amd64 --latest minor --os windows" | |
set USER_JDKS=%USERPROFILE%\.jdks | |
echo.Setting JABBA_HOME=%JABBA_HOME% | |
echo.Setting JABBA_JDK=%JABBA_JDK% | |
echo.Setting JABBA=%JABBA% | |
echo.JABBA params=%JABBA_PARAM% | |
echo.Setting USER_JDKS=%USER_JDKS% | |
echo. | |
if [%1] equ [] set "JDK_DISTRO=adopt@ adopt-openj9@ zulu@ liberica@ graalvm-ce-java8@ graalvm-ce-java11@" | |
if [%1] neq [] set "JDK_DISTRO=%~1" | |
if [%2] equ [] set "JDK_VER=1.11 1.8 20.3 zulu@1.15 zulu@1.13" | |
if [%2] neq [] set "JDK_VER=%~2" | |
echo.Distros=%JDK_DISTRO% | |
echo.Versions=%JDK_VER% | |
echo. | |
if [%3] equ [] set "DEFAULT_DISTRO=zulu" | |
if [%3] neq [] set "DEFAULT_DISTRO=%~3" | |
echo.Defualt distro=%DEFAULT_DISTRO% | |
echo. | |
echo.Building installed distro list | |
set "INSTALLED_JDKS=" | |
for /F "tokens=* usebackq" %%G in (`%JABBA% ls`) do set "INSTALLED_JDKS=!INSTALLED_JDKS!%%G " | |
echo.Installed JDKs: %INSTALLED_JDKS% | |
echo. | |
echo.Building newer distro list | |
set "JDK_LIST=" | |
for /F "tokens=* usebackq" %%G in (`%JABBA% ls-remote %JABBA_PARAM%`) do set "JDK_LIST=!JDK_LIST!%%G " | |
echo.JDK List: %JDK_LIST% | |
echo. | |
echo.Checking old distros | |
for /F "tokens=* usebackq" %%G in (`%JABBA% ls ^| findstr /V "%JDK_LIST%"`) do ( | |
echo.Processing %%G | |
set DISTRO= | |
set FULL_VER= | |
for /f "tokens=1,2 delims=@" %%X in ("%%G") do ( | |
echo.Tokenising %%X %%Y | |
set DISTRO=%%X | |
set FULL_VER=%%Y | |
) | |
echo.DISTRO=!DISTRO!, FULL_VER=!FULL_VER! | |
set VER= | |
set PATCH= | |
for /f "tokens=1,2 delims=-" %%X in ("!FULL_VER!") do ( | |
echo.Tokenising %%X %%Y | |
set VER=%%X | |
set PATCH=%%Y | |
) | |
echo.VER=!VER!, PATCH=!PATCH! | |
set ONE= | |
set MAJOR= | |
set MINOR= | |
for /f "tokens=1,2,3 delims=." %%X in ("!VER!") do ( | |
echo.Tokenising %%X %%Y %%Z | |
set ONE=%%X | |
set MAJOR=%%Y | |
set MINOR=%%Z | |
) | |
echo.ONE=!ONE!, MAJOR=!MAJOR!, MINOR=!MINOR! | |
echo.Removing: %%G | |
%JABBA% uninstall %%G | |
if exist %JABBA_JDK%\!DISTRO!@!ONE!.!MAJOR! ( | |
echo.Removing link: %JABBA_JDK%\!DISTRO!@!ONE!.!MAJOR! | |
rd %JABBA_JDK%\!DISTRO!@!ONE!.!MAJOR! | |
) | |
if exist %USER_JDKS%\!DISTRO!@!ONE!.!MAJOR! ( | |
echo.Removing link: %USER_JDKS%\!DISTRO!@!ONE!.!MAJOR! | |
rd %USER_JDKS%\!DISTRO!@!ONE!.!MAJOR! | |
) | |
if exist %JABBA_JDK%\!ONE!.!MAJOR! ( | |
echo.Removing link: %JABBA_JDK%\!ONE!.!MAJOR! | |
rd %JABBA_JDK%\!ONE!.!MAJOR! | |
) | |
if exist %USER_JDKS%\!ONE!.!MAJOR! ( | |
echo.Removing link: %USER_JDKS%\!ONE!.!MAJOR! | |
rd %USER_JDKS%\!ONE!.!MAJOR! | |
) | |
) | |
echo.Done removing old distros | |
echo. | |
echo.Checking for newer distros | |
for /F "tokens=* usebackq" %%G in (`%JABBA% ls-remote %JABBA_PARAM% ^| findstr /V "%INSTALLED_JDKS%" ^| findstr "%JDK_DISTRO%" ^| findstr "%JDK_VER%"`) do ( | |
echo.Processing %%G | |
set DISTRO= | |
set FULL_VER= | |
for /f "tokens=1,2 delims=@" %%X in ("%%G") do ( | |
echo.Tokenising %%X %%Y | |
set DISTRO=%%X | |
set FULL_VER=%%Y | |
) | |
echo.DISTRO=!DISTRO!, FULL_VER=!FULL_VER! | |
set VER= | |
set PATCH= | |
for /f "tokens=1,2 delims=-" %%X in ("!FULL_VER!") do ( | |
echo.Tokenising %%X %%Y | |
set VER=%%X | |
set PATCH=%%Y | |
) | |
echo.VER=!VER!, PATCH=!PATCH! | |
set ONE=1 | |
set MAJOR= | |
set MINOR= | |
for /f "tokens=1,2,3 delims=." %%X in ("!VER!") do ( | |
echo.Tokenising %%X %%Y %%Z | |
set ONE=%%X | |
set MAJOR=%%Y | |
set MINOR=%%Z | |
) | |
echo.ONE=!ONE!, MAJOR=!MAJOR!, MINOR=!MINOR! | |
echo.Installing: %%G | |
%JABBA% install %%G | |
) | |
echo.Done updating new distros | |
echo. | |
echo.Checking links | |
for /F "tokens=* usebackq" %%G in (`%JABBA% ls`) do ( | |
echo.Processing %%G | |
set DISTRO= | |
set FULL_VER= | |
for /f "tokens=1,2 delims=@" %%X in ("%%G") do ( | |
echo.Tokenising %%X %%Y | |
set DISTRO=%%X | |
set FULL_VER=%%Y | |
) | |
echo.DISTRO=!DISTRO!, FULL_VER=!FULL_VER! | |
set VER= | |
set PATCH= | |
for /f "tokens=1,2 delims=-" %%X in ("!FULL_VER!") do ( | |
echo.Tokenising %%X %%Y | |
set VER=%%X | |
set PATCH=%%Y | |
) | |
echo.VER=!VER!, PATCH=!PATCH! | |
set ONE= | |
set MAJOR= | |
set MINOR= | |
for /f "tokens=1,2,3 delims=." %%X in ("!VER!") do ( | |
echo.Tokenising %%X %%Y %%Z | |
set ONE=%%X | |
set MAJOR=%%Y | |
set MINOR=%%Z | |
) | |
echo.ONE=!ONE!, MAJOR=!MAJOR!, MINOR=!MINOR! | |
echo.Checking links for: %%G | |
for /F "tokens=*" %%X in ('%JABBA% which %%G') do ( | |
echo.Installed location: %%X | |
if not exist %JABBA_JDK%\!DISTRO!@!ONE!.!MAJOR! ( | |
echo.Linking %JABBA_JDK%\!DISTRO!@!ONE!.!MAJOR! to %%X | |
mklink /D %JABBA_JDK%\!DISTRO!@!ONE!.!MAJOR! %%X | |
) | |
if not exist %USER_JDKS%\!DISTRO!@!ONE!.!MAJOR! ( | |
echo.Linking %USER_JDKS%\!DISTRO!@!ONE!.!MAJOR! to %%X | |
mklink /D %USER_JDKS%\!DISTRO!@!ONE!.!MAJOR! %%X | |
) | |
if not exist %USER_JDKS%\%%G mklink /D %USER_JDKS%\%%G %%X | |
if "!DISTRO!" equ "%DEFAULT_DISTRO%" ( | |
if not exist %JABBA_JDK%\!ONE!.!MAJOR! ( | |
echo.Creating default link %JABBA_JDK%\!ONE!.!MAJOR! to %%X | |
mklink /D %JABBA_JDK%\!ONE!.!MAJOR! %%X | |
) | |
if not exist %USER_JDKS%\!ONE!.!MAJOR! ( | |
echo.Creating default link %USER_JDKS%\!ONE!.!MAJOR! to %%X | |
mklink /D %USER_JDKS%\!ONE!.!MAJOR! %%X | |
) | |
) | |
) | |
) | |
echo.Done checking links | |
echo. | |
endlocal |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment