From 4a7c5fa2c92f61ddae64e505bebc0de552ac69d4 Mon Sep 17 00:00:00 2001 From: nrinaudo Date: Tue, 9 Feb 2016 13:06:52 +0100 Subject: Make boilerplate generation available in the Test configuration, fixes #17 As a side effect, the boilerplate source directory is now a setting. --- .../spray/boilerplate/BoilerplatePlugin.scala | 43 +++++++--------------- 1 file 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) } -- cgit v1.2.3