diff options
author | Johannes Rudolph <johannes_rudolph@gmx.de> | 2012-10-10 12:29:01 +0200 |
---|---|---|
committer | Johannes Rudolph <johannes_rudolph@gmx.de> | 2012-10-10 12:29:01 +0200 |
commit | 3fb580276af6bc12861de42c0115c04549c98177 (patch) | |
tree | ac358d8d558474c965020572196897e3a3e37b98 /src/main/scala/cc/spray/boilerplate/BoilerplatePlugin.scala | |
parent | 7ccabd803ca26cde46c970c7fea45d59b7c54b3d (diff) | |
download | sbt-boilerplate-3fb580276af6bc12861de42c0115c04549c98177.tar.gz sbt-boilerplate-3fb580276af6bc12861de42c0115c04549c98177.tar.bz2 sbt-boilerplate-3fb580276af6bc12861de42c0115c04549c98177.zip |
simplified syntax and provide a proper parser
Diffstat (limited to 'src/main/scala/cc/spray/boilerplate/BoilerplatePlugin.scala')
-rw-r--r-- | src/main/scala/cc/spray/boilerplate/BoilerplatePlugin.scala | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/src/main/scala/cc/spray/boilerplate/BoilerplatePlugin.scala b/src/main/scala/cc/spray/boilerplate/BoilerplatePlugin.scala index 0d8b9c3..df50691 100644 --- a/src/main/scala/cc/spray/boilerplate/BoilerplatePlugin.scala +++ b/src/main/scala/cc/spray/boilerplate/BoilerplatePlugin.scala @@ -12,7 +12,7 @@ object BoilerplatePlugin extends Plugin { target in boilerplateGenerate <<= (sourceManaged in Compile), - boilerplateGenerate <<= (streams, sourceDirectory in boilerplateGenerate, target in boilerplateGenerate) map Generator.generateFromTemplates, + boilerplateGenerate <<= (streams, sourceDirectory in boilerplateGenerate, target in boilerplateGenerate) map generateFromTemplates, (sourceGenerators in Compile) <+= boilerplateGenerate, (managedSourceDirectories in Compile) <+= target in boilerplateGenerate, @@ -33,5 +33,30 @@ object BoilerplatePlugin extends Plugin { watchSources <++= (sourceDirKey, filterKey, excludeKey) map descendents def descendents(sourceDir: File, filt: FileFilter, excl: FileFilter) = sourceDir.descendantsExcept(filt, excl).get + + def generateFromTemplates(streams: TaskStreams, sourceDir: File, targetDir: File): Seq[File] = { + val files = sourceDir ** "*.template" + + def changeExtension(f: File): File = { + val (ext, name) = f.getName.reverse.span(_ != '.') + new File(f.getParent, name.drop(1).reverse.toString) + } + + val mapping = (files x rebase(sourceDir, targetDir)).map { + case (orig, target) => (orig, changeExtension(target)) + } + + mapping foreach { + case (templateFile, target) => + if (templateFile.lastModified > target.lastModified) { + streams.log.info("Generating '%s'" format target.getName) + val template = IO.read(templateFile) + IO.write(target, Generator.generateFromTemplate(template, 22)) + } else + streams.log.debug("Template '%s' older than target. Ignoring." format templateFile.getName) + } + + mapping.map(_._2) + } } } |