From 5991e803af37c88ed2eaaeef8f6848cd86164821 Mon Sep 17 00:00:00 2001 From: Eric Peters Date: Sat, 19 Oct 2019 19:05:06 -0700 Subject: [PATCH 1/2] Add --sbt-jar test and windows sbt.bat support --- .../src/test/scala/RunnerTest.scala | 8 ++++ src/universal/bin/sbt.bat | 46 ++++++++++++++++--- 2 files changed, 47 insertions(+), 7 deletions(-) diff --git a/integration-test/src/test/scala/RunnerTest.scala b/integration-test/src/test/scala/RunnerTest.scala index 655eeb661..659c06406 100755 --- a/integration-test/src/test/scala/RunnerTest.scala +++ b/integration-test/src/test/scala/RunnerTest.scala @@ -137,4 +137,12 @@ object SbtRunnerTest extends SimpleTestSuite with PowerAssertions { assert(out.matches(expectedVersion)) () } + + test("sbt --sbt-jar should run") { + val out = sbtProcess("compile -v --sbt-jar ../target/universal/stage/bin/sbt-launch.jar").!!.linesIterator.toList + assert(out.contains[String]("../target/universal/stage/bin/sbt-launch.jar") || + out.contains[String]("\"../target/universal/stage/bin/sbt-launch.jar\"") + ) + () + } } diff --git a/src/universal/bin/sbt.bat b/src/universal/bin/sbt.bat index ed74da0e5..577a2adac 100755 --- a/src/universal/bin/sbt.bat +++ b/src/universal/bin/sbt.bat @@ -22,6 +22,7 @@ set init_sbt_version=_to_be_replaced set sbt_default_mem=1024 set default_sbt_opts= set default_java_opts=-Dfile.encoding=UTF-8 +set sbt_jar= set sbt_args_print_version= set sbt_args_print_sbt_version= @@ -34,6 +35,7 @@ set sbt_args_color= set sbt_args_no_colors= set sbt_args_no_global= set sbt_args_no_share= +set sbt_args_sbt_jar= set sbt_args_ivy= set sbt_args_supershell= set sbt_args_timings= @@ -214,6 +216,26 @@ if defined _sbt_boot_arg ( ) ) +if "%~0" == "-sbt-jar" set _sbt_jar=true +if "%~0" == "--sbt-jar" set _sbt_jar=true + +if defined _sbt_jar ( + set _sbt_jar= + if not "%~1" == "" ( + if exist "%~1" ( + set sbt_args_sbt_jar=%1 + shift + goto args_loop + ) else ( + echo %~1 does not exist + goto error + ) + ) else ( + echo "%~0" is missing a value + goto error + ) +) + if "%~0" == "-ivy" set _sbt_ivy_arg=true if "%~0" == "--ivy" set _sbt_ivy_arg=true @@ -509,6 +531,14 @@ if defined sbt_args_traces ( set _SBT_OPTS=-Dsbt.traces=true !_SBT_OPTS! ) +if defined sbt_args_sbt_jar ( + set "sbt_jar=!sbt_args_sbt_jar!" +) else ( + set "sbt_jar=!SBT_HOME!\bin\sbt-launch.jar" +) + +set sbt_jar=!sbt_jar:"=! + rem TODO: _SBT_OPTS needs to be processed as args and diffed against SBT_ARGS if !sbt_args_print_sbt_script_version! equ 1 ( @@ -534,12 +564,14 @@ if defined sbt_args_verbose ( echo "!_JAVACMD!" if defined _JAVA_OPTS ( call :echolist !_JAVA_OPTS! ) if defined _SBT_OPTS ( call :echolist !_SBT_OPTS! ) - echo -cp "!SBT_HOME!\bin\sbt-launch.jar" xsbt.boot.Boot + echo -cp + echo "!sbt_jar!" + echo xsbt.boot.Boot if not [%~1] == [] ( call :echolist %* ) echo. ) -"!_JAVACMD!" !_JAVA_OPTS! !_SBT_OPTS! -cp "!SBT_HOME!\bin\sbt-launch.jar" xsbt.boot.Boot %* +"!_JAVACMD!" !_JAVA_OPTS! !_SBT_OPTS! -cp "!sbt_jar!" xsbt.boot.Boot %* goto :eof @@ -694,11 +726,11 @@ exit /B 1 :copyrt if /I !JAVA_VERSION! GEQ 9 ( - set rtexport=!SBT_BIN_DIR!java9-rt-export.jar + set "rtexport=!SBT_BIN_DIR!java9-rt-export.jar" "!_JAVACMD!" !_JAVA_OPTS! !_SBT_OPTS! -jar "!rtexport!" --rt-ext-dir > "%TEMP%.\rtext.txt" set /p java9_ext= < "%TEMP%.\rtext.txt" - set java9_rt=!java9_ext!\rt.jar + set "java9_rt=!java9_ext!\rt.jar" if not exist "!java9_rt!" ( mkdir "!java9_ext!" @@ -765,7 +797,7 @@ rem echo --batch disable interactive mode echo. echo # sbt version ^(default: from project/build.properties if present, else latest release^) echo --sbt-version ^ use the specified version of sbt -rem echo --sbt-jar ^ use the specified jar as the sbt launcher +echo --sbt-jar ^ use the specified jar as the sbt launcher echo. echo # java version ^(default: java from PATH, currently !FULL_JAVA_VERSION!^) echo --java-home ^ alternate JAVA_HOME @@ -792,8 +824,8 @@ echo. exit /B 1 :set_sbt_version -rem print sbtVersion -for /F "usebackq tokens=2" %%G in (`CALL "!_JAVACMD!" -jar "!SBT_HOME!\bin\sbt-launch.jar" "sbtVersion" 2^>^&1`) do set "sbt_version=%%G" +rem set project sbtVersion +for /F "usebackq tokens=2" %%G in (`CALL "!_JAVACMD!" -jar "!sbt_jar!" "sbtVersion" 2^>^&1`) do set "sbt_version=%%G" exit /B 0 :error From 978ea3967629801ad574d42214704a09a02feeb8 Mon Sep 17 00:00:00 2001 From: Eric Peters Date: Sat, 19 Oct 2019 21:01:03 -0700 Subject: [PATCH 2/2] Make the script version regex test more windows-friendly --- integration-test/src/test/scala/RunnerTest.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration-test/src/test/scala/RunnerTest.scala b/integration-test/src/test/scala/RunnerTest.scala index 659c06406..d810f9475 100755 --- a/integration-test/src/test/scala/RunnerTest.scala +++ b/integration-test/src/test/scala/RunnerTest.scala @@ -111,7 +111,7 @@ object SbtRunnerTest extends SimpleTestSuite with PowerAssertions { test("sbt -V|-version|--version should print sbtVersion") { val out = sbtProcessWithOpts("-version", "", "").!!.trim val expectedVersion = - s"""|(?m)^sbt version in this project: $versionRegEx + s"""|(?m)^sbt version in this project: $versionRegEx(\\r)? |sbt script version: $versionRegEx$$ |""".stripMargin.trim.replace("\n", "\\n") assert(out.matches(expectedVersion))