// Run: java tools/GenerateLocaleConfig.java import java.io.*; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.stream.*; public class GenerateLocaleConfig{ public static void main(String[] args) throws IOException{ File dir=new File("../mastodon/src/main/res/"); if(!dir.exists()) dir=new File("mastodon/src/main/res"); if(!dir.exists()) throw new RuntimeException("Please run from project directory (can't find mastodon/src/main/res)"); ArrayList locales=new ArrayList<>(), rawLocales=new ArrayList<>(); locales.add("en"); for(File file:dir.listFiles()){ String name=file.getName(); if(file.isDirectory() && name.startsWith("values-")){ if(new File(file, "strings.xml").exists()){ locales.add(name.substring(name.indexOf('-')+1).replace("-r", "-")); rawLocales.add(name.substring(name.indexOf('-')+1)); } } } locales.sort(String::compareTo); rawLocales.sort(String::compareTo); try(OutputStreamWriter writer=new OutputStreamWriter(new FileOutputStream(new File(dir, "xml/locales_config.xml")), StandardCharsets.UTF_8)){ writer.write(""" """); for(String locale : locales){ writer.write("\t\n"); } writer.write(""); } File buildGradle=new File(dir, "../../../build.gradle"); ArrayList buildGradleLines=new ArrayList<>(); try(BufferedReader reader=new BufferedReader(new InputStreamReader(new FileInputStream(buildGradle)))){ String line; while((line=reader.readLine())!=null){ if(line.trim().startsWith("resConfigs")){ line=line.substring(0, line.indexOf('r'))+"resConfigs "; line+=rawLocales.stream().map(l->'"'+l+'"').collect(Collectors.joining(", ")); } buildGradleLines.add(line); } } try(OutputStreamWriter writer=new OutputStreamWriter(new FileOutputStream(buildGradle))){ for(String line:buildGradleLines){ writer.write(line); writer.write('\n'); } } } }