sbt/project/SbtScriptedIT.scala

109 lines
3.1 KiB
Scala

// import sbt._
// import Keys._
// import java.io.File
// import java.util.UUID.randomUUID
// object SbtScriptedIT extends AutoPlugin {
// object autoImport {
// val scriptedTestSbtRepo = settingKey[String]("SBT repository to be used in scripted tests")
// val scriptedTestSbtRef = settingKey[String]("SBT branch to be used in scripted tests")
// val scriptedTestLMImpl = settingKey[String]("Librarymanagement implementation to be used in scripted tests")
// val scriptedSbtVersion = settingKey[String]("SBT version to be published locally for IT tests")
// }
// import autoImport._
// override def requires = ScriptedPlugin
// override def trigger = noTrigger
// override lazy val globalSettings = Seq(
// scriptedTestSbtRepo := "https://github.com/sbt/sbt.git",
// scriptedTestSbtRef := "develop",
// scriptedTestLMImpl := "ivy",
// scriptedSbtVersion := s"""${sbtVersion.value}-LM-SNAPSHOT"""
// )
// private def cloneSbt(targetDir: File, repo: String, ref: String) = {
// import org.eclipse.jgit.api._
// if (!targetDir.exists) {
// IO.createDirectory(targetDir)
// new CloneCommand()
// .setDirectory(targetDir)
// .setURI(repo)
// .call()
// val git = Git.open(targetDir)
// git.checkout().setName(ref).call()
// }
// }
// private def publishLocalSbt(
// targetDir: File,
// lmVersion: String,
// lmGroupID: String,
// lmArtifactID: String,
// version: String) = {
// import sys.process._
// Process(
// Seq(
// "sbt",
// "-J-Xms2048m",
// "-J-Xmx2048m",
// "-J-XX:ReservedCodeCacheSize=256m",
// "-J-XX:MaxMetaspaceSize=512m",
// s"""-Dsbt.build.lm.version=${lmVersion}""",
// s"""-Dsbt.build.lm.organization=${lmGroupID}""",
// s"""-Dsbt.build.lm.moduleName=${lmArtifactID}""",
// s"""set ThisBuild / version := "${version}"""",
// "clean",
// "publishLocal"
// ),
// Some(targetDir)
// ) !
// }
// private def setScriptedTestsSbtVersion(baseDir: File, version: String) = {
// IO.listFiles(baseDir).foreach { d =>
// if (d.isDirectory) {
// IO.createDirectory(d / "project")
// IO.write(
// d / "project" / "build.properties",
// s"sbt.version=$version"
// )
// }
// }
// }
// import sbt.ScriptedPlugin.autoImport._
// override lazy val projectSettings = Seq(
// scriptedTests := {
// val targetDir = target.value / "sbt"
// if (!targetDir.exists) {
// cloneSbt(targetDir, scriptedTestSbtRepo.value, scriptedTestSbtRef.value)
// publishLocalSbt(
// targetDir,
// version.value,
// organization.value,
// s"librarymanagement-${scriptedTestLMImpl.value}",
// scriptedSbtVersion.value
// )
// }
// setScriptedTestsSbtVersion(
// sbtTestDirectory.value / thisProject.value.id,
// scriptedSbtVersion.value
// )
// scriptedTests.value
// }
// )
// }