diff options
author | Johannes Rudolph <johannes_rudolph@gmx.de> | 2012-10-10 09:57:18 +0200 |
---|---|---|
committer | Johannes Rudolph <johannes_rudolph@gmx.de> | 2012-10-10 09:57:18 +0200 |
commit | 7ccabd803ca26cde46c970c7fea45d59b7c54b3d (patch) | |
tree | e4ad3f720071c9864e22168afb1f2a0e8fd3428f /src/main/scala/cc/spray/boilerplate/BoilerplatePlugin.scala | |
parent | 14435c6e5264d8bf665695b503cbcb574e96aaa3 (diff) | |
download | sbt-boilerplate-7ccabd803ca26cde46c970c7fea45d59b7c54b3d.tar.gz sbt-boilerplate-7ccabd803ca26cde46c970c7fea45d59b7c54b3d.tar.bz2 sbt-boilerplate-7ccabd803ca26cde46c970c7fea45d59b7c54b3d.zip |
first version of plugin
Diffstat (limited to 'src/main/scala/cc/spray/boilerplate/BoilerplatePlugin.scala')
-rw-r--r-- | src/main/scala/cc/spray/boilerplate/BoilerplatePlugin.scala | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/main/scala/cc/spray/boilerplate/BoilerplatePlugin.scala b/src/main/scala/cc/spray/boilerplate/BoilerplatePlugin.scala new file mode 100644 index 0000000..0d8b9c3 --- /dev/null +++ b/src/main/scala/cc/spray/boilerplate/BoilerplatePlugin.scala @@ -0,0 +1,37 @@ +package cc.spray.boilerplate + +import sbt._ +import Keys._ + +object BoilerplatePlugin extends Plugin { + object Boilerplate { + val boilerplateGenerate = TaskKey[Seq[File]]("boilerplate-generate", "Generates boilerplate from template files") + + val settings = seq( + sourceDirectory in boilerplateGenerate <<= (sourceDirectory in Compile) / "boilerplate", + + target in boilerplateGenerate <<= (sourceManaged in Compile), + + boilerplateGenerate <<= (streams, sourceDirectory in boilerplateGenerate, target in boilerplateGenerate) map Generator.generateFromTemplates, + + (sourceGenerators in Compile) <+= boilerplateGenerate, + (managedSourceDirectories in Compile) <+= target in boilerplateGenerate, + + // watch sources support + includeFilter in boilerplateGenerate := "*.template", + excludeFilter in boilerplateGenerate <<= excludeFilter in Global, + watch(sourceDirectory in boilerplateGenerate, includeFilter in boilerplateGenerate, excludeFilter in boilerplateGenerate), + + // add managed sources to the packaged sources + mappings in (Compile, packageSrc) <++= + (sourceManaged in Compile, managedSources in Compile) map { (base, srcs) => + (srcs x (Path.relativeTo(base) | Path.flat)) + } + ) + + def watch(sourceDirKey: SettingKey[File], filterKey: SettingKey[FileFilter], excludeKey: SettingKey[FileFilter]) = + watchSources <++= (sourceDirKey, filterKey, excludeKey) map descendents + def descendents(sourceDir: File, filt: FileFilter, excl: FileFilter) = + sourceDir.descendantsExcept(filt, excl).get + } +} |