A fork of the Mastodon Android client with Bluesky/ATProto support.
at main 63 lines 2.2 kB view raw
1// Run: java tools/GenerateLocaleConfig.java 2import java.io.*; 3import java.nio.charset.StandardCharsets; 4import java.util.ArrayList; 5import java.util.stream.*; 6 7public class GenerateLocaleConfig{ 8 public static void main(String[] args) throws IOException{ 9 File dir=new File("../mastodon/src/main/res/"); 10 if(!dir.exists()) 11 dir=new File("mastodon/src/main/res"); 12 if(!dir.exists()) 13 throw new RuntimeException("Please run from project directory (can't find mastodon/src/main/res)"); 14 15 ArrayList<String> locales=new ArrayList<>(), rawLocales=new ArrayList<>(); 16 locales.add("en"); 17 18 for(File file:dir.listFiles()){ 19 String name=file.getName(); 20 if(file.isDirectory() && name.startsWith("values-")){ 21 if(new File(file, "strings.xml").exists()){ 22 locales.add(name.substring(name.indexOf('-')+1).replace("-r", "-")); 23 rawLocales.add(name.substring(name.indexOf('-')+1)); 24 } 25 } 26 } 27 28 locales.sort(String::compareTo); 29 rawLocales.sort(String::compareTo); 30 try(OutputStreamWriter writer=new OutputStreamWriter(new FileOutputStream(new File(dir, "xml/locales_config.xml")), StandardCharsets.UTF_8)){ 31 writer.write(""" 32 <?xml version="1.0" encoding="utf-8"?> 33 <locale-config xmlns:android="http://schemas.android.com/apk/res/android"> 34 """); 35 for(String locale : locales){ 36 writer.write("\t<locale android:name=\""); 37 writer.write(locale); 38 writer.write("\"/>\n"); 39 } 40 writer.write("</locale-config>"); 41 } 42 43 File buildGradle=new File(dir, "../../../build.gradle"); 44 ArrayList<String> buildGradleLines=new ArrayList<>(); 45 try(BufferedReader reader=new BufferedReader(new InputStreamReader(new FileInputStream(buildGradle)))){ 46 String line; 47 while((line=reader.readLine())!=null){ 48 if(line.trim().startsWith("resConfigs")){ 49 line=line.substring(0, line.indexOf('r'))+"resConfigs "; 50 line+=rawLocales.stream().map(l->'"'+l+'"').collect(Collectors.joining(", ")); 51 } 52 buildGradleLines.add(line); 53 } 54 } 55 56 try(OutputStreamWriter writer=new OutputStreamWriter(new FileOutputStream(buildGradle))){ 57 for(String line:buildGradleLines){ 58 writer.write(line); 59 writer.write('\n'); 60 } 61 } 62 } 63}