package nbtool.term; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; //import nbtool.util.Logger; public class FixProto { public static void main(String[] args) throws Exception { String nbdir = System.getenv("NBITES_DIR"); nbdir += "/src/share/messages/"; System.out.println("at: " + nbdir); File mdir = new File(nbdir); assert(mdir.exists() && mdir.isDirectory()); for (File file : mdir.listFiles()) { if (file.getAbsolutePath().endsWith(".proto")) { System.out.printf("found: %s\n", file.getName()); byte[] bytes = Files.readAllBytes(file.toPath()); String content = new String(bytes, StandardCharsets.UTF_8); //assert(!content.contains("java_")); int stt_i = content.indexOf("package messages;"); int end_i = stt_i + "package messages;".length(); if (stt_i < 0) { throw new Exception(content); } String fileName = file.getName().substring(0, file.getName().length() - ".proto".length()); //Logger.println(fileName); String outerName = String.format("_File_%s", fileName); String start = content.substring(0, end_i); String end = content.substring(end_i); String middle = String.format("\n\noption java_outer_classname = \"%s\";\n" + "option java_multiple_files = true;\n\n", outerName); String final_content = start + middle + end; System.out.println(final_content); Files.write(file.toPath(), final_content.getBytes(StandardCharsets.UTF_8)); } } } }