Simplify LinkageProcessor

This commit is contained in:
2024-08-05 15:22:37 +02:00
parent f8c4e3127b
commit ad9b856cf3
2 changed files with 13 additions and 23 deletions
@@ -28,6 +28,7 @@ version = ""
tasks.compileJava {
options.encoding = "UTF-8"
options.isWarnings = false
options.compilerArgs.add("-AprojectDir=$projectDir")
}
java {
@@ -36,22 +36,20 @@ import javax.lang.model.element.VariableElement;
import javax.lang.model.type.DeclaredType;
import javax.lang.model.type.TypeMirror;
import javax.tools.Diagnostic;
import javax.tools.FileObject;
import javax.tools.StandardLocation;
import java.io.*;
import java.lang.annotation.Annotation;
import java.net.URI;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.*;
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@SupportedAnnotationTypes("de.steamwar.linkage.Linked")
public class LinkageProcessor extends AbstractProcessor {
private File projectDir;
private static Context context;
@Getter
@@ -76,7 +74,16 @@ public class LinkageProcessor extends AbstractProcessor {
super.init(processingEnv);
messager = processingEnv.getMessager();
className = "LinkageUtils";
projectDir = new File(processingEnv.getOptions().get("projectDir"));
mainClass(projectDir);
disabledFeatures();
String name = projectDir.getName();
if (name.contains("_")) {
name = name.substring(0, name.indexOf("_"));
}
this.name = name.replaceAll("[^a-zA-Z]", "").toLowerCase();
}
@SneakyThrows
@@ -115,31 +122,13 @@ public class LinkageProcessor extends AbstractProcessor {
.forEach(disabledFeatures::add);
}
private File getFile(File file, Predicate<File> predicate) {
while (file != null) {
if (predicate.test(file)) return file;
file = file.getParentFile();
}
return null;
}
@SneakyThrows
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
if (processed) return false;
processed = true;
URI uri = processingEnv.getFiler().createResource(StandardLocation.SOURCE_OUTPUT, "", ".ignore").toUri();
File file = getFile(new File(uri.toString().substring(7)), f -> {
return !f.getName().contains("_") && new File(f, "build.gradle.kts").exists();
});
name = file.getName().replaceAll("[^a-zA-Z]", "").toLowerCase();
mainClass(file);
FileObject fileObject = processingEnv.getFiler().createSourceFile("de.steamwar." + name + ".linkage.LinkageUtils");
Writer writer = fileObject.openWriter();
Writer writer = processingEnv.getFiler().createSourceFile("de.steamwar." + name + ".linkage.LinkageUtils").openWriter();
BuildPlan buildPlan = new BuildPlan("de.steamwar." + name + ".linkage", className);
Set<TypeElement> disabledElements = new HashSet<>();