use of com.google.startupos.tools.build_file_generator.Protos.BuildFile.ProtoLibrary in project startup-os by google.
the class BuildFileGenerator method generateBuildFile.
private BuildFile generateBuildFile(String packagePath, List<ProtoFile> wholeProjectProtoFiles, List<ThirdPartyDep> thirdPartyDeps, HttpArchiveDepsList httpArchiveDepsList, Map<String, String> internalProjectDeps) throws IOException {
BuildFile.Builder buildFile = BuildFile.newBuilder();
List<String> protoFilenames = getFilesByExtension(packagePath, ".proto");
List<ProtoFile> protoFiles = new ArrayList<>();
for (String protoFileName : protoFilenames) {
ProtoFile protoFile = protoFileAnalyzer.getProtoFile(fileUtils.joinPaths(packagePath, protoFileName));
protoFiles.add(protoFile);
ProtoLibrary protoLibrary = getProtoLibrary(protoFile);
buildFile.addProtoLibrary(protoLibrary);
buildFile.addJavaProtoLibrary(getJavaProtoLibrary(protoLibrary.getName()));
if (!protoFile.getServicesList().isEmpty()) {
buildFile.addJavaGrpcLibrary(getJavaGrpcLibrary(protoFile));
LoadExtensionStatement javaGrpcLibrary = getLoadExtensionStatement(JAVA_GRPC_LIBRARY_BZL_FILE_PATH, JAVA_GRPC_LIBRARY_SYMBOL);
if (!buildFile.getExtensionList().contains(javaGrpcLibrary)) {
buildFile.addExtension(javaGrpcLibrary);
}
}
}
List<String> javaClasses = getFilesByExtension(packagePath, ".java");
if (!javaClasses.isEmpty()) {
buildFile.addExtension(getLoadExtensionStatement(CHECKSTYLE_BZL_FILE_PATH, CHECKSTYLE_SYMBOL));
for (String javaClassName : javaClasses) {
JavaClass javaClass = javaClassAnalyzer.getJavaClass(fileUtils.joinPaths(packagePath, javaClassName));
String targetName;
if (javaClass.getHasMainMethod()) {
JavaBinary javaBinary = getJavaBinary(javaClass, thirdPartyDeps, httpArchiveDepsList, protoFiles, wholeProjectProtoFiles, internalProjectDeps);
targetName = javaBinary.getName();
buildFile.addJavaBinary(javaBinary);
} else if (javaClass.getIsTestClass()) {
JavaTest javaTest = getJavaTest(javaClass, packagePath, thirdPartyDeps, httpArchiveDepsList, protoFiles, wholeProjectProtoFiles, internalProjectDeps);
targetName = javaTest.getName();
buildFile.addJavaTest(javaTest);
} else {
JavaLibrary javaLibrary = getJavaLibrary(javaClass, thirdPartyDeps, httpArchiveDepsList, protoFiles, wholeProjectProtoFiles, internalProjectDeps);
targetName = javaLibrary.getName();
buildFile.addJavaLibrary(javaLibrary);
}
buildFile.addCheckstyleTest(getCheckstyleTest(targetName));
}
}
return buildFile.build();
}
use of com.google.startupos.tools.build_file_generator.Protos.BuildFile.ProtoLibrary in project startup-os by google.
the class BuildFileWriter method getProtoLibraries.
private String getProtoLibraries(List<ProtoLibrary> protoLibraries) {
StringBuilder result = new StringBuilder();
for (ProtoLibrary protoLibrary : protoLibraries) {
result.append("proto_library(").append(System.lineSeparator()).append(String.format(" name = \"%s\",", protoLibrary.getName())).append(System.lineSeparator());
List<String> srcs = protoLibrary.getSrcsList();
if (!srcs.isEmpty()) {
result.append(" srcs = [");
if (srcs.size() == 1) {
result.append(String.format("\"%s\"],", srcs.get(0) + ".proto"));
} else {
result.append(System.lineSeparator());
for (String src : srcs) {
result.append(String.format(" \"%s\",", src + ".proto"));
result.append(System.lineSeparator());
}
result.append(" ],");
}
}
result.append(getArgument("deps", protoLibrary.getDepsList())).append(System.lineSeparator()).append(")").append(System.lineSeparator()).append(System.lineSeparator());
}
return result.toString();
}
Aggregations