From de02138e8dd7ab0edf49ad6f297ff2af4aef3552 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Fri, 23 Sep 2022 11:49:27 +0200 Subject: [PATCH] Add plugin.yml discovery by traversal --- src/de/steamwar/linkage/LinkageProcessor.java | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/de/steamwar/linkage/LinkageProcessor.java b/src/de/steamwar/linkage/LinkageProcessor.java index 13670de..35b5a6a 100644 --- a/src/de/steamwar/linkage/LinkageProcessor.java +++ b/src/de/steamwar/linkage/LinkageProcessor.java @@ -38,6 +38,8 @@ import javax.tools.Diagnostic; import java.io.*; import java.io.Writer; import java.lang.annotation.Annotation; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.*; import java.util.function.Consumer; import java.util.stream.Collectors; @@ -88,22 +90,23 @@ public class LinkageProcessor extends AbstractProcessor { mainClass(); } + @SneakyThrows private void mainClass() { File file = new File(System.getProperty("user.dir")); - String subModuleName = file.getName(); - if (subModuleName.contains(".")) subModuleName = subModuleName.substring(0, subModuleName.indexOf('.')); - - Optional main = getMainName(new File(file, "src/plugin.yml")); - if (!main.isPresent()) main = getMainName(new File(file, "src/main/resources/plugin.yml")); - if (!main.isPresent()) main = getMainName(new File(file, subModuleName + "_Core/src/plugin.yml")); - if (!main.isPresent()) main = getMainName(new File(file, subModuleName + "_Core/src/main/resources/plugin.yml")); - if (!main.isPresent()) main = getMainName(new File(file, subModuleName + "_Main/src/plugin.yml")); - if (!main.isPresent()) main = getMainName(new File(file, subModuleName + "_Main/src/main/resources/plugin.yml")); - if (!main.isPresent()) { + Optional pluginYMLFile = Files.walk(file.toPath()) + .map(Path::toFile) + .filter(f -> f.getName().equals("plugin.yml")) + .findFirst(); + if (!pluginYMLFile.isPresent()) { messager.printMessage(Diagnostic.Kind.ERROR, "Could not find plugin.yml"); return; } - pluginMain = main.get(); + Optional mainName = getMainName(pluginYMLFile.get()); + if (!mainName.isPresent()) { + messager.printMessage(Diagnostic.Kind.ERROR, "Could not find main class in plugin.yml"); + return; + } + pluginMain = mainName.get(); } @SneakyThrows