@@ -23,7 +23,7 @@ import akka.grpc.sbt.AkkaGrpcPlugin.autoImport.AkkaGrpc
2323import java .nio .file .Path
2424import java .nio .file .Paths
2525import java .nio .file .Files
26- import com .akkaserverless .codegen .scalasdk .{ gen , genTests , genUnmanaged , AkkaserverlessGenerator }
26+ import com .akkaserverless .codegen .scalasdk .{ gen , genTests , genUnmanaged , genUnmanagedTest , AkkaserverlessGenerator }
2727import sbt .{ Compile , _ }
2828import sbt .Keys ._
2929import sbtprotoc .ProtocPlugin
@@ -40,6 +40,7 @@ object AkkaserverlessPlugin extends AutoPlugin {
4040 " These are the source files that are placed in the source tree, and after initial generation should typically be maintained by the user.\n " +
4141 " Files that already exist they are not re-generated." )
4242 val temporaryUnmanagedDirectory = settingKey[File ](" Directory to generate 'unmanaged' sources into" )
43+ val temporaryUnmanagedTestDirectory = settingKey[File ](" Directory to generate 'unmanaged' test sources into" )
4344 }
4445 object autoImport extends Keys
4546 import autoImport ._
@@ -52,12 +53,15 @@ object AkkaserverlessPlugin extends AutoPlugin {
5253 gen(
5354 akkaGrpcCodeGeneratorSettings.value :+ AkkaserverlessGenerator .enableDebug) -> (Compile / sourceManaged).value / " akkaserverless" ,
5455 Compile / temporaryUnmanagedDirectory := (Compile / baseDirectory).value / " target" / " akkaserverless-unmanaged" ,
56+ Test / temporaryUnmanagedTestDirectory := (Test / baseDirectory).value / " target" / " akkaserverless-unmanaged-test" ,
5557 // FIXME there is a name clash between the Akka gRPC server-side service 'handler'
5658 // and the Akka Serverless 'handler'. For now working around it by only generating
5759 // the client, but we should probably resolve this before the first public release.
5860 Compile / akkaGrpcGeneratedSources := Seq (AkkaGrpc .Client ),
5961 Compile / PB .targets ++= Seq (genUnmanaged(
6062 akkaGrpcCodeGeneratorSettings.value :+ AkkaserverlessGenerator .enableDebug) -> (Compile / temporaryUnmanagedDirectory).value),
63+ Test / PB .targets ++= Seq (genUnmanagedTest(
64+ akkaGrpcCodeGeneratorSettings.value :+ AkkaserverlessGenerator .enableDebug) -> (Test / temporaryUnmanagedTestDirectory).value),
6165 Test / PB .protoSources ++= (Compile / PB .protoSources).value,
6266 Test / PB .targets +=
6367 genTests(
@@ -71,10 +75,23 @@ object AkkaserverlessPlugin extends AutoPlugin {
7175 Paths .get((Compile / temporaryUnmanagedDirectory).value.toURI),
7276 Paths .get((Compile / sourceDirectory).value.toURI).resolve(" scala" ))
7377 },
78+ Test / generateUnmanaged := {
79+ Files .createDirectories(Paths .get((Test / temporaryUnmanagedTestDirectory).value.toURI))
80+ // Make sure generation has happened
81+ val _ = (Test / PB .generate).value
82+ // Then copy over any new generated unmanaged sources
83+ copyIfNotExist(
84+ Paths .get((Test / temporaryUnmanagedTestDirectory).value.toURI),
85+ Paths .get((Test / sourceDirectory).value.toURI).resolve(" scala" ))
86+ },
7487 Compile / managedSources :=
7588 (Compile / managedSources).value.filter(s => ! isIn(s, (Compile / temporaryUnmanagedDirectory).value)),
7689 Compile / unmanagedSources :=
77- (Compile / generateUnmanaged).value ++ (Compile / unmanagedSources).value)
90+ (Compile / generateUnmanaged).value ++ (Compile / unmanagedSources).value,
91+ Test / managedSources :=
92+ (Test / managedSources).value.filter(s => ! isIn(s, (Test / temporaryUnmanagedTestDirectory).value)),
93+ Test / unmanagedSources :=
94+ (Test / generateUnmanaged).value ++ (Test / unmanagedSources).value)
7895
7996 def isIn (file : File , dir : File ): Boolean =
8097 Paths .get(file.toURI).startsWith(Paths .get(dir.toURI))
0 commit comments