mirror of
https://github.com/sbt/sbt.git
synced 2026-08-22 06:07:24 +02:00
Update sbt launcher (#276)
This commit is contained in:
@@ -3,14 +3,42 @@
|
|||||||
# A more capable sbt runner, coincidentally also called sbt.
|
# A more capable sbt runner, coincidentally also called sbt.
|
||||||
# Author: Paul Phillips <[email protected]>
|
# Author: Paul Phillips <[email protected]>
|
||||||
# https://github.com/paulp/sbt-extras
|
# https://github.com/paulp/sbt-extras
|
||||||
|
#
|
||||||
|
# Generated from http://www.opensource.org/licenses/bsd-license.php
|
||||||
|
# Copyright (c) 2011, Paul Phillips. All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions are
|
||||||
|
# met:
|
||||||
|
#
|
||||||
|
# * Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# * Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
# * Neither the name of the author nor the names of its contributors
|
||||||
|
# may be used to endorse or promote products derived from this software
|
||||||
|
# without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
||||||
|
# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
|
|
||||||
declare -r sbt_release_version="1.3.10"
|
declare -r sbt_release_version="1.4.0"
|
||||||
declare -r sbt_unreleased_version="1.3.10"
|
declare -r sbt_unreleased_version="1.4.0"
|
||||||
|
|
||||||
declare -r latest_213="2.13.2"
|
declare -r latest_213="2.13.3"
|
||||||
declare -r latest_212="2.12.11"
|
declare -r latest_212="2.12.12"
|
||||||
declare -r latest_211="2.11.12"
|
declare -r latest_211="2.11.12"
|
||||||
declare -r latest_210="2.10.7"
|
declare -r latest_210="2.10.7"
|
||||||
declare -r latest_29="2.9.3"
|
declare -r latest_29="2.9.3"
|
||||||
@@ -26,7 +54,7 @@ declare -r sbt_launch_mvn_snapshot_repo="https://repo.scala-sbt.org/scalasbt/mav
|
|||||||
declare -r default_jvm_opts_common="-Xms512m -Xss2m -XX:MaxInlineLevel=18"
|
declare -r default_jvm_opts_common="-Xms512m -Xss2m -XX:MaxInlineLevel=18"
|
||||||
declare -r noshare_opts="-Dsbt.global.base=project/.sbtboot -Dsbt.boot.directory=project/.boot -Dsbt.ivy.home=project/.ivy -Dsbt.coursier.home=project/.coursier"
|
declare -r noshare_opts="-Dsbt.global.base=project/.sbtboot -Dsbt.boot.directory=project/.boot -Dsbt.ivy.home=project/.ivy -Dsbt.coursier.home=project/.coursier"
|
||||||
|
|
||||||
declare -r default_coursier_launcher_version="1.2.20"
|
declare -r default_coursier_launcher_version="1.2.22"
|
||||||
declare coursier_launcher_version="default"
|
declare coursier_launcher_version="default"
|
||||||
|
|
||||||
declare sbt_jar sbt_dir sbt_create sbt_version sbt_script sbt_new
|
declare sbt_jar sbt_dir sbt_create sbt_version sbt_script sbt_new
|
||||||
@@ -38,7 +66,7 @@ declare sbt_launch_dir="$HOME/.sbt/launchers"
|
|||||||
declare sbt_launch_repo
|
declare sbt_launch_repo
|
||||||
|
|
||||||
# pull -J and -D options to give to java.
|
# pull -J and -D options to give to java.
|
||||||
declare -a java_args coursier_args scalac_args sbt_commands residual_args
|
declare -a java_args scalac_args sbt_commands residual_args
|
||||||
|
|
||||||
# args to jvm/sbt via files or environment variables
|
# args to jvm/sbt via files or environment variables
|
||||||
declare -a extra_jvm_opts extra_sbt_opts
|
declare -a extra_jvm_opts extra_sbt_opts
|
||||||
@@ -102,6 +130,7 @@ init_default_option_file() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
sbt_opts_file="$(init_default_option_file SBT_OPTS .sbtopts)"
|
sbt_opts_file="$(init_default_option_file SBT_OPTS .sbtopts)"
|
||||||
|
sbtx_opts_file="$(init_default_option_file SBTX_OPTS .sbtxopts)"
|
||||||
jvm_opts_file="$(init_default_option_file JVM_OPTS .jvmopts)"
|
jvm_opts_file="$(init_default_option_file JVM_OPTS .jvmopts)"
|
||||||
|
|
||||||
build_props_sbt() {
|
build_props_sbt() {
|
||||||
@@ -451,6 +480,12 @@ are not special.
|
|||||||
Note: "@"-file is overridden by local '.sbtopts' or '-sbt-opts' argument.
|
Note: "@"-file is overridden by local '.sbtopts' or '-sbt-opts' argument.
|
||||||
-sbt-opts <path> file containing sbt args (if not given, .sbtopts in project root is used if present)
|
-sbt-opts <path> file containing sbt args (if not given, .sbtopts in project root is used if present)
|
||||||
-S-X add -X to sbt's scalacOptions (-S is stripped)
|
-S-X add -X to sbt's scalacOptions (-S is stripped)
|
||||||
|
|
||||||
|
# passing options exclusively to this runner
|
||||||
|
SBTX_OPTS environment variable holding either the sbt-extras args directly, or
|
||||||
|
the reference to a file containing sbt-extras args if given path is prepended by '@' (e.g. '@/etc/sbtxopts')
|
||||||
|
Note: "@"-file is overridden by local '.sbtxopts' or '-sbtx-opts' argument.
|
||||||
|
-sbtx-opts <path> file containing sbt-extras args (if not given, .sbtxopts in project root is used if present)
|
||||||
EOM
|
EOM
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
@@ -511,12 +546,12 @@ process_args() {
|
|||||||
-scala-home) require_arg path "$1" "$2" && setThisBuild scalaHome "_root_.scala.Some(file(\"$2\"))" && shift 2 ;;
|
-scala-home) require_arg path "$1" "$2" && setThisBuild scalaHome "_root_.scala.Some(file(\"$2\"))" && shift 2 ;;
|
||||||
-java-home) require_arg path "$1" "$2" && setJavaHome "$2" && shift 2 ;;
|
-java-home) require_arg path "$1" "$2" && setJavaHome "$2" && shift 2 ;;
|
||||||
-sbt-opts) require_arg path "$1" "$2" && sbt_opts_file="$2" && shift 2 ;;
|
-sbt-opts) require_arg path "$1" "$2" && sbt_opts_file="$2" && shift 2 ;;
|
||||||
|
-sbtx-opts) require_arg path "$1" "$2" && sbtx_opts_file="$2" && shift 2 ;;
|
||||||
-jvm-opts) require_arg path "$1" "$2" && jvm_opts_file="$2" && shift 2 ;;
|
-jvm-opts) require_arg path "$1" "$2" && jvm_opts_file="$2" && shift 2 ;;
|
||||||
|
|
||||||
-D*) addJava "$1" && shift ;;
|
-D*) addJava "$1" && shift ;;
|
||||||
-J*) addJava "${1:2}" && shift ;;
|
-J*) addJava "${1:2}" && shift ;;
|
||||||
-S*) addScalac "${1:2}" && shift ;;
|
-S*) addScalac "${1:2}" && shift ;;
|
||||||
-C*) addCoursier "${1:2}" && shift ;;
|
|
||||||
|
|
||||||
new) sbt_new=true && : ${sbt_explicit_version:=$sbt_release_version} && addResidual "$1" && shift ;;
|
new) sbt_new=true && : ${sbt_explicit_version:=$sbt_release_version} && addResidual "$1" && shift ;;
|
||||||
|
|
||||||
@@ -549,6 +584,18 @@ else
|
|||||||
vlog "No extra sbt options have been defined"
|
vlog "No extra sbt options have been defined"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# if there are file/environment sbtx_opts, process again so we
|
||||||
|
# can supply args to this runner
|
||||||
|
if [[ -r "$sbtx_opts_file" ]]; then
|
||||||
|
vlog "Using sbt options defined in file $sbtx_opts_file"
|
||||||
|
while read -r opt; do extra_sbt_opts+=("$opt"); done < <(readConfigFile "$sbtx_opts_file")
|
||||||
|
elif [[ -n "$SBTX_OPTS" && ! ("$SBTX_OPTS" =~ ^@.*) ]]; then
|
||||||
|
vlog "Using sbt options defined in variable \$SBTX_OPTS"
|
||||||
|
IFS=" " read -r -a extra_sbt_opts <<<"$SBTX_OPTS"
|
||||||
|
else
|
||||||
|
vlog "No extra sbt options have been defined"
|
||||||
|
fi
|
||||||
|
|
||||||
[[ -n "${extra_sbt_opts[*]}" ]] && process_args "${extra_sbt_opts[@]}"
|
[[ -n "${extra_sbt_opts[*]}" ]] && process_args "${extra_sbt_opts[@]}"
|
||||||
|
|
||||||
# reset "$@" to the residual args
|
# reset "$@" to the residual args
|
||||||
@@ -645,15 +692,13 @@ fi
|
|||||||
|
|
||||||
# options before a -- may be interpreted as options for itself by the
|
# options before a -- may be interpreted as options for itself by the
|
||||||
# coursier-based launcher
|
# coursier-based launcher
|
||||||
[[ -z "$coursier_launcher_version" ]] || [[ ${#coursier_args[@]} -eq 0 ]] || {
|
[[ -z "$coursier_launcher_version" ]] || {
|
||||||
addJava "-Dcoursier.sbt-launcher.parse-args=true"
|
addJava "-Dcoursier.sbt-launcher.parse-args=true"
|
||||||
addCoursier "--"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
execRunner "$java_cmd" \
|
execRunner "$java_cmd" \
|
||||||
"${extra_jvm_opts[@]}" \
|
"${extra_jvm_opts[@]}" \
|
||||||
"${java_args[@]}" \
|
"${java_args[@]}" \
|
||||||
-jar "$sbt_jar" \
|
-jar "$sbt_jar" \
|
||||||
"${coursier_args[@]}" \
|
|
||||||
"${sbt_commands[@]}" \
|
"${sbt_commands[@]}" \
|
||||||
"${residual_args[@]}"
|
"${residual_args[@]}"
|
||||||
|
|||||||
Reference in New Issue
Block a user