diff --git a/project/packaging.scala b/project/packaging.scala index 2c055b885..ede231104 100644 --- a/project/packaging.scala +++ b/project/packaging.scala @@ -9,6 +9,10 @@ object Packaging { val sbtLaunchJarLocation = SettingKey[File]("sbt-launch-jar-location") val sbtLaunchJar = TaskKey[File]("sbt-launch-jar", "Resolves SBT launch jar") + val jansiJarUrl = SettingKey[String]("jansi-jar-url") + val jansiJarLocation = SettingKey[File]("jansi-jar-location") + val jansiJar = TaskKey[File]("jansi-jar", "Resolves Jansi jar") + val winowsReleaseUrl = "http://typesafe.artifactoryonline.com/typesafe/windows-releases" def localWindowsPattern = "[organisation]/[module]/[revision]/[module].[ext]" @@ -26,6 +30,18 @@ object Packaging { // TODO - GPG Trust validation. file }, + jansiJarUrl := "http://repo.fusesource.com/nexus/content/groups/public/org/fusesource/jansi/jansi/1.7/jansi-1.7.jar", + jansiJarLocation <<= target apply (_ / "jansi-1.7.jar"), + jansiJar <<= (jansiJarUrl, jansiJarLocation) map { (uri, file) => + import dispatch._ + if(!file.exists) { + val writer = new java.io.BufferedOutputStream(new java.io.FileOutputStream(file)) + try Http(url(uri) >>> writer) + finally writer.close() + } + // TODO - GPG Trust validation. + file + }, // GENERAL LINUX PACKAGING STUFFS maintainer := "Josh Suereth ", packageSummary := "Simple Build Tool for Scala-driven builds", @@ -93,15 +109,21 @@ object Packaging { wixConfig <<= (sbtVersion, sourceDirectory in Windows) map makeWindowsXml, //wixFile <<= sourceDirectory in Windows map (_ / "sbt.xml"), mappings in packageMsi in Windows <+= sbtLaunchJar map { f => f -> "sbt-launch.jar" }, + mappings in packageMsi in Windows <+= jansiJar map { f => f -> "jansi.jar" }, mappings in packageMsi in Windows <+= sourceDirectory in Windows map { d => - (d / "sbt.bat") -> "sbt.bat" } + (d / "sbt.bat") -> "sbt.bat" }, + mappings in packageMsi in Windows <+= (compile in Compile, classDirectory in Compile) map { (c, d) => + compile; (d / "SbtJansiLaunch.class") -> "SbtJansiLaunch.class" } // WINDOWS MSI Publishing ) ++ inConfig(Windows)(Classpaths.publishSettings) ++ Seq( packagedArtifacts in Windows <<= (packageMsi in Windows, name in Windows) map { (msi, name) => val artifact = Artifact(name, "msi", "msi", classifier = None, configurations = Iterable.empty, url = None, extraAttributes = Map.empty) Map(artifact -> msi) }, - publishTo in Windows := Some(Resolver.url("windows-releases", new URL(winowsReleaseUrl))(Patterns(localWindowsPattern))) + publishTo in Windows := Some(Resolver.url("windows-releases", new URL(winowsReleaseUrl))(Patterns(localWindowsPattern))), + javacOptions := Seq("-source", "1.5", "-target", "1.5"), + unmanagedJars in Compile <+= sbtLaunchJar map identity, + unmanagedJars in Compile <+= jansiJar map identity ) def makeWindowsXml(sbtVersion: String, sourceDir: File) = { @@ -129,9 +151,17 @@ object Packaging { + + + + + + + + @@ -148,6 +178,8 @@ object Packaging { + + diff --git a/src/main/java/SbtJansiLaunch.java b/src/main/java/SbtJansiLaunch.java new file mode 100644 index 000000000..f9790ef9f --- /dev/null +++ b/src/main/java/SbtJansiLaunch.java @@ -0,0 +1,6 @@ +class SbtJansiLaunch { + public static void main(String[] args) { + org.fusesource.jansi.AnsiConsole.systemInstall(); + xsbt.boot.Boot.main(args); + } +} diff --git a/src/windows/sbt.bat b/src/windows/sbt.bat index 51e540640..70ccb8de0 100644 --- a/src/windows/sbt.bat +++ b/src/windows/sbt.bat @@ -1,3 +1,3 @@ @echo off -set SCRIPT_DIR=%~dp0 -java -Xmx512M -jar "%SCRIPT_DIR%sbt-launch.jar" %* \ No newline at end of file +set SBT_HOME=%~dp0 +java -Xmx512M -Dsbt.log.format=true -cp "%SBT_HOME%jansi.jar;%SBT_HOME%sbt-launch.jar;%SBT_HOME%classes" SbtJansiLaunch %*