Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@ public abstract class GenerateProtoTask extends DefaultTask {
private final ConfigurableFileCollection includeDirs = objectFactory.fileCollection()
// source files are proto files that will be compiled by protoc
private final ConfigurableFileCollection sourceFiles = objectFactory.fileCollection()
// descriptor files are proto files that will be passed to protoc as --descriptor_set_in
private final ConfigurableFileCollection descriptorSetFiles = objectFactory.fileCollection()
private final NamedDomainObjectContainer<PluginOptions> builtins = objectFactory.domainObjectContainer(PluginOptions)
private final NamedDomainObjectContainer<PluginOptions> plugins = objectFactory.domainObjectContainer(PluginOptions)
private final ProjectLayout projectLayout = project.layout
Expand Down Expand Up @@ -310,6 +312,14 @@ public abstract class GenerateProtoTask extends DefaultTask {
return sourceFiles
}

@SkipWhenEmpty
@PathSensitive(PathSensitivity.RELATIVE)
@IgnoreEmptyDirectories
@InputFiles
FileCollection getDescriptorSetFiles() {
return descriptorSetFiles
}

@InputFiles
@PathSensitive(PathSensitivity.RELATIVE)
FileCollection getIncludeDirs() {
Expand Down Expand Up @@ -513,6 +523,14 @@ public abstract class GenerateProtoTask extends DefaultTask {
sourceFiles.from(files)
}

/**
* Add a collection of proto source files to be compiled.
*/
public void addDescriptorSetFiles(FileCollection files) {
checkCanConfig()
descriptorSetFiles.from(files)
}

/**
* Returns true if the Java source set or Android variant is test related.
*/
Expand Down Expand Up @@ -677,6 +695,23 @@ public abstract class GenerateProtoTask extends DefaultTask {
}
}

if(!descriptorSetFiles.isEmpty()){
StringBuilder descriptorSetInBuilder = new StringBuilder("--descriptor_set_in=")
descriptorSetFiles.eachWithIndex { descriptorSet, index ->
if(!descriptorSet.exists()){
throw new GradleException("DescriptorSet at ${descriptorSet.absolutePath} does not exist")
}

if(index != 0){
descriptorSetInBuilder.append(":")
}

descriptorSetInBuilder.append(descriptorSet.absolutePath)
}

baseCmd += descriptorSetInBuilder
}

List<List<String>> cmds = generateCmds(baseCmd, protoFiles, getCmdLengthLimit())
for (List<String> cmd : cmds) {
compileFiles(cmd)
Expand Down