Skip to content

Commit 5a12210

Browse files
committed
support minimumEdition and maximumEdition
1 parent 2383edf commit 5a12210

File tree

1 file changed

+42
-7
lines changed

1 file changed

+42
-7
lines changed
Lines changed: 42 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,40 @@
11
package protocgen
22

3+
import com.google.protobuf.UnknownFieldSet
34
import com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse
45
import scala.collection.JavaConverters._
56

67
sealed trait CodeGenResponse {
78
def toCodeGeneratorResponse: CodeGeneratorResponse =
89
this match {
9-
case CodeGenResponse.Internal.Success(files, features) =>
10+
case value: CodeGenResponse.Internal.Success =>
1011
val b = CodeGeneratorResponse.newBuilder()
11-
b.addAllFile(files.asJava)
12-
b.setSupportedFeatures(features.map(_.getNumber()).sum)
12+
b.addAllFile(value.files.asJava)
13+
b.setSupportedFeatures(value.supportedFeatures.map(_.getNumber()).sum)
14+
b.setUnknownFields(
15+
// https://github.com/protocolbuffers/protobuf/blob/1f60d67437d7f57700/src/google/protobuf/compiler/plugin.proto#L105-L115
16+
UnknownFieldSet
17+
.newBuilder()
18+
.addField(
19+
3,
20+
UnknownFieldSet.Field
21+
.newBuilder()
22+
.addVarint(
23+
value.minimumEdition
24+
)
25+
.build()
26+
)
27+
.addField(
28+
4,
29+
UnknownFieldSet.Field
30+
.newBuilder()
31+
.addVarint(
32+
value.maximumEdition
33+
)
34+
.build()
35+
)
36+
.build()
37+
)
1338
b.build()
1439
case CodeGenResponse.Internal.Failure(msg) =>
1540
val b = CodeGeneratorResponse.newBuilder()
@@ -20,22 +45,32 @@ sealed trait CodeGenResponse {
2045

2146
object CodeGenResponse {
2247
def succeed(files: Seq[CodeGeneratorResponse.File]): CodeGenResponse =
23-
Internal.Success(files, Set())
48+
Internal.Success(files, Set(), 0, 0)
2449

2550
def succeed(
2651
files: Seq[CodeGeneratorResponse.File],
2752
supportedFeatures: Set[CodeGeneratorResponse.Feature]
2853
): CodeGenResponse =
29-
Internal.Success(files, supportedFeatures)
54+
Internal.Success(files, supportedFeatures, 0, 0)
55+
56+
def succeed(
57+
files: Seq[CodeGeneratorResponse.File],
58+
supportedFeatures: Set[CodeGeneratorResponse.Feature],
59+
minimumEdition: Int,
60+
maximumEdition: Int
61+
): CodeGenResponse =
62+
Internal.Success(files, supportedFeatures, minimumEdition, maximumEdition)
3063

3164
def fail(message: String): CodeGenResponse = Internal.Failure(message)
3265

3366
private object Internal {
3467
final case class Failure(val message: String) extends CodeGenResponse
3568

3669
final case class Success(
37-
val files: Seq[CodeGeneratorResponse.File],
38-
supportedFeatures: Set[CodeGeneratorResponse.Feature]
70+
files: Seq[CodeGeneratorResponse.File],
71+
supportedFeatures: Set[CodeGeneratorResponse.Feature],
72+
minimumEdition: Int,
73+
maximumEdition: Int
3974
) extends CodeGenResponse
4075
}
4176
}

0 commit comments

Comments
 (0)