Skip to content

Instantly share code, notes, and snippets.

@mccv
Created December 15, 2010 18:12
Show Gist options
  • Save mccv/742368 to your computer and use it in GitHub Desktop.
Save mccv/742368 to your computer and use it in GitHub Desktop.
.ensime generating task for sbt
// generate ensime config
lazy val genEnsime = task (args => {
if (args.length == 1) {
genEnsimeConstructor(args(0).toString)
} else {
task { Some("Usage: gen-ensime <project package name>") }
}
}) describedAs("Generate a .ensime file for this project")
def genEnsimeConstructor(packageName: String) = task {
val ensime = new StringBuffer()
// if you have more libs, override this bit
val jarDirs = List(dependencyPath, crossPath("lib_managed") + "/compile", crossPath("lib_managed") + "/test").map("\"" + _ + "\"")
// ditto with more src dirs
val srcDirs = List(thriftJavaPath.toString).map("\"" + _ + "\"")
ensime.append(";; this config was generated by standard-project. Feel free to customize!\n")
ensime.append("(\n")
ensime.append(":project-package \"").append(packageName).append("\"\n")
ensime.append(":use-sbt t\n")
ensime.append(":compile-jars (").append(jarDirs.mkString(" ")).append(")\n")
ensime.append(":sources (").append(srcDirs.mkString(" ")).append(")\n")
ensime.append(")\n")
// rename old file (if it exists)
val oldFile = new File(".ensime")
if (oldFile.exists) {
val newFile = new File(".ensime-%d".format(System.currentTimeMillis()))
oldFile.renameTo(newFile)
}
// and dump our config
val newFile = new File(".ensime")
val writer = new FileWriter(newFile)
writer.write(ensime.toString())
writer.close()
None
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment