73 lines
2.7 KiB
Java
73 lines
2.7 KiB
Java
package tools.helptranslation;
|
|
|
|
import tools.utils.ToolTask;
|
|
import tools.utils.ToolsConstants;
|
|
|
|
import java.io.File;
|
|
import java.util.Arrays;
|
|
import java.util.List;
|
|
import java.util.Scanner;
|
|
import java.util.regex.Pattern;
|
|
import java.util.stream.Collectors;
|
|
|
|
/**
|
|
* Verifies the help translations for validity and completeness.
|
|
*/
|
|
public class VerifyHelpTranslations implements ToolTask {
|
|
|
|
private static final Pattern HELP_MESSAGE_PATTERN = Pattern.compile("help_[a-z]{2,7}\\.yml");
|
|
private static final String FOLDER = ToolsConstants.MAIN_RESOURCES_ROOT + "messages/";
|
|
|
|
@Override
|
|
public String getTaskName() {
|
|
return "verifyHelpTranslations";
|
|
}
|
|
|
|
@Override
|
|
public void execute(Scanner scanner) {
|
|
System.out.println("Check specific language file?");
|
|
System.out.println("Enter the language code for a specific file (e.g. 'it' for help_it.yml)");
|
|
System.out.println("Empty line will check all files in the resources messages folder (default)");
|
|
|
|
String language = scanner.nextLine();
|
|
if (language.isEmpty()) {
|
|
getHelpTranslations().forEach(this::processFile);
|
|
} else {
|
|
processFile(new File(FOLDER, "help_" + language + ".yml"));
|
|
}
|
|
}
|
|
|
|
private void processFile(File file) {
|
|
System.out.println("Checking '" + file.getName() + "'");
|
|
HelpTranslationVerifier verifier = new HelpTranslationVerifier(file);
|
|
|
|
// Check and output errors
|
|
if (!verifier.getMissingSections().isEmpty()) {
|
|
System.out.println("Missing sections: " + String.join(", ", verifier.getMissingSections()));
|
|
}
|
|
if (!verifier.getUnknownSections().isEmpty()) {
|
|
System.out.println("Unknown sections: " + String.join(", ", verifier.getUnknownSections()));
|
|
}
|
|
if (!verifier.getMissingCommands().isEmpty()) {
|
|
System.out.println("Missing command entries: " + String.join(", ", verifier.getMissingCommands()));
|
|
}
|
|
if (!verifier.getUnknownCommands().isEmpty()) {
|
|
System.out.println("Unknown command entries: " + String.join(", ", verifier.getUnknownCommands()));
|
|
}
|
|
}
|
|
|
|
private static List<File> getHelpTranslations() {
|
|
File[] files = new File(FOLDER).listFiles();
|
|
if (files == null) {
|
|
throw new IllegalStateException("Could not get files from '" + FOLDER + "'");
|
|
}
|
|
List<File> helpFiles = Arrays.stream(files)
|
|
.filter(file -> HELP_MESSAGE_PATTERN.matcher(file.getName()).matches())
|
|
.collect(Collectors.toList());
|
|
if (helpFiles.isEmpty()) {
|
|
throw new IllegalStateException("Could not get any matching files!");
|
|
}
|
|
return helpFiles;
|
|
}
|
|
}
|