aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/cc/spray/boilerplate/BoilerplatePlugin.scala
diff options
context:
space:
mode:
authorJohannes Rudolph <johannes_rudolph@gmx.de>2012-10-10 09:57:18 +0200
committerJohannes Rudolph <johannes_rudolph@gmx.de>2012-10-10 09:57:18 +0200
commit7ccabd803ca26cde46c970c7fea45d59b7c54b3d (patch)
treee4ad3f720071c9864e22168afb1f2a0e8fd3428f /src/main/scala/cc/spray/boilerplate/BoilerplatePlugin.scala
parent14435c6e5264d8bf665695b503cbcb574e96aaa3 (diff)
downloadsbt-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.scala37
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
+ }
+}