Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sbt._
- import Keys._
- import Project.Initialize
- import java.util.Properties
- import java.io.FileInputStream
- import scala.collection.JavaConversions.asScalaSet
- import com.zentrope.ScalatePlugin._
- object MyBuild extends Build {
- import TemplateProcessor._
- val templateDirectory = "target/templates-prepared"
- val scalateTemplateDir = SettingKey[File]("scalate-template-directory")
- lazy val root = Project("root", file(".")) settings(
- sbtPlugin := true,
- name := "Scails",
- organization := "com.codequirks",
- version := "0.1.0",
- scalateTemplateDir := file("src/main/resources"),
- scalateTemplateDirectories in Compile <<= (scalateTemplateDirectories in Compile, baseDirectory) {
- (dirs, basedir) =>
- dirs ++ Seq(new File(basedir, "/" + templateDirectory))
- },
- cleanFiles <<= (cleanFiles, baseDirectory) {
- (files, basedir) =>
- files ++ Seq(new File(basedir, "/" + templateDirectory))
- },
- libraryDependencies ++= Seq(
- "org.fusesource.scalate" % "scalate-core" % "1.4.1" % "compile",
- "ch.qos.logback" % "logback-classic" % "0.9.28" % "compile"
- ),
- sourceGenerators in Compile <+= scalateTemplateDir map { startDir =>
- file(templateDirectory).mkdirs
- processDirectory(Seq[String](), startDir)
- Seq[File]()
- }
- )
- def processDirectory(basePath : Seq[String], dir : File) {
- file(templateDirectory).mkdirs
- dir.listFiles.filter(_.getName == "template.properties").foreach(copyTemplates(basePath, _))
- dir.listFiles.filter(_.isDirectory).foreach(f => processDirectory(basePath :+ f.getName, f))
- }
- def copyTemplates(basePath : Seq[String], propsFile : File) {
- val props = new Properties
- val templatePrefix = basePath.mkString("","_","_")
- props.load(new FileInputStream(propsFile))
- props.keySet.foreach { keyO =>
- val key = keyO.toString
- if(isTemplate(key)) {
- val template = file(propsFile.getParent+"/"+key)
- val templateTarget = key.replace("/", "_")
- val target = file(templateDirectory+"/"+templatePrefix+templateTarget)
- IO.copyFile(template, target)
- }
- }
- }
- def isTemplate(key : String) = {
- key.endsWith(".scaml") ||
- key.endsWith(".jade") ||
- key.endsWith(".ssp") ||
- key.endsWith(".mousetache")
- }
- }
Add Comment
Please, Sign In to add comment