Permalink
Browse files

Partition system and app args to bootstrapped executable (#852)

  • Loading branch information...
2m authored and alexarchambault committed May 21, 2018
1 parent a5b0424 commit e4f40b6a1d217c4e7442a9f22ae8b5cd73abcdba
Showing with 32 additions and 3 deletions.
  1. +20 −1 cli/src/main/scala-2.12/coursier/cli/Bootstrap.scala
  2. +12 −2 scripts/travis.sh
@@ -68,18 +68,37 @@ object Bootstrap extends CaseApp[BootstrapOptions] {
private def createJarBootstrapWithPreamble(javaOpts: Seq[String], output: File, content: Array[Byte]): Unit = {
val argsPartitioner =
"""|sys_args=""
|app_args=""
|i=1; while [ "$i" -le $# ]; do
| eval arg=\${$i}
| case $arg in
| -J-*)
| sys_args="$sys_args ${arg#-J}"
| ;;
| *)
| app_args="$app_args $arg"
| ;;
| esac
| i=$((i + 1))
|done
|""".stripMargin
val javaCmd = Seq("java") ++
javaOpts
// escaping possibly a bit loose :-|
.map(s => "'" + s.replace("'", "\\'") + "'") ++
Seq(
"$sys_args",
"-jar",
"\"$0\"",
"\"$@\""
"$app_args"
)
val shellPreamble = Seq(
"#!/usr/bin/env sh",
argsPartitioner,
"exec " + javaCmd.mkString(" ")
).mkString("", "\n", "\n")
@@ -136,6 +136,11 @@ testBootstrap() {
exit 1
fi
if [ "$(./cs-echo-launcher -J-Dother=thing foo -J-Dfoo=baz)" != foo ]; then
echo "Error: unexpected output from bootstrapped echo command (generated by proguarded launcher)." 1>&2
exit 1
fi
# run via the launcher rather than via the sbt-pack scripts, because the latter interprets -Dfoo=baz itself
# rather than passing it to coursier since https://github.com/xerial/sbt-pack/pull/118
./coursier-test bootstrap -o cs-props -D other=thing -J -Dfoo=baz io.get-coursier:props:1.0.2
@@ -150,6 +155,11 @@ testBootstrap() {
exit 1
fi
if [ "$(./cs-props -J-Dhappy=days happy)" != days ]; then
echo "Error: unexpected output from bootstrapped props command." 1>&2
exit 1
fi
# assembly tests
./coursier-test bootstrap -a -o cs-props-assembly -D other=thing -J -Dfoo=baz io.get-coursier:props:1.0.2
local OUT="$(./cs-props-assembly foo)"
@@ -192,6 +202,8 @@ if isScalaJs; then
jsCompile
runJsTests
else
testBootstrap
testNativeBootstrap
integrationTestsRequirements
@@ -208,8 +220,6 @@ else
else
runJvmTests
testBootstrap
validateReadme
checkBinaryCompatibility
fi

0 comments on commit e4f40b6

Please sign in to comment.