improved a little BuildingIssue

This commit is contained in:
bQUARKz 2026-02-24 18:50:51 +00:00
parent 09d0ce5f5a
commit 9373996f86
Signed by: bquarkz
SSH Key Fingerprint: SHA256:Z7dgqoglWwoK6j6u4QC87OveEq74WOhFN+gitsxtkf8
4 changed files with 27 additions and 15 deletions

View File

@ -2,6 +2,7 @@ package p.studio.compiler.messages;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
import p.studio.utilities.logs.LogAggregator;
@Builder @Builder
@Getter @Getter
@ -9,4 +10,16 @@ public class BuildingIssue {
private final boolean error; private final boolean error;
private final String message; private final String message;
private final Throwable exception; private final Throwable exception;
public void print(LogAggregator logs) {
if (error) {
if (exception != null) {
logs.error(message, exception);
} else {
logs.error(message);
}
} else {
logs.warn(message);
}
}
} }

View File

@ -6,6 +6,8 @@ import java.util.ArrayList;
import java.util.function.Consumer; import java.util.function.Consumer;
public class BuildingIssues extends ReadOnlyCollection<BuildingIssue> { public class BuildingIssues extends ReadOnlyCollection<BuildingIssue> {
private boolean hasErrors = false;
protected BuildingIssues() { protected BuildingIssues() {
super(new ArrayList<>()); super(new ArrayList<>());
} }
@ -17,12 +19,19 @@ public class BuildingIssues extends ReadOnlyCollection<BuildingIssue> {
public BuildingIssues add(final Consumer<BuildingIssue.BuildingIssueBuilder> consumer) { public BuildingIssues add(final Consumer<BuildingIssue.BuildingIssueBuilder> consumer) {
final var builder = BuildingIssue.builder(); final var builder = BuildingIssue.builder();
consumer.accept(builder); consumer.accept(builder);
collection.add(builder.build()); final var issue = builder.build();
hasErrors |= issue.isError();
collection.add(issue);
return this; return this;
} }
public BuildingIssues addAll(final BuildingIssues issues) { public BuildingIssues add(final BuildingIssues issues) {
hasErrors |= issues.hasErrors();
collection.addAll(issues.collection); collection.addAll(issues.collection);
return this; return this;
} }
public boolean hasErrors() {
return hasErrors;
}
} }

View File

@ -39,18 +39,8 @@ public final class DependencyService {
for (final var dependencyPhase : phases) { for (final var dependencyPhase : phases) {
final var issues = dependencyPhase.run(ctx); final var issues = dependencyPhase.run(ctx);
var error = false; issues.forEach(issue -> issue.print(logs.using(log)));
if (ReadOnlyCollection.isNotEmpty(issues)) { if (issues.hasErrors()) {
for (final var issue : issues) {
if (issue.isError()) {
error = true;
logs.using(log).error(issue.getMessage(), issue.getException());
continue;
}
logs.using(log).warn(issue.getMessage());
}
}
if (error) {
throw new BuildException("[DEPS]: issues found during dependency phase: " + dependencyPhase.getClass().getSimpleName()); throw new BuildException("[DEPS]: issues found during dependency phase: " + dependencyPhase.getClass().getSimpleName());
} }
} }

View File

@ -81,7 +81,7 @@ public final class WireProjectsPhase implements DependencyPhase {
} }
if (sourceRootIssues.size() == projectInfo.getFrontendSpec().getSourceRoots().size()) { if (sourceRootIssues.size() == projectInfo.getFrontendSpec().getSourceRoots().size()) {
// no source roots were found at all // no source roots were found at all
issues.addAll(sourceRootIssues); issues.add(sourceRootIssues);
} }
return ProjectDescriptor return ProjectDescriptor