// 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 // } // ) // }