I just switched to SBT 0.13.1 and either arg handling changed or there's a bug. Here's what I'm testing with (named sbt-test.scala
):
#!/bin/sh SBT_0_13_0="/path/to/sbt-launch-0.13.0.jar" SBT_0_13_1="/path/to/sbt-launch-0.13.1.jar" SBT="$SBT_0_13_1" exec java $JAVA_OPTS -Dsbt.main.class=sbt.ScriptMain -jar "$SBT" $0 "$@" !# /*** scalaVersion := "2.10.3" libraryDependencies ++= Seq( "com.typesafe" % "config" % "1.0.0" ) */ import com.typesafe.config.{ConfigFactory, Config} println(s"Args: ${args mkString ", "}") val cfg = ConfigFactory.parseString( """ |credentials { | user = someone | pass = s3cr3t |} """.stripMargin) println(cfg getString "credentials.user")
When I run ./sbt-test.scala --arg=val
I get the following error:
[error] Expected ID character [error] Not a valid command: arg [error] arg=val
Running the same script with the same argument with SBT 0.13.0 yields the expected:
Args: --arg=val someone
Similarly, if I turn that executable script into an actual SBT project and attempt to run sbt run --flag
I get
[error] Not a valid command: flag (similar: iflast, last, alias) [error] flag