mirror of https://github.com/sbt/sbt.git
fix: Avoid creating target on sbt -V
**Problem** sbt -V tries to show both the sbt version and the runner version, and ends up creating target directory even on a non-sbt directory. **Solution** If the current directory doesn't have a build, just display the runner version.
This commit is contained in:
parent
78bffa22b6
commit
89ff2440ef
|
|
@ -33,19 +33,32 @@ object SbtRunnerTest extends SimpleTestSuite with PowerAssertions {
|
||||||
()
|
()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def testVersion(lines: List[String]): Unit = {
|
||||||
|
assert(lines.size >= 2)
|
||||||
|
val expected0 = s"(?m)^sbt version in this project: $versionRegEx(\\r)?"
|
||||||
|
assert(lines(0).matches(expected0))
|
||||||
|
val expected1 = s"sbt runner version: $versionRegEx$$"
|
||||||
|
assert(lines(1).matches(expected1))
|
||||||
|
}
|
||||||
|
|
||||||
test("sbt -V|-version|--version should print sbtVersion") {
|
test("sbt -V|-version|--version should print sbtVersion") {
|
||||||
val out = sbtProcess("-version").!!.trim
|
val out = sbtProcess("-version").!!.trim
|
||||||
val expectedVersion =
|
testVersion(out.linesIterator.toList)
|
||||||
s"""|(?m)^sbt version in this project: $versionRegEx(\\r)?
|
|
||||||
|sbt script version: $versionRegEx$$
|
|
||||||
|""".stripMargin.trim.replace("\n", "\\n")
|
|
||||||
assert(out.matches(expectedVersion))
|
|
||||||
|
|
||||||
val out2 = sbtProcess("--version").!!.trim
|
val out2 = sbtProcess("--version").!!.trim
|
||||||
assert(out2.matches(expectedVersion))
|
testVersion(out2.linesIterator.toList)
|
||||||
|
|
||||||
val out3 = sbtProcess("-V").!!.trim
|
val out3 = sbtProcess("-V").!!.trim
|
||||||
assert(out3.matches(expectedVersion))
|
testVersion(out3.linesIterator.toList)
|
||||||
|
}
|
||||||
|
|
||||||
|
test("sbt -V in empty directory") {
|
||||||
|
IO.withTemporaryDirectory { tmp =>
|
||||||
|
val out = sbtProcessInDir(tmp)("-V").!!.trim
|
||||||
|
val expectedVersion = "^"+versionRegEx+"$"
|
||||||
|
val targetDir = new File(tmp, "target")
|
||||||
|
assert(!targetDir.exists, "expected target directory to not exist, but existed")
|
||||||
|
}
|
||||||
()
|
()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,7 @@ set sbt_args_sbt_version=
|
||||||
set sbt_args_mem=
|
set sbt_args_mem=
|
||||||
set sbt_args_client=
|
set sbt_args_client=
|
||||||
set sbt_args_no_server=
|
set sbt_args_no_server=
|
||||||
|
set is_this_dir_sbt=0
|
||||||
|
|
||||||
rem users can set SBT_OPTS via .sbtopts
|
rem users can set SBT_OPTS via .sbtopts
|
||||||
if exist .sbtopts for /F %%A in (.sbtopts) do (
|
if exist .sbtopts for /F %%A in (.sbtopts) do (
|
||||||
|
|
@ -532,11 +533,18 @@ set SBT_ARGS=!SBT_ARGS! %0
|
||||||
goto args_loop
|
goto args_loop
|
||||||
:args_end
|
:args_end
|
||||||
|
|
||||||
|
if exist build.sbt (
|
||||||
|
set is_this_dir_sbt=1
|
||||||
|
)
|
||||||
|
if exist project\build.properties (
|
||||||
|
set is_this_dir_sbt=1
|
||||||
|
)
|
||||||
|
|
||||||
rem Confirm a user's intent if the current directory does not look like an sbt
|
rem Confirm a user's intent if the current directory does not look like an sbt
|
||||||
rem top-level directory and the "new" command was not given.
|
rem top-level directory and the "new" command was not given.
|
||||||
|
|
||||||
if not defined sbt_args_allow_empty if not defined sbt_args_print_version if not defined sbt_args_print_sbt_version if not defined sbt_args_print_sbt_script_version if not defined shutdownall if not exist build.sbt (
|
if not defined sbt_args_allow_empty if not defined sbt_args_print_version if not defined sbt_args_print_sbt_version if not defined sbt_args_print_sbt_script_version if not defined shutdownall (
|
||||||
if not exist project\ (
|
if not !is_this_dir_sbt! equ 1 (
|
||||||
if not defined sbt_new (
|
if not defined sbt_new (
|
||||||
echo [error] Neither build.sbt nor a 'project' directory in the current directory: "%CD%"
|
echo [error] Neither build.sbt nor a 'project' directory in the current directory: "%CD%"
|
||||||
echo [error] run 'sbt new', touch build.sbt, or run 'sbt --allow-empty'.
|
echo [error] run 'sbt new', touch build.sbt, or run 'sbt --allow-empty'.
|
||||||
|
|
@ -667,9 +675,14 @@ if !sbt_args_print_sbt_version! equ 1 (
|
||||||
)
|
)
|
||||||
|
|
||||||
if !sbt_args_print_version! equ 1 (
|
if !sbt_args_print_version! equ 1 (
|
||||||
|
if !is_this_dir_sbt! equ 1 (
|
||||||
call :set_sbt_version
|
call :set_sbt_version
|
||||||
echo sbt version in this project: !sbt_version!
|
echo sbt version in this project: !sbt_version!
|
||||||
echo sbt script version: !init_sbt_version!
|
)
|
||||||
|
echo sbt runner version: !init_sbt_version!
|
||||||
|
echo.
|
||||||
|
echo [info] sbt runner ^(sbt-the-batch-script^) is a runner to run any declared version of sbt.
|
||||||
|
echo [info] Actual version of the sbt is declared using project\build.properties for each build.
|
||||||
goto :eof
|
goto :eof
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
17
sbt
17
sbt
|
|
@ -26,6 +26,7 @@ declare no_server=
|
||||||
declare sbtn_command="$SBTN_CMD"
|
declare sbtn_command="$SBTN_CMD"
|
||||||
declare sbtn_version="1.10.8"
|
declare sbtn_version="1.10.8"
|
||||||
declare use_colors=1
|
declare use_colors=1
|
||||||
|
declare is_this_dir_sbt=""
|
||||||
|
|
||||||
### ------------------------------- ###
|
### ------------------------------- ###
|
||||||
### Helper methods for BASH scripts ###
|
### Helper methods for BASH scripts ###
|
||||||
|
|
@ -494,11 +495,17 @@ copyRt() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
detect_working_directory() {
|
||||||
|
if [[ -f ./build.sbt || -f ./project/build.properties ]]; then
|
||||||
|
is_this_dir_sbt=1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Confirm a user's intent if the current directory does not look like an sbt
|
# Confirm a user's intent if the current directory does not look like an sbt
|
||||||
# top-level directory and neither the --allow-empty option nor the "new" command was given.
|
# top-level directory and neither the --allow-empty option nor the "new" command was given.
|
||||||
checkWorkingDirectory() {
|
checkWorkingDirectory() {
|
||||||
if [[ ! -n "$allow_empty" ]]; then
|
if [[ ! -n "$allow_empty" ]]; then
|
||||||
[[ -f ./build.sbt || -d ./project || -n "$sbt_new" ]] || {
|
[[ -n "$is_this_dir_sbt" || -n "$sbt_new" ]] || {
|
||||||
echoerr_error "Neither build.sbt nor a 'project' directory in the current directory: $(pwd)"
|
echoerr_error "Neither build.sbt nor a 'project' directory in the current directory: $(pwd)"
|
||||||
echoerr_error "run 'sbt new', touch build.sbt, or run 'sbt --allow-empty'."
|
echoerr_error "run 'sbt new', touch build.sbt, or run 'sbt --allow-empty'."
|
||||||
echoerr_error ""
|
echoerr_error ""
|
||||||
|
|
@ -531,13 +538,19 @@ run() {
|
||||||
addJava "-Dsbt.cygwin=true"
|
addJava "-Dsbt.cygwin=true"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
detect_working_directory
|
||||||
if [[ $print_sbt_version ]]; then
|
if [[ $print_sbt_version ]]; then
|
||||||
execRunner "$java_cmd" -jar "$sbt_jar" "sbtVersion" | tail -1 | sed -e 's/\[info\]//g'
|
execRunner "$java_cmd" -jar "$sbt_jar" "sbtVersion" | tail -1 | sed -e 's/\[info\]//g'
|
||||||
elif [[ $print_sbt_script_version ]]; then
|
elif [[ $print_sbt_script_version ]]; then
|
||||||
echo "$init_sbt_version"
|
echo "$init_sbt_version"
|
||||||
elif [[ $print_version ]]; then
|
elif [[ $print_version ]]; then
|
||||||
|
if [[ -n "$is_this_dir_sbt" ]]; then
|
||||||
execRunner "$java_cmd" -jar "$sbt_jar" "sbtVersion" | tail -1 | sed -e 's/\[info\]/sbt version in this project:/g'
|
execRunner "$java_cmd" -jar "$sbt_jar" "sbtVersion" | tail -1 | sed -e 's/\[info\]/sbt version in this project:/g'
|
||||||
echo "sbt script version: $init_sbt_version"
|
fi
|
||||||
|
echo "sbt runner version: $init_sbt_version"
|
||||||
|
echoerr ""
|
||||||
|
echoerr "[info] sbt runner (sbt-the-shell-script) is a runner to run any declared version of sbt."
|
||||||
|
echoerr "[info] Actual version of the sbt is declared using project/build.properties for each build."
|
||||||
elif [[ $shutdownall ]]; then
|
elif [[ $shutdownall ]]; then
|
||||||
local sbt_processes=( $(jps -v | grep sbt-launch | cut -f1 -d ' ') )
|
local sbt_processes=( $(jps -v | grep sbt-launch | cut -f1 -d ' ') )
|
||||||
for procId in "${sbt_processes[@]}"; do
|
for procId in "${sbt_processes[@]}"; do
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue