import sbt._ import Keys._ import BuildSettings.autoImport._ /** Custom commands for use by the Jenkins scripts. This keeps the surface area and call syntax small. */ object ScriptCommands { def all = Seq(setupPublishCore, setupValidateTest) /** Set up the environment for `validate/publish-core`. The argument is the Artifactory snapshot repository URL. */ def setupPublishCore = Command.single("setupPublishCore") { case (state, url) => Project.extract(state).append(Seq( baseVersionSuffix in Global := "SHA-SNAPSHOT", // Append build.timestamp to Artifactory URL to get consistent build numbers (see https://github.com/sbt/sbt/issues/2088): publishTo in Global := Some("scala-pr" at url.replaceAll("/$", "") + ";build.timestamp=" + System.currentTimeMillis), publishArtifact in (Compile, packageDoc) in ThisBuild := false, scalacOptions in Compile in ThisBuild += "-opt:l:classpath", logLevel in ThisBuild := Level.Info, logLevel in update in ThisBuild := Level.Warn ), state) } /** Set up the environment for `validate/test`. The argument is the Artifactory snapshot repository URL. */ def setupValidateTest = Command.single("setupValidateTest") { case (state, url) => //TODO When ant is gone, pass starr version as an argument to this command instead of using version.properties Project.extract(state).append(Seq( resolvers in Global += "scala-pr" at url, scalacOptions in Compile in ThisBuild += "-opt:l:classpath", testOptions in IntegrationTest in LocalProject("test") ++= Seq(Tests.Argument("--show-log"), Tests.Argument("--show-diff")), logLevel in ThisBuild := Level.Info, logLevel in update in ThisBuild := Level.Warn ), state) } }