diff --git a/build.sbt b/build.sbt index 40149bbcb..fa874c0da 100644 --- a/build.sbt +++ b/build.sbt @@ -166,9 +166,11 @@ val root = (project in file(".")). val old = (stage in Universal).value val sd = (stagingDirectory in Universal).value val x = IO.read(sd / "bin" / "sbt-launch-lib.bash") - IO.write(sd / "bin" / "sbt-launch-lib.bash", x.replaceAllLiterally("declare init_sbt_version=", s"declare init_sbt_version=$sbtVersionToRelease")) + IO.write(sd / "bin" / "sbt-launch-lib.bash", x.replaceAllLiterally( + "declare init_sbt_version=_to_be_replaced", s"declare init_sbt_version=$sbtVersionToRelease")) val y = IO.read(sd / "bin" / "sbt.bat") - IO.write(sd / "bin" / "sbt.bat", y.replaceAllLiterally("set INIT_SBT_VERSION=", s"set INIT_SBT_VERSION=$sbtVersionToRelease")) + IO.write(sd / "bin" / "sbt.bat", y.replaceAllLiterally( + "set INIT_SBT_VERSION=_TO_BE_REPLACED", s"set INIT_SBT_VERSION=$sbtVersionToRelease")) old }, diff --git a/src/universal/bin/sbt-launch-lib.bash b/src/universal/bin/sbt-launch-lib.bash index 2264868a2..59d8af3d6 100755 --- a/src/universal/bin/sbt-launch-lib.bash +++ b/src/universal/bin/sbt-launch-lib.bash @@ -12,7 +12,7 @@ declare -a scalac_args declare -a sbt_commands declare java_cmd=java declare java_version -declare init_sbt_version= +declare init_sbt_version=_to_be_replaced declare SCRIPT=$0 while [ -h "$SCRIPT" ] ; do @@ -170,6 +170,10 @@ process_args () { } syncPreloaded() { + if [[ "$init_sbt_version" == "" ]]; then + # FIXME: better $init_sbt_version detection + init_sbt_version="$(ls -1 "$sbt_home/lib/local-preloaded/org.scala-sbt/sbt/")" + fi [[ -f "$HOME/.sbt/preloaded/org.scala-sbt/sbt/$init_sbt_version/jars/sbt.jar" ]] || { # lib/local-preloaded exists (This is optional) [[ -d "$sbt_home/lib/local-preloaded/" ]] && { diff --git a/src/universal/bin/sbt.bat b/src/universal/bin/sbt.bat index 1f72b990e..6035dc357 100644 --- a/src/universal/bin/sbt.bat +++ b/src/universal/bin/sbt.bat @@ -53,6 +53,8 @@ rem We use the value of the JAVA_OPTS environment variable if defined, rather th set _JAVA_OPTS=%JAVA_OPTS% if "%_JAVA_OPTS%"=="" set _JAVA_OPTS=%CFG_OPTS% +set INIT_SBT_VERSION=_TO_BE_REPLACED + :args_loop if "%~1" == "" goto args_end @@ -143,15 +145,21 @@ if /I "%JAVA_VERSION%" GEQ "9" ( exit /B 0 :sync_preloaded +if "%INIT_SBT_VERSION%"=="" ( + rem FIXME: better %INIT_SBT_VERSION% detection + FOR /F "tokens=* USEBACKQ" %%F IN (`dir /b "%SBT_HOME%\..\lib\local-preloaded\org.scala-sbt\sbt" /B`) DO ( + SET INIT_SBT_VERSION=%%F + ) +) set PRELOAD_SBT_JAR="%UserProfile%\.sbt\preloaded\org.scala-sbt\sbt\%INIT_SBT_VERSION%\jars\sbt.jar" -if /I "%JAVA_VERSION%" GEQ "8" ( +if /I "%JAVA_VERSION%" GEQ "1.8" ( where robocopy >nul 2>nul if %ERRORLEVEL% equ 0 ( echo %PRELOAD_SBT_JAR% if not exist %PRELOAD_SBT_JAR% ( if exist "%SBT_HOME%\..\lib\local-preloaded\" ( echo 'about to robocopy' - robocopy "%SBT_HOME%\..\lib\local-preloaded\" "%UserProfile%\.sbt\preloaded" + robocopy "%SBT_HOME%\..\lib\local-preloaded" "%UserProfile%\.sbt\preloaded" /E ) ) )