From 135ab347ed84addfd2452b46575d26cee5bf6d9f Mon Sep 17 00:00:00 2001 From: Philippe Suter <philippe.suter@gmail.com> Date: Mon, 21 Jun 2010 16:56:41 +0000 Subject: [PATCH] finally, clean works :) --- project/build/funcheck.scala | 61 ++++++++++++++++++++++-------------- 1 file changed, 37 insertions(+), 24 deletions(-) diff --git a/project/build/funcheck.scala b/project/build/funcheck.scala index 86484ef09..ae6b70053 100644 --- a/project/build/funcheck.scala +++ b/project/build/funcheck.scala @@ -1,6 +1,6 @@ import sbt._ -class FunCheckProject(info: ProjectInfo) extends ParentProject(info) with FileTasks { +class FunCheckProject(info: ProjectInfo) extends DefaultProject(info) with FileTasks { override def outputDirectoryName = "bin" override def dependencyPath = "lib" override def shouldCheckOutputDirectories = false @@ -11,35 +11,50 @@ class FunCheckProject(info: ProjectInfo) extends ParentProject(info) with FileTa val scriptPath: Path = "." / "scalac-funcheck" - lazy val all = fileTask(scriptPath :: Nil)(allActions) dependsOn(plugin.`package`) describedAs("Compile everything and produce a script file.") - - def allActions: Option[String] = { - val nl = System.getProperty("line.separator") - val f = scriptPath.asFile - val fw = new java.io.FileWriter(f) - fw.write("#!/bin/sh" + nl) - fw.write("LD_LIBRARY_PATH=" + ("." / "lib-bin").absolutePath + " \\" + nl) - fw.write("java \\" + nl) - val libStr = (buildLibraryJar.absolutePath).toString - fw.write(" -Dscala.home=" + libStr.substring(0, libStr.length-21) + " \\" + nl) - fw.write(" -classpath \\" + nl) - fw.write(" " + buildLibraryJar.absolutePath + ":") - fw.write(buildCompilerJar.absolutePath + ":") - fw.write(purescala.jarPath.absolutePath + ":") - fw.write(plugin.jarPath.absolutePath + ":") - fw.write(("lib" / "z3.jar").absolutePath + " \\" + nl) - fw.write(" scala.tools.nsc.Main -Xplugin:" + plugin.jarPath.absolutePath + " $@" + nl) - fw.close - f.setExecutable(true) + lazy val all = fileTask(scriptPath :: Nil)(generateScript) dependsOn(purescala.`package`, plugin.`package`) describedAs("Compile everything and produce a script file.") + + override def cleanAction = super.cleanAction dependsOn(deleteScript) + + lazy val deletescr = deleteScript + + def deleteScript = task { + scriptPath.asFile.delete None } + def generateScript: Option[String] = { + try { + val nl = System.getProperty("line.separator") + val f = scriptPath.asFile + val fw = new java.io.FileWriter(f) + fw.write("#!/bin/sh" + nl) + fw.write("LD_LIBRARY_PATH=" + ("." / "lib-bin").absolutePath + " \\" + nl) + fw.write("java \\" + nl) + + // This is a hack :( + val libStr = (buildLibraryJar.absolutePath).toString + fw.write(" -Dscala.home=" + libStr.substring(0, libStr.length-21) + " \\" + nl) + + fw.write(" -classpath \\" + nl) + fw.write(" " + buildLibraryJar.absolutePath + ":") + fw.write(buildCompilerJar.absolutePath + ":") + fw.write(purescala.jarPath.absolutePath + ":") + fw.write(plugin.jarPath.absolutePath + ":") + fw.write(("lib" / "z3.jar").absolutePath + " \\" + nl) + fw.write(" scala.tools.nsc.Main -Xplugin:" + plugin.jarPath.absolutePath + " $@" + nl) + fw.close + f.setExecutable(true) + None + } catch { + case e => Some("There was an error while generating the script file: " + e.getLocalizedMessage) + } + } + sealed abstract class PersonalizedProject(info: ProjectInfo) extends DefaultProject(info) { override def dependencyPath = "lib" override def outputDirectoryName = "bin" override def compileOptions = super.compileOptions ++ Seq(Unchecked) } - class PureScalaProject(info: ProjectInfo) extends PersonalizedProject(info) { override def outputPath = "bin" / "purescala" override def mainScalaSourcePath = "src" / "purescala" @@ -50,8 +65,6 @@ class FunCheckProject(info: ProjectInfo) extends ParentProject(info) with FileTa override def mainScalaSourcePath = "src" / "funcheck" override def unmanagedClasspath = super.unmanagedClasspath +++ purescala.jarPath override def mainResourcesPath = "resources" / "funcheck" - - } class MultisetsProject(info: ProjectInfo) extends PersonalizedProject(info) { override def outputPath = "bin" / "multisets" -- GitLab