aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornrinaudo <nicolas@nrinaudo.com>2016-02-09 13:06:52 +0100
committerJohannes Rudolph <johannes.rudolph@gmail.com>2016-02-29 13:59:42 +0100
commit4a7c5fa2c92f61ddae64e505bebc0de552ac69d4 (patch)
treea2e2cccaf8b5725f9141ab9eb0ca89b1e90e3ab5
parent3e49f591af0c1a3a8f509f3555a14784b1e381ec (diff)
downloadsbt-boilerplate-4a7c5fa2c92f61ddae64e505bebc0de552ac69d4.tar.gz
sbt-boilerplate-4a7c5fa2c92f61ddae64e505bebc0de552ac69d4.tar.bz2
sbt-boilerplate-4a7c5fa2c92f61ddae64e505bebc0de552ac69d4.zip
Make boilerplate generation available in the Test configuration, fixes #17
As a side effect, the boilerplate source directory is now a setting.
-rw-r--r--src/main/scala/spray/boilerplate/BoilerplatePlugin.scala43
1 files changed, 14 insertions, 29 deletions
diff --git a/src/main/scala/spray/boilerplate/BoilerplatePlugin.scala b/src/main/scala/spray/boilerplate/BoilerplatePlugin.scala
index 993a800..32703fd 100644
--- a/src/main/scala/spray/boilerplate/BoilerplatePlugin.scala
+++ b/src/main/scala/spray/boilerplate/BoilerplatePlugin.scala
@@ -11,33 +11,21 @@ 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 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))
- })
+ val boilerplateGenerate = taskKey[Seq[File]]("Generates boilerplate from template files")
+ val boilerplateSource = settingKey[File]("Default directory containing boilerplate template sources.")
+
+ private def rawBoilerplateSettings: Seq[Setting[_]] = {
+ val inputFilter = "*.template"
+ Seq(
+ boilerplateSource := sourceDirectory.value / "boilerplate",
+ watchSources in Defaults.ConfigGlobal ++= ((boilerplateSource.value ** inputFilter) --- (boilerplateSource.value ** excludeFilter.value ** inputFilter)).get,
+ boilerplateGenerate := generateFromTemplates(streams.value, boilerplateSource.value, sourceManaged.value),
+ mappings in packageSrc ++= managedSources.value x (Path.relativeTo(sourceManaged.value) | Path.flat),
+ sourceGenerators <+= boilerplateGenerate)
+ }
- 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) =
- descendantsExcept(sourceDir, filt, excl).get
+ val settings =
+ inConfig(Compile)(rawBoilerplateSettings) ++ inConfig(Test)(rawBoilerplateSettings)
def generateFromTemplates(streams: TaskStreams, sourceDir: File, targetDir: File): Seq[File] = {
val files = sourceDir ** "*.template"
@@ -64,7 +52,4 @@ object BoilerplatePlugin extends Plugin {
mapping.map(_._2)
}
}
-
- def descendantsExcept(path: PathFinder, include: FileFilter, intermediateExclude: FileFilter): PathFinder =
- (path ** include) --- (path ** intermediateExclude ** include)
}