mirror of https://github.com/sbt/sbt.git
Take into account --property options in bootstrap
This commit is contained in:
parent
d0e9e41ca9
commit
962debc050
|
|
@ -76,9 +76,10 @@ object Bootstrap extends CaseApp[BootstrapOptions] {
|
||||||
}
|
}
|
||||||
|
|
||||||
val properties0 = validProperties.map { s =>
|
val properties0 = validProperties.map { s =>
|
||||||
val idx = s.indexOf('=')
|
s.split("=", 2) match {
|
||||||
assert(idx >= 0)
|
case Array(k, v) => k -> v
|
||||||
(s.take(idx), s.drop(idx + 1))
|
case _ => sys.error("Cannot possibly happen")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val bootstrapJar =
|
val bootstrapJar =
|
||||||
|
|
@ -197,10 +198,27 @@ object Bootstrap extends CaseApp[BootstrapOptions] {
|
||||||
|
|
||||||
outputZip.close()
|
outputZip.close()
|
||||||
|
|
||||||
// escaping of javaOpt possibly a bit loose :-|
|
val javaCmd = Seq("java") ++
|
||||||
|
options
|
||||||
|
.options
|
||||||
|
.javaOpt
|
||||||
|
// escaping possibly a bit loose :-|
|
||||||
|
.map(s => "'" + s.replace("'", "\\'") + "'") ++
|
||||||
|
properties0
|
||||||
|
.map {
|
||||||
|
case (k, v) =>
|
||||||
|
// escaping possibly a bit loose :-|
|
||||||
|
s"'-D$k=${v.replace("'", "\\'")}'"
|
||||||
|
} ++
|
||||||
|
Seq(
|
||||||
|
"-jar",
|
||||||
|
"\"$0\"",
|
||||||
|
"\"$@\""
|
||||||
|
)
|
||||||
|
|
||||||
val shellPreamble = Seq(
|
val shellPreamble = Seq(
|
||||||
"#!/usr/bin/env sh",
|
"#!/usr/bin/env sh",
|
||||||
"exec java " + options.options.javaOpt.map(s => "'" + s.replace("'", "\\'") + "'").mkString(" ") + " -jar \"$0\" \"$@\""
|
"exec " + javaCmd.mkString(" ")
|
||||||
).mkString("", "\n", "\n")
|
).mkString("", "\n", "\n")
|
||||||
|
|
||||||
try Files.write(output0.toPath, shellPreamble.getBytes(UTF_8) ++ buffer.toByteArray)
|
try Files.write(output0.toPath, shellPreamble.getBytes(UTF_8) ++ buffer.toByteArray)
|
||||||
|
|
|
||||||
|
|
@ -138,12 +138,17 @@ testBootstrap() {
|
||||||
|
|
||||||
# run via the launcher rather than via the sbt-pack scripts, because the latter interprets -Dfoo=baz itself
|
# 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
|
# rather than passing it to coursier since https://github.com/xerial/sbt-pack/pull/118
|
||||||
./coursier-test bootstrap -o cs-props -J -Dfoo=baz io.get-coursier:props:1.0.2
|
./coursier-test bootstrap -o cs-props -D other=thing -J -Dfoo=baz io.get-coursier:props:1.0.2
|
||||||
local OUT="$(./cs-props foo)"
|
local OUT="$(./cs-props foo)"
|
||||||
if [ "$OUT" != baz ]; then
|
if [ "$OUT" != baz ]; then
|
||||||
echo -e "Error: unexpected output from bootstrapped props command.\n$OUT" 1>&2
|
echo -e "Error: unexpected output from bootstrapped props command.\n$OUT" 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
local OUT="$(./cs-props other)"
|
||||||
|
if [ "$OUT" != thing ]; then
|
||||||
|
echo -e "Error: unexpected output from bootstrapped props command.\n$OUT" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue