@@ -18,6 +18,8 @@ object BoilerplatePlugin extends AutoPlugin {
1818
1919 object autoImport {
2020 val boilerplateGenerate = taskKey[Seq [File ]](" Generates boilerplate from template files" )
21+ val boilerplateSourceDirectories = settingKey[Seq [File ]](" Directories containing boilerplate template sources." )
22+ @ deprecated(" Use boilerplateSourceDirectories instead." , " 0.7.0" )
2123 val boilerplateSource = settingKey[File ](" Default directory containing boilerplate template sources." )
2224 val boilerplateSignature = settingKey[String ](
2325 " Function that creates signature string to prepend to the generated file (given an input file name). " +
@@ -34,27 +36,33 @@ object BoilerplatePlugin extends AutoPlugin {
3436 Compat .watchSourceSettings ++
3537 Seq (
3638 boilerplateSource := sourceDirectory.value / " boilerplate" ,
37- boilerplateGenerate := generateFromTemplates(streams.value, boilerplateSignature.value, boilerplateSource.value, sourceManaged.value),
39+ boilerplateSourceDirectories := Seq (boilerplateSource.value),
40+ boilerplateGenerate :=
41+ generateFromTemplates(streams.value, boilerplateSignature.value, boilerplateSourceDirectories.value, sourceManaged.value),
3842 mappings in packageSrc ++= managedSources.value pair (Path .relativeTo(sourceManaged.value) | Path .flat),
3943 sourceGenerators += boilerplateGenerate)
4044 }
4145
42- def generateFromTemplates (streams : TaskStreams , signature : String , sourceDir : File , targetDir : File ): Seq [File ] = {
43- val files = sourceDir ** " *.template"
44- streams.log.debug(s " Found ${files.get.size} template files in $sourceDir. " )
45-
46- def changeExtension (f : File ): File = {
47- val (_, name) = f.getName.reverse.span(_ != '.' )
48- val strippedName = name.drop(1 ).reverse.toString
49- val newName =
50- if (! strippedName.contains(" ." )) s " $strippedName.scala "
51- else strippedName
52- new File (f.getParent, newName)
46+ def generateFromTemplates (streams : TaskStreams , signature : String , sourceDirs : Seq [File ], targetDir : File ): Seq [File ] = {
47+ def generate (sourceDir : File ): Seq [(File , File )] = {
48+ val files = sourceDir ** " *.template"
49+ streams.log.debug(s " Found ${files.get.size} template files in $sourceDir. " )
50+
51+ def changeExtension (f : File ): File = {
52+ val (_, name) = f.getName.reverse.span(_ != '.' )
53+ val strippedName = name.drop(1 ).reverse.toString
54+ val newName =
55+ if (! strippedName.contains(" ." )) s " $strippedName.scala "
56+ else strippedName
57+ new File (f.getParent, newName)
58+ }
59+
60+ (files pair Path .rebase(sourceDir, targetDir)).map {
61+ case (orig, target) ⇒ (orig, changeExtension(target))
62+ }
5363 }
5464
55- val mapping = (files pair Path .rebase(sourceDir, targetDir)).map {
56- case (orig, target) ⇒ (orig, changeExtension(target))
57- }
65+ val mapping = sourceDirs.flatMap(generate)
5866
5967 val newFiles = mapping.map(_._2)
6068 clearTargetDir(streams, targetDir, signature, newFiles)
0 commit comments