From e8afc8ea0d5dee4ba707f96e183afdc599cf6bb6 Mon Sep 17 00:00:00 2001 From: bQUARKz Date: Mon, 23 Feb 2026 10:26:41 +0000 Subject: [PATCH] prepare first attempt on the builder pipeline --- .../p/studio/compiler/PBSDefinitions.java | 2 +- .../prometeu-build-pipeline/build.gradle.kts | 2 + .../messages/BuilderPipelineConfig.java | 10 ++++ .../models/BuilderPipelineContext.java | 27 +++++++++ .../workspaces/BuilderPipelineService.java | 55 +++++++++++++++++++ .../compiler/workspaces/PipelineStage.java | 9 +++ .../workspaces/stages/DepsPipelineStage.java | 37 +++++++++++++ .../compiler/exceptions/BuildException.java | 0 .../compiler/messages}/BuildingIssue.java | 2 +- .../{model => models}/FrontendSpec.java | 2 +- .../compiler/messages/DependencyConfig.java | 9 +++ .../model/DependencyPipelineConfig.java | 10 ---- .../{model => models}/BuildStack.java | 4 +- .../DependencyContext.java} | 16 +++--- .../{model => models}/LoadedFile.java | 2 +- .../{model => models}/LoadedSources.java | 2 +- .../{model => models}/ProjectDescriptor.java | 3 +- .../{workspaces => models}/ProjectInfo.java | 5 +- .../{workspaces => models}/ProjectNode.java | 4 +- .../{model => models}/ProjectSources.java | 2 +- .../{model => models}/PrometeuLock.java | 2 +- .../{model => models}/PrometeuManifest.java | 2 +- .../{model => models}/ResolvedGraph.java | 2 +- .../{model => models}/ResolvedWorkspace.java | 2 +- .../{model => models}/SourcePolicy.java | 2 +- .../compiler/workspaces/DependencyPhase.java | 9 +++ .../workspaces/DependencyPipelinePhase.java | 8 --- ...ineService.java => DependencyService.java} | 27 ++++----- .../workspaces/phases/DiscoverPhase.java | 14 ++--- .../workspaces/phases/LocalizePhase.java | 7 ++- .../workspaces/phases/MaterializePhase.java | 8 +-- .../workspaces/phases/PolicyPhase.java | 10 ++-- .../compiler/workspaces/phases/SeedPhase.java | 10 ++-- .../workspaces/phases/StackPhase.java | 12 ++-- .../workspaces/phases/ValidatePhase.java | 10 ++-- ...ceTest.java => DependencyServiceTest.java} | 10 ++-- .../workspaces/DiscoverPhaseTest.java | 7 ++- .../workspaces/LocalizePhaseTest.java | 7 ++- .../workspaces/MaterializePhaseTest.java | 7 ++- .../compiler/workspaces/SeedPhaseTest.java | 7 ++- .../compiler/workspaces/StackPhaseTest.java | 7 ++- .../ValidateAndPolicyPhasesTest.java | 11 ++-- .../compiler/FrontendRegistryService.java | 2 +- prometeu-studio/build.gradle.kts | 2 +- .../workspaces/builder/BuilderWorkspace.java | 16 ++---- test-projects/dep1/prometeu.json | 3 - test-projects/dep2/prometeu.json | 3 - 47 files changed, 271 insertions(+), 139 deletions(-) create mode 100644 prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/messages/BuilderPipelineConfig.java create mode 100644 prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/models/BuilderPipelineContext.java create mode 100644 prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/workspaces/BuilderPipelineService.java create mode 100644 prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/workspaces/PipelineStage.java create mode 100644 prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/workspaces/stages/DepsPipelineStage.java rename prometeu-compiler/{prometeu-deps => prometeu-compiler-core}/src/main/java/p/studio/compiler/exceptions/BuildException.java (100%) rename prometeu-compiler/{prometeu-deps/src/main/java/p/studio/compiler/model => prometeu-compiler-core/src/main/java/p/studio/compiler/messages}/BuildingIssue.java (84%) rename prometeu-compiler/prometeu-compiler-core/src/main/java/p/studio/compiler/{model => models}/FrontendSpec.java (89%) create mode 100644 prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/messages/DependencyConfig.java delete mode 100644 prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/DependencyPipelineConfig.java rename prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/{model => models}/BuildStack.java (75%) rename prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/{workspaces/DependencyPipelineContext.java => models/DependencyContext.java} (84%) rename prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/{model => models}/LoadedFile.java (61%) rename prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/{model => models}/LoadedSources.java (91%) rename prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/{model => models}/ProjectDescriptor.java (90%) rename prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/{workspaces => models}/ProjectInfo.java (68%) rename prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/{workspaces => models}/ProjectNode.java (86%) rename prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/{model => models}/ProjectSources.java (86%) rename prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/{model => models}/PrometeuLock.java (97%) rename prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/{model => models}/PrometeuManifest.java (98%) rename prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/{model => models}/ResolvedGraph.java (91%) rename prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/{model => models}/ResolvedWorkspace.java (83%) rename prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/{model => models}/SourcePolicy.java (80%) create mode 100644 prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/DependencyPhase.java delete mode 100644 prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/DependencyPipelinePhase.java rename prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/{DependencyPipelineService.java => DependencyService.java} (59%) rename prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/{DependencyPipelineServiceTest.java => DependencyServiceTest.java} (90%) diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/PBSDefinitions.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/PBSDefinitions.java index 413361ef..2914eec5 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/PBSDefinitions.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/PBSDefinitions.java @@ -1,6 +1,6 @@ package p.studio.compiler; -import p.studio.compiler.model.FrontendSpec; +import p.studio.compiler.models.FrontendSpec; import p.studio.utilities.structures.ReadOnlySet; public class PBSDefinitions { diff --git a/prometeu-compiler/prometeu-build-pipeline/build.gradle.kts b/prometeu-compiler/prometeu-build-pipeline/build.gradle.kts index 8874f7a8..e723a039 100644 --- a/prometeu-compiler/prometeu-build-pipeline/build.gradle.kts +++ b/prometeu-compiler/prometeu-build-pipeline/build.gradle.kts @@ -4,4 +4,6 @@ plugins { dependencies { api(project(":prometeu-infra")) + implementation(project(":prometeu-compiler:prometeu-deps")) + implementation(project(":prometeu-compiler:prometeu-compiler-core")) } \ No newline at end of file diff --git a/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/messages/BuilderPipelineConfig.java b/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/messages/BuilderPipelineConfig.java new file mode 100644 index 00000000..b3374a12 --- /dev/null +++ b/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/messages/BuilderPipelineConfig.java @@ -0,0 +1,10 @@ +package p.studio.compiler.messages; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class BuilderPipelineConfig { + private String rootProjectPath; +} diff --git a/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/models/BuilderPipelineContext.java b/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/models/BuilderPipelineContext.java new file mode 100644 index 00000000..eebce034 --- /dev/null +++ b/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/models/BuilderPipelineContext.java @@ -0,0 +1,27 @@ +package p.studio.compiler.models; + +import lombok.Getter; +import lombok.Setter; +import p.studio.compiler.messages.BuilderPipelineConfig; +import p.studio.utilities.logs.LogAggregator; + +public class BuilderPipelineContext { + @Getter + private final BuilderPipelineConfig config; + @Getter + private final LogAggregator logs; + @Getter + @Setter + private ResolvedWorkspace resolvedWorkspace; + + private BuilderPipelineContext( + final BuilderPipelineConfig config, + final LogAggregator logs) { + this.config = config; + this.logs = logs; + } + + public static BuilderPipelineContext seed(BuilderPipelineConfig config, LogAggregator logAggregator) { + return new BuilderPipelineContext(config, logAggregator); + } +} diff --git a/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/workspaces/BuilderPipelineService.java b/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/workspaces/BuilderPipelineService.java new file mode 100644 index 00000000..2f56bc69 --- /dev/null +++ b/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/workspaces/BuilderPipelineService.java @@ -0,0 +1,55 @@ +package p.studio.compiler.workspaces; + +import lombok.extern.slf4j.Slf4j; +import p.studio.compiler.exceptions.BuildException; +import p.studio.compiler.messages.BuilderPipelineConfig; +import p.studio.compiler.models.BuilderPipelineContext; +import p.studio.compiler.workspaces.stages.DepsPipelineStage; +import p.studio.utilities.logs.LogAggregator; +import p.studio.utilities.structures.ReadOnlyCollection; + +import java.util.List; + +@Slf4j +public class BuilderPipelineService { + public final static BuilderPipelineService INSTANCE; + + static { + final var stages = List.of( + new DepsPipelineStage() + ); + INSTANCE = new BuilderPipelineService(stages); + } + + private final List stages; + + BuilderPipelineService(List stages) { + this.stages = stages; + } + + public void run( + final BuilderPipelineConfig config, + final LogAggregator logs) { + final var ctx = BuilderPipelineContext.seed(config, logs); + + for (final var builderPipelineStage : stages) { + final var issues = builderPipelineStage.run(ctx); + var error = false; + if (ReadOnlyCollection.isNotEmpty(issues)) { + 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("issues found on pipeline stage: " + builderPipelineStage.getClass().getSimpleName()); + } + } + + logs.using(log).info("builder pipeline completed successfully"); + } +} diff --git a/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/workspaces/PipelineStage.java b/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/workspaces/PipelineStage.java new file mode 100644 index 00000000..842805d3 --- /dev/null +++ b/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/workspaces/PipelineStage.java @@ -0,0 +1,9 @@ +package p.studio.compiler.workspaces; + +import p.studio.compiler.messages.BuildingIssue; +import p.studio.compiler.models.BuilderPipelineContext; +import p.studio.utilities.structures.ReadOnlyCollection; + +public interface PipelineStage { + ReadOnlyCollection run(BuilderPipelineContext ctx); +} diff --git a/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/workspaces/stages/DepsPipelineStage.java b/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/workspaces/stages/DepsPipelineStage.java new file mode 100644 index 00000000..d3cc222a --- /dev/null +++ b/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/workspaces/stages/DepsPipelineStage.java @@ -0,0 +1,37 @@ +package p.studio.compiler.workspaces.stages; + +import p.studio.compiler.messages.BuildingIssue; +import p.studio.compiler.messages.DependencyConfig; +import p.studio.compiler.models.BuilderPipelineContext; +import p.studio.compiler.workspaces.DependencyService; +import p.studio.compiler.workspaces.PipelineStage; +import p.studio.utilities.structures.ReadOnlyCollection; + +import java.io.IOException; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; + +public class DepsPipelineStage implements PipelineStage { + @Override + public ReadOnlyCollection run(final BuilderPipelineContext ctx) { + final Path rootCanonPath; + try { + rootCanonPath = Paths.get(ctx.getConfig().getRootProjectPath()).toRealPath(); + } catch (IOException e) { + return ReadOnlyCollection.wrap(List.of(BuildingIssue + .builder() + .error(true) + .message("[DEPS]: root directory no found: " + ctx.getConfig().getRootProjectPath()) + .build())); + } + final var cfg = new DependencyConfig(false, rootCanonPath); + final var resolvedWorkspace = DependencyService.INSTANCE.run(cfg, ctx.getLogs()); + for (final var pId : resolvedWorkspace.stack().projects()) { + final var pd = resolvedWorkspace.graph().projects().get(pId.getIndex()); + ctx.getLogs().info("Project [ " + pd.getName() + " ] read"); + } + ctx.setResolvedWorkspace(resolvedWorkspace); + return ReadOnlyCollection.empty(); + } +} diff --git a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/exceptions/BuildException.java b/prometeu-compiler/prometeu-compiler-core/src/main/java/p/studio/compiler/exceptions/BuildException.java similarity index 100% rename from prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/exceptions/BuildException.java rename to prometeu-compiler/prometeu-compiler-core/src/main/java/p/studio/compiler/exceptions/BuildException.java diff --git a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/BuildingIssue.java b/prometeu-compiler/prometeu-compiler-core/src/main/java/p/studio/compiler/messages/BuildingIssue.java similarity index 84% rename from prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/BuildingIssue.java rename to prometeu-compiler/prometeu-compiler-core/src/main/java/p/studio/compiler/messages/BuildingIssue.java index bfa8be15..673c5595 100644 --- a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/BuildingIssue.java +++ b/prometeu-compiler/prometeu-compiler-core/src/main/java/p/studio/compiler/messages/BuildingIssue.java @@ -1,4 +1,4 @@ -package p.studio.compiler.model; +package p.studio.compiler.messages; import lombok.Builder; import lombok.Getter; diff --git a/prometeu-compiler/prometeu-compiler-core/src/main/java/p/studio/compiler/model/FrontendSpec.java b/prometeu-compiler/prometeu-compiler-core/src/main/java/p/studio/compiler/models/FrontendSpec.java similarity index 89% rename from prometeu-compiler/prometeu-compiler-core/src/main/java/p/studio/compiler/model/FrontendSpec.java rename to prometeu-compiler/prometeu-compiler-core/src/main/java/p/studio/compiler/models/FrontendSpec.java index ca8630d9..23c286f3 100644 --- a/prometeu-compiler/prometeu-compiler-core/src/main/java/p/studio/compiler/model/FrontendSpec.java +++ b/prometeu-compiler/prometeu-compiler-core/src/main/java/p/studio/compiler/models/FrontendSpec.java @@ -1,4 +1,4 @@ -package p.studio.compiler.model; +package p.studio.compiler.models; import lombok.Builder; import lombok.Getter; diff --git a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/messages/DependencyConfig.java b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/messages/DependencyConfig.java new file mode 100644 index 00000000..64860d68 --- /dev/null +++ b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/messages/DependencyConfig.java @@ -0,0 +1,9 @@ +package p.studio.compiler.messages; + +import java.nio.file.Path; +import java.util.List; + +public record DependencyConfig( + boolean explain, + Path cacheDir) { +} diff --git a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/DependencyPipelineConfig.java b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/DependencyPipelineConfig.java deleted file mode 100644 index 9cf3eb58..00000000 --- a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/DependencyPipelineConfig.java +++ /dev/null @@ -1,10 +0,0 @@ -package p.studio.compiler.model; - -import java.nio.file.Path; -import java.util.List; - -public record DependencyPipelineConfig( - boolean explain, - Path cacheDir, - List registryDirs) { -} diff --git a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/BuildStack.java b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/BuildStack.java similarity index 75% rename from prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/BuildStack.java rename to prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/BuildStack.java index cb502dd2..cc585360 100644 --- a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/BuildStack.java +++ b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/BuildStack.java @@ -1,9 +1,7 @@ -package p.studio.compiler.model; +package p.studio.compiler.models; import p.studio.compiler.source.identifiers.ProjectId; import p.studio.utilities.structures.ReadOnlyList; -import java.util.List; - public record BuildStack(ReadOnlyList projects) { } diff --git a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/DependencyPipelineContext.java b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/DependencyContext.java similarity index 84% rename from prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/DependencyPipelineContext.java rename to prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/DependencyContext.java index f6f1f4b1..9f66a582 100644 --- a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/DependencyPipelineContext.java +++ b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/DependencyContext.java @@ -1,6 +1,6 @@ -package p.studio.compiler.workspaces; +package p.studio.compiler.models; -import p.studio.compiler.model.*; +import p.studio.compiler.messages.DependencyConfig; import p.studio.compiler.source.identifiers.ProjectId; import p.studio.compiler.exceptions.BuildException; import p.studio.utilities.structures.ReadOnlyList; @@ -8,8 +8,8 @@ import p.studio.utilities.structures.ReadOnlyList; import java.nio.file.Path; import java.util.*; -public final class DependencyPipelineContext { - private final DependencyPipelineConfig config; +public final class DependencyContext { + private final DependencyConfig config; // Internal state mirroring Rust ResolverState public Path mainProjectRootPathCanon; @@ -27,15 +27,15 @@ public final class DependencyPipelineContext { public ProjectId root; public BuildStack stack; - private DependencyPipelineContext(DependencyPipelineConfig config) { + private DependencyContext(DependencyConfig config) { this.config = config; } - public static DependencyPipelineContext seed(DependencyPipelineConfig config) { - return new DependencyPipelineContext(config); + public static DependencyContext seed(DependencyConfig config) { + return new DependencyContext(config); } - public DependencyPipelineConfig config() { + public DependencyConfig config() { return config; } diff --git a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/LoadedFile.java b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/LoadedFile.java similarity index 61% rename from prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/LoadedFile.java rename to prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/LoadedFile.java index ae8bb513..00426804 100644 --- a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/LoadedFile.java +++ b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/LoadedFile.java @@ -1,4 +1,4 @@ -package p.studio.compiler.model; +package p.studio.compiler.models; public record LoadedFile(String uri, String text) { } diff --git a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/LoadedSources.java b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/LoadedSources.java similarity index 91% rename from prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/LoadedSources.java rename to prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/LoadedSources.java index 750a9ad2..dc125b01 100644 --- a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/LoadedSources.java +++ b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/LoadedSources.java @@ -1,4 +1,4 @@ -package p.studio.compiler.model; +package p.studio.compiler.models; import java.util.List; diff --git a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/ProjectDescriptor.java b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/ProjectDescriptor.java similarity index 90% rename from prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/ProjectDescriptor.java rename to prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/ProjectDescriptor.java index 6696174c..7071b7f9 100644 --- a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/ProjectDescriptor.java +++ b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/ProjectDescriptor.java @@ -1,4 +1,4 @@ -package p.studio.compiler.model; +package p.studio.compiler.models; import lombok.Builder; import lombok.Getter; @@ -6,7 +6,6 @@ import p.studio.compiler.source.identifiers.ProjectId; import p.studio.utilities.structures.ReadOnlyList; import java.nio.file.Path; -import java.util.List; @Builder @Getter diff --git a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/ProjectInfo.java b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/ProjectInfo.java similarity index 68% rename from prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/ProjectInfo.java rename to prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/ProjectInfo.java index 982973ea..5a9e6639 100644 --- a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/ProjectInfo.java +++ b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/ProjectInfo.java @@ -1,9 +1,8 @@ -package p.studio.compiler.workspaces; +package p.studio.compiler.models; import lombok.Builder; import lombok.Getter; -import p.studio.compiler.model.FrontendSpec; -import p.studio.compiler.model.PrometeuManifest; + import java.nio.file.Path; @Builder diff --git a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/ProjectNode.java b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/ProjectNode.java similarity index 86% rename from prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/ProjectNode.java rename to prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/ProjectNode.java index 35df4b53..abebccdc 100644 --- a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/ProjectNode.java +++ b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/ProjectNode.java @@ -1,9 +1,9 @@ -package p.studio.compiler.workspaces; +package p.studio.compiler.models; import lombok.Builder; import lombok.Getter; -import p.studio.compiler.model.FrontendSpec; import p.studio.compiler.source.identifiers.ProjectId; +import p.studio.compiler.workspaces.DependencyReference; import p.studio.utilities.structures.ReadOnlyList; import java.nio.file.Path; diff --git a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/ProjectSources.java b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/ProjectSources.java similarity index 86% rename from prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/ProjectSources.java rename to prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/ProjectSources.java index 821876d3..545c1e6a 100644 --- a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/ProjectSources.java +++ b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/ProjectSources.java @@ -1,4 +1,4 @@ -package p.studio.compiler.model; +package p.studio.compiler.models; import p.studio.compiler.source.identifiers.ProjectId; import p.studio.utilities.structures.ReadOnlyList; diff --git a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/PrometeuLock.java b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/PrometeuLock.java similarity index 97% rename from prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/PrometeuLock.java rename to prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/PrometeuLock.java index df6c3713..59837279 100644 --- a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/PrometeuLock.java +++ b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/PrometeuLock.java @@ -1,4 +1,4 @@ -package p.studio.compiler.model; +package p.studio.compiler.models; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonSubTypes; diff --git a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/PrometeuManifest.java b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/PrometeuManifest.java similarity index 98% rename from prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/PrometeuManifest.java rename to prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/PrometeuManifest.java index bfcdb053..f1fac42d 100644 --- a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/PrometeuManifest.java +++ b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/PrometeuManifest.java @@ -1,4 +1,4 @@ -package p.studio.compiler.model; +package p.studio.compiler.models; import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.JsonNode; diff --git a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/ResolvedGraph.java b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/ResolvedGraph.java similarity index 91% rename from prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/ResolvedGraph.java rename to prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/ResolvedGraph.java index 25994160..c056667a 100644 --- a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/ResolvedGraph.java +++ b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/ResolvedGraph.java @@ -1,4 +1,4 @@ -package p.studio.compiler.model; +package p.studio.compiler.models; import p.studio.compiler.source.identifiers.ProjectId; import p.studio.utilities.structures.ReadOnlyList; diff --git a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/ResolvedWorkspace.java b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/ResolvedWorkspace.java similarity index 83% rename from prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/ResolvedWorkspace.java rename to prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/ResolvedWorkspace.java index 427691b0..7f50c2f9 100644 --- a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/ResolvedWorkspace.java +++ b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/ResolvedWorkspace.java @@ -1,4 +1,4 @@ -package p.studio.compiler.model; +package p.studio.compiler.models; import p.studio.compiler.source.identifiers.ProjectId; diff --git a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/SourcePolicy.java b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/SourcePolicy.java similarity index 80% rename from prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/SourcePolicy.java rename to prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/SourcePolicy.java index ee9bf918..664dc699 100644 --- a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/model/SourcePolicy.java +++ b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/models/SourcePolicy.java @@ -1,4 +1,4 @@ -package p.studio.compiler.model; +package p.studio.compiler.models; import p.studio.utilities.structures.ReadOnlyList; diff --git a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/DependencyPhase.java b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/DependencyPhase.java new file mode 100644 index 00000000..2c003133 --- /dev/null +++ b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/DependencyPhase.java @@ -0,0 +1,9 @@ +package p.studio.compiler.workspaces; + +import p.studio.compiler.messages.BuildingIssue; +import p.studio.compiler.models.DependencyContext; +import p.studio.utilities.structures.ReadOnlyCollection; + +public interface DependencyPhase { + ReadOnlyCollection run(DependencyContext state); +} diff --git a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/DependencyPipelinePhase.java b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/DependencyPipelinePhase.java deleted file mode 100644 index d14ce66e..00000000 --- a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/DependencyPipelinePhase.java +++ /dev/null @@ -1,8 +0,0 @@ -package p.studio.compiler.workspaces; - -import p.studio.compiler.model.BuildingIssue; -import p.studio.utilities.structures.ReadOnlyCollection; - -public interface DependencyPipelinePhase { - ReadOnlyCollection run(DependencyPipelineContext state); -} diff --git a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/DependencyPipelineService.java b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/DependencyService.java similarity index 59% rename from prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/DependencyPipelineService.java rename to prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/DependencyService.java index cb4d037e..e6e0dc88 100644 --- a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/DependencyPipelineService.java +++ b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/DependencyService.java @@ -2,8 +2,9 @@ package p.studio.compiler.workspaces; import lombok.extern.slf4j.Slf4j; import p.studio.compiler.exceptions.BuildException; -import p.studio.compiler.model.DependencyPipelineConfig; -import p.studio.compiler.model.ResolvedWorkspace; +import p.studio.compiler.messages.DependencyConfig; +import p.studio.compiler.models.DependencyContext; +import p.studio.compiler.models.ResolvedWorkspace; import p.studio.compiler.workspaces.phases.*; import p.studio.utilities.logs.LogAggregator; import p.studio.utilities.structures.ReadOnlyCollection; @@ -11,8 +12,8 @@ import p.studio.utilities.structures.ReadOnlyCollection; import java.util.List; @Slf4j -public final class DependencyPipelineService { - public final static DependencyPipelineService INSTANCE; +public final class DependencyService { + public final static DependencyService INSTANCE; static { final var phases = List.of( @@ -24,22 +25,22 @@ public final class DependencyPipelineService { new StackPhase(), new PolicyPhase() ); - INSTANCE = new DependencyPipelineService(phases); + INSTANCE = new DependencyService(phases); } - private final List phases; + private final List phases; - DependencyPipelineService(List phases) { + DependencyService(List phases) { this.phases = phases; } public ResolvedWorkspace run( - final DependencyPipelineConfig config, + final DependencyConfig config, final LogAggregator logs) { - final var ctx = DependencyPipelineContext.seed(config); + final var ctx = DependencyContext.seed(config); - for (final var dependencyPipelinePhase : phases) { - final var issues = dependencyPipelinePhase.run(ctx); + for (final var dependencyPhase : phases) { + final var issues = dependencyPhase.run(ctx); var error = false; if (ReadOnlyCollection.isNotEmpty(issues)) { for (final var issue : issues) { @@ -52,11 +53,11 @@ public final class DependencyPipelineService { } } if (error) { - throw new BuildException("issues found during dependency pipeline phase: " + dependencyPipelinePhase.getClass().getSimpleName()); + throw new BuildException("[DEPS]: issues found during dependency phase: " + dependencyPhase.getClass().getSimpleName()); } } - logs.using(log).info("dependency pipeline completed successfully, going to resolve workspace"); + logs.using(log).info("[DEPS]: dependency completed successfully"); return ctx.toResolvedWorkspace(); } diff --git a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/phases/DiscoverPhase.java b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/phases/DiscoverPhase.java index 9f8525fb..692ea854 100644 --- a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/phases/DiscoverPhase.java +++ b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/phases/DiscoverPhase.java @@ -2,11 +2,11 @@ package p.studio.compiler.workspaces.phases; import com.fasterxml.jackson.databind.ObjectMapper; import p.studio.compiler.FrontendRegistryService; -import p.studio.compiler.model.BuildingIssue; -import p.studio.compiler.model.PrometeuManifest; -import p.studio.compiler.workspaces.DependencyPipelinePhase; -import p.studio.compiler.workspaces.DependencyPipelineContext; -import p.studio.compiler.workspaces.ProjectInfo; +import p.studio.compiler.messages.BuildingIssue; +import p.studio.compiler.models.PrometeuManifest; +import p.studio.compiler.workspaces.DependencyPhase; +import p.studio.compiler.models.DependencyContext; +import p.studio.compiler.models.ProjectInfo; import p.studio.utilities.structures.ReadOnlyCollection; import java.io.IOException; @@ -16,11 +16,11 @@ import java.util.ArrayList; import java.util.List; -public class DiscoverPhase implements DependencyPipelinePhase { +public class DiscoverPhase implements DependencyPhase { private final ObjectMapper mapper = new ObjectMapper(); @Override - public ReadOnlyCollection run(final DependencyPipelineContext ctx) { + public ReadOnlyCollection run(final DependencyContext ctx) { final List issues = new ArrayList<>(); while (!ctx.pending.isEmpty()) { final var rootPathCanon = ctx.pending.pollFirst(); diff --git a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/phases/LocalizePhase.java b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/phases/LocalizePhase.java index 031ceac1..b6b82f03 100644 --- a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/phases/LocalizePhase.java +++ b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/phases/LocalizePhase.java @@ -1,6 +1,7 @@ package p.studio.compiler.workspaces.phases; -import p.studio.compiler.model.BuildingIssue; +import p.studio.compiler.messages.BuildingIssue; +import p.studio.compiler.models.DependencyContext; import p.studio.compiler.workspaces.*; import p.studio.utilities.structures.ReadOnlyCollection; @@ -8,9 +9,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; -public final class LocalizePhase implements DependencyPipelinePhase { +public final class LocalizePhase implements DependencyPhase { @Override - public ReadOnlyCollection run(final DependencyPipelineContext state) { + public ReadOnlyCollection run(final DependencyContext state) { final List issues = new ArrayList<>(); for (int i = 0; i < state.projectNodes.size(); i++) { final var fromProjectNode = state.projectNodes.get(i); diff --git a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/phases/MaterializePhase.java b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/phases/MaterializePhase.java index e974f60e..4282b056 100644 --- a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/phases/MaterializePhase.java +++ b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/phases/MaterializePhase.java @@ -1,7 +1,7 @@ package p.studio.compiler.workspaces.phases; -import p.studio.compiler.model.BuildingIssue; -import p.studio.compiler.model.PrometeuManifest; +import p.studio.compiler.messages.BuildingIssue; +import p.studio.compiler.models.*; import p.studio.compiler.source.identifiers.ProjectId; import p.studio.compiler.workspaces.*; import p.studio.utilities.structures.ReadOnlyCollection; @@ -11,9 +11,9 @@ import java.io.IOException; import java.nio.file.Path; import java.util.*; -public final class MaterializePhase implements DependencyPipelinePhase { +public final class MaterializePhase implements DependencyPhase { @Override - public ReadOnlyCollection run(final DependencyPipelineContext ctx) { + public ReadOnlyCollection run(final DependencyContext ctx) { // start all over again, we will re-populate the project nodes and edges based on the project infos ctx.projectNodes.clear(); ctx.projectIdByDirectoryRoot.clear(); diff --git a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/phases/PolicyPhase.java b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/phases/PolicyPhase.java index 4f1d74fe..2b343908 100644 --- a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/phases/PolicyPhase.java +++ b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/phases/PolicyPhase.java @@ -1,16 +1,16 @@ package p.studio.compiler.workspaces.phases; -import p.studio.compiler.model.BuildingIssue; -import p.studio.compiler.workspaces.DependencyPipelinePhase; -import p.studio.compiler.workspaces.DependencyPipelineContext; +import p.studio.compiler.messages.BuildingIssue; +import p.studio.compiler.workspaces.DependencyPhase; +import p.studio.compiler.models.DependencyContext; import p.studio.utilities.structures.ReadOnlyCollection; import java.util.ArrayList; import java.util.List; -public final class PolicyPhase implements DependencyPipelinePhase { +public final class PolicyPhase implements DependencyPhase { @Override - public ReadOnlyCollection run(DependencyPipelineContext state) { + public ReadOnlyCollection run(DependencyContext state) { final List issues = new ArrayList<>(); // No-op for now; in Rust this applies source policies return ReadOnlyCollection.wrap(issues); diff --git a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/phases/SeedPhase.java b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/phases/SeedPhase.java index 097c4abb..4c3c9449 100644 --- a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/phases/SeedPhase.java +++ b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/phases/SeedPhase.java @@ -1,17 +1,17 @@ package p.studio.compiler.workspaces.phases; -import p.studio.compiler.model.BuildingIssue; -import p.studio.compiler.workspaces.DependencyPipelinePhase; -import p.studio.compiler.workspaces.DependencyPipelineContext; +import p.studio.compiler.messages.BuildingIssue; +import p.studio.compiler.workspaces.DependencyPhase; +import p.studio.compiler.models.DependencyContext; import p.studio.utilities.structures.ReadOnlyCollection; import java.io.IOException; import java.util.ArrayList; import java.util.List; -public final class SeedPhase implements DependencyPipelinePhase { +public final class SeedPhase implements DependencyPhase { @Override - public ReadOnlyCollection run(final DependencyPipelineContext ctx) { + public ReadOnlyCollection run(final DependencyContext ctx) { final List issues = new ArrayList<>(); try { ctx.mainProjectRootPathCanon = ctx.config().cacheDir().toRealPath(); diff --git a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/phases/StackPhase.java b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/phases/StackPhase.java index 9a3ae6c9..3e7556c2 100644 --- a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/phases/StackPhase.java +++ b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/phases/StackPhase.java @@ -1,10 +1,10 @@ package p.studio.compiler.workspaces.phases; -import p.studio.compiler.model.BuildStack; -import p.studio.compiler.model.BuildingIssue; +import p.studio.compiler.models.BuildStack; +import p.studio.compiler.messages.BuildingIssue; import p.studio.compiler.source.identifiers.ProjectId; -import p.studio.compiler.workspaces.DependencyPipelineContext; -import p.studio.compiler.workspaces.DependencyPipelinePhase; +import p.studio.compiler.models.DependencyContext; +import p.studio.compiler.workspaces.DependencyPhase; import p.studio.utilities.structures.ReadOnlyCollection; import p.studio.utilities.structures.ReadOnlyList; @@ -15,12 +15,12 @@ import java.util.List; import static java.util.stream.Collectors.joining; -public final class StackPhase implements DependencyPipelinePhase { +public final class StackPhase implements DependencyPhase { /** * Implements topological sort; detects dependency cycles; sets build stack */ @Override - public ReadOnlyCollection run(DependencyPipelineContext ctx) { + public ReadOnlyCollection run(DependencyContext ctx) { final int n = ctx.projectNodes.size(); final int[] indeg = new int[n]; for (int from = 0; from < n; from++) { diff --git a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/phases/ValidatePhase.java b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/phases/ValidatePhase.java index 6b02acf6..c350c0fd 100644 --- a/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/phases/ValidatePhase.java +++ b/prometeu-compiler/prometeu-deps/src/main/java/p/studio/compiler/workspaces/phases/ValidatePhase.java @@ -1,15 +1,15 @@ package p.studio.compiler.workspaces.phases; -import p.studio.compiler.model.BuildingIssue; -import p.studio.compiler.workspaces.DependencyPipelineContext; -import p.studio.compiler.workspaces.DependencyPipelinePhase; +import p.studio.compiler.messages.BuildingIssue; +import p.studio.compiler.models.DependencyContext; +import p.studio.compiler.workspaces.DependencyPhase; import p.studio.utilities.structures.ReadOnlyCollection; import java.util.List; -public final class ValidatePhase implements DependencyPipelinePhase { +public final class ValidatePhase implements DependencyPhase { @Override - public ReadOnlyCollection run(DependencyPipelineContext state) { + public ReadOnlyCollection run(DependencyContext state) { if (state.root == null) { final var issue = BuildingIssue .builder() diff --git a/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/DependencyPipelineServiceTest.java b/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/DependencyServiceTest.java similarity index 90% rename from prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/DependencyPipelineServiceTest.java rename to prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/DependencyServiceTest.java index 2864c829..a51a3289 100644 --- a/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/DependencyPipelineServiceTest.java +++ b/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/DependencyServiceTest.java @@ -2,8 +2,8 @@ package p.studio.compiler.workspaces; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; -import p.studio.compiler.model.DependencyPipelineConfig; -import p.studio.compiler.model.ResolvedWorkspace; +import p.studio.compiler.messages.DependencyConfig; +import p.studio.compiler.models.ResolvedWorkspace; import p.studio.compiler.workspaces.phases.*; import java.io.IOException; @@ -13,7 +13,7 @@ import java.util.List; import static org.junit.jupiter.api.Assertions.*; -class DependencyPipelineServiceTest { +class DependencyServiceTest { @Test void canonical_pipeline_e2e(@TempDir Path tempDir) throws IOException { @@ -26,7 +26,7 @@ class DependencyPipelineServiceTest { writeManifest(root, "root-proj", "0.1.0", new String[]{"depA"}); writeManifest(depA, "dep-a", "0.1.0", new String[]{}); - final var cfg = new DependencyPipelineConfig(false, root, List.of()); + final var cfg = new DependencyConfig(false, root, List.of()); final var phases = List.of( new SeedPhase(), new DiscoverPhase(), @@ -37,7 +37,7 @@ class DependencyPipelineServiceTest { new PolicyPhase() ); - final var service = new DependencyPipelineService(phases); + final var service = new DependencyService(phases); final ResolvedWorkspace ws = service.run(cfg); assertNotNull(ws); diff --git a/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/DiscoverPhaseTest.java b/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/DiscoverPhaseTest.java index 2203f15a..251d1097 100644 --- a/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/DiscoverPhaseTest.java +++ b/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/DiscoverPhaseTest.java @@ -2,7 +2,8 @@ package p.studio.compiler.workspaces; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; -import p.studio.compiler.model.DependencyPipelineConfig; +import p.studio.compiler.messages.DependencyConfig; +import p.studio.compiler.models.DependencyContext; import p.studio.compiler.workspaces.phases.DiscoverPhase; import p.studio.compiler.workspaces.phases.SeedPhase; import p.studio.utilities.structures.ReadOnlyCollection; @@ -25,8 +26,8 @@ class DiscoverPhaseTest { writeManifest(root, "root-proj", "0.1.0", new String[]{"depA"}, null); writeManifest(depA, "dep-a", "0.1.0", new String[]{}, null); - final var cfg = new DependencyPipelineConfig(false, root, java.util.List.of()); - final var ctx = DependencyPipelineContext.seed(cfg); + final var cfg = new DependencyConfig(false, root, java.util.List.of()); + final var ctx = DependencyContext.seed(cfg); assertTrue(ReadOnlyCollection.isEmpty(new SeedPhase().run(ctx))); final var issues = new DiscoverPhase().run(ctx); diff --git a/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/LocalizePhaseTest.java b/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/LocalizePhaseTest.java index 471075dc..7f42228f 100644 --- a/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/LocalizePhaseTest.java +++ b/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/LocalizePhaseTest.java @@ -2,7 +2,8 @@ package p.studio.compiler.workspaces; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; -import p.studio.compiler.model.DependencyPipelineConfig; +import p.studio.compiler.messages.DependencyConfig; +import p.studio.compiler.models.DependencyContext; import p.studio.compiler.workspaces.phases.*; import p.studio.utilities.structures.ReadOnlyCollection; @@ -25,8 +26,8 @@ class LocalizePhaseTest { writeManifest(root, "root-proj", "0.1.0", new String[]{"depA"}); writeManifest(depA, "dep-a", "0.1.0", new String[]{}); - final var cfg = new DependencyPipelineConfig(false, root, java.util.List.of()); - final var ctx = DependencyPipelineContext.seed(cfg); + final var cfg = new DependencyConfig(false, root, java.util.List.of()); + final var ctx = DependencyContext.seed(cfg); assertTrue(ReadOnlyCollection.isEmpty(new SeedPhase().run(ctx))); assertTrue(ReadOnlyCollection.isEmpty(new DiscoverPhase().run(ctx))); assertTrue(ReadOnlyCollection.isEmpty(new MaterializePhase().run(ctx))); diff --git a/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/MaterializePhaseTest.java b/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/MaterializePhaseTest.java index 87bbdc1b..f384d2e7 100644 --- a/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/MaterializePhaseTest.java +++ b/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/MaterializePhaseTest.java @@ -2,7 +2,8 @@ package p.studio.compiler.workspaces; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; -import p.studio.compiler.model.DependencyPipelineConfig; +import p.studio.compiler.messages.DependencyConfig; +import p.studio.compiler.models.DependencyContext; import p.studio.compiler.workspaces.phases.DiscoverPhase; import p.studio.compiler.workspaces.phases.MaterializePhase; import p.studio.compiler.workspaces.phases.SeedPhase; @@ -27,8 +28,8 @@ class MaterializePhaseTest { writeManifest(root, "root-proj", "0.1.0", new String[]{"depA"}); writeManifest(depA, "dep-a", "0.1.0", new String[]{}); - final var cfg = new DependencyPipelineConfig(false, root, java.util.List.of()); - final var ctx = DependencyPipelineContext.seed(cfg); + final var cfg = new DependencyConfig(false, root, java.util.List.of()); + final var ctx = DependencyContext.seed(cfg); assertTrue(ReadOnlyCollection.isEmpty(new SeedPhase().run(ctx))); assertTrue(ReadOnlyCollection.isEmpty(new DiscoverPhase().run(ctx))); diff --git a/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/SeedPhaseTest.java b/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/SeedPhaseTest.java index c70136a6..5c1d23e1 100644 --- a/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/SeedPhaseTest.java +++ b/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/SeedPhaseTest.java @@ -2,7 +2,8 @@ package p.studio.compiler.workspaces; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; -import p.studio.compiler.model.DependencyPipelineConfig; +import p.studio.compiler.messages.DependencyConfig; +import p.studio.compiler.models.DependencyContext; import p.studio.compiler.workspaces.phases.SeedPhase; import p.studio.utilities.structures.ReadOnlyCollection; @@ -14,8 +15,8 @@ class SeedPhaseTest { @Test void seed_initializes_root_and_pending(@TempDir Path tempDir) throws Exception { - final var cfg = new DependencyPipelineConfig(false, tempDir, java.util.List.of()); - final var ctx = DependencyPipelineContext.seed(cfg); + final var cfg = new DependencyConfig(false, tempDir, java.util.List.of()); + final var ctx = DependencyContext.seed(cfg); final var issues = new SeedPhase().run(ctx); assertTrue(ReadOnlyCollection.isEmpty(issues), "Nenhum issue esperado na SeedPhase"); diff --git a/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/StackPhaseTest.java b/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/StackPhaseTest.java index 9588c716..e915bdec 100644 --- a/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/StackPhaseTest.java +++ b/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/StackPhaseTest.java @@ -2,7 +2,8 @@ package p.studio.compiler.workspaces; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; -import p.studio.compiler.model.DependencyPipelineConfig; +import p.studio.compiler.messages.DependencyConfig; +import p.studio.compiler.models.DependencyContext; import p.studio.compiler.workspaces.phases.*; import p.studio.utilities.structures.ReadOnlyCollection; @@ -25,8 +26,8 @@ class StackPhaseTest { writeManifest(root, "root-proj", "0.1.0", new String[]{"depA"}); writeManifest(depA, "dep-a", "0.1.0", new String[]{}); - final var cfg = new DependencyPipelineConfig(false, root, java.util.List.of()); - final var ctx = DependencyPipelineContext.seed(cfg); + final var cfg = new DependencyConfig(false, root, java.util.List.of()); + final var ctx = DependencyContext.seed(cfg); assertTrue(ReadOnlyCollection.isEmpty(new SeedPhase().run(ctx))); assertTrue(ReadOnlyCollection.isEmpty(new DiscoverPhase().run(ctx))); assertTrue(ReadOnlyCollection.isEmpty(new MaterializePhase().run(ctx))); diff --git a/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/ValidateAndPolicyPhasesTest.java b/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/ValidateAndPolicyPhasesTest.java index e453526f..70067890 100644 --- a/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/ValidateAndPolicyPhasesTest.java +++ b/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/ValidateAndPolicyPhasesTest.java @@ -2,7 +2,8 @@ package p.studio.compiler.workspaces; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; -import p.studio.compiler.model.DependencyPipelineConfig; +import p.studio.compiler.messages.DependencyConfig; +import p.studio.compiler.models.DependencyContext; import p.studio.compiler.workspaces.phases.*; import p.studio.utilities.structures.ReadOnlyCollection; @@ -25,8 +26,8 @@ class ValidateAndPolicyPhasesTest { writeManifest(root, "root-proj", "0.1.0", new String[]{"depA"}); writeManifest(depA, "dep-a", "0.1.0", new String[]{}); - final var cfg = new DependencyPipelineConfig(false, root, java.util.List.of()); - final var ctx = DependencyPipelineContext.seed(cfg); + final var cfg = new DependencyConfig(false, root, java.util.List.of()); + final var ctx = DependencyContext.seed(cfg); assertTrue(ReadOnlyCollection.isEmpty(new SeedPhase().run(ctx))); assertTrue(ReadOnlyCollection.isEmpty(new DiscoverPhase().run(ctx))); assertTrue(ReadOnlyCollection.isEmpty(new MaterializePhase().run(ctx))); @@ -38,8 +39,8 @@ class ValidateAndPolicyPhasesTest { @Test void policy_is_noop(@TempDir Path tempDir) { - final var cfg = new DependencyPipelineConfig(false, tempDir, java.util.List.of()); - final var ctx = DependencyPipelineContext.seed(cfg); + final var cfg = new DependencyConfig(false, tempDir, java.util.List.of()); + final var ctx = DependencyContext.seed(cfg); final var issues = new PolicyPhase().run(ctx); assertTrue(ReadOnlyCollection.isEmpty(issues), "PolicyPhase atualmente é no-op"); } diff --git a/prometeu-compiler/prometeu-frontend-registry/src/main/java/p/studio/compiler/FrontendRegistryService.java b/prometeu-compiler/prometeu-frontend-registry/src/main/java/p/studio/compiler/FrontendRegistryService.java index 09f100f5..1c93b793 100644 --- a/prometeu-compiler/prometeu-frontend-registry/src/main/java/p/studio/compiler/FrontendRegistryService.java +++ b/prometeu-compiler/prometeu-frontend-registry/src/main/java/p/studio/compiler/FrontendRegistryService.java @@ -1,6 +1,6 @@ package p.studio.compiler; -import p.studio.compiler.model.FrontendSpec; +import p.studio.compiler.models.FrontendSpec; import java.util.HashMap; import java.util.Map; diff --git a/prometeu-studio/build.gradle.kts b/prometeu-studio/build.gradle.kts index 859d5a85..b0936a97 100644 --- a/prometeu-studio/build.gradle.kts +++ b/prometeu-studio/build.gradle.kts @@ -6,7 +6,7 @@ plugins { dependencies { implementation(project(":prometeu-infra")) implementation(project(":prometeu-compiler:prometeu-compiler-core")) - implementation(project(":prometeu-compiler:prometeu-deps")) + implementation(project(":prometeu-compiler:prometeu-build-pipeline")) implementation(libs.javafx.controls) implementation(libs.javafx.fxml) implementation(libs.richtextfx) diff --git a/prometeu-studio/src/main/java/p/studio/workspaces/builder/BuilderWorkspace.java b/prometeu-studio/src/main/java/p/studio/workspaces/builder/BuilderWorkspace.java index 9680805d..0384345b 100644 --- a/prometeu-studio/src/main/java/p/studio/workspaces/builder/BuilderWorkspace.java +++ b/prometeu-studio/src/main/java/p/studio/workspaces/builder/BuilderWorkspace.java @@ -6,16 +6,13 @@ import javafx.scene.control.*; import javafx.scene.layout.BorderPane; import javafx.scene.layout.StackPane; import p.studio.Container; -import p.studio.compiler.model.DependencyPipelineConfig; -import p.studio.compiler.workspaces.DependencyPipelineService; +import p.studio.compiler.messages.BuilderPipelineConfig; +import p.studio.compiler.workspaces.BuilderPipelineService; import p.studio.utilities.i18n.I18n; import p.studio.utilities.logs.LogAggregator; import p.studio.workspaces.Workspace; import p.studio.workspaces.WorkspaceId; -import java.nio.file.Paths; -import java.util.List; - public class BuilderWorkspace implements Workspace { private final BorderPane root = new BorderPane(); private final TextArea logs = new TextArea(); @@ -53,13 +50,10 @@ public class BuilderWorkspace implements Workspace { private ToolBar buildToolBar() { buildButton.textProperty().bind(Container.i18n().bind(I18n.WORKSPACE_BUILDER_BUTTON_RUN)); buildButton.setOnAction(e -> { - final var rootPath = Paths.get("../test-projects/main").toAbsolutePath(); - final var cfg = new DependencyPipelineConfig(false, rootPath, List.of()); final var logAggregator = LogAggregator.with(logs::appendText); - final var resolvedWorkspace = DependencyPipelineService.INSTANCE.run(cfg, logAggregator); - for (final var p : resolvedWorkspace.graph().projects()) { - logs.appendText("Project [ " + p.getName() + " ] read\n"); - } + final var config = new BuilderPipelineConfig(); + config.setRootProjectPath("../test-projects/main"); + BuilderPipelineService.INSTANCE.run(config, logAggregator); }); return new ToolBar(buildButton); } diff --git a/test-projects/dep1/prometeu.json b/test-projects/dep1/prometeu.json index ff976c06..425ac304 100644 --- a/test-projects/dep1/prometeu.json +++ b/test-projects/dep1/prometeu.json @@ -8,9 +8,6 @@ }, { "path": "../sdk" - }, - { - "path": "../main" } ] } \ No newline at end of file diff --git a/test-projects/dep2/prometeu.json b/test-projects/dep2/prometeu.json index 11acec3c..26d62f9d 100644 --- a/test-projects/dep2/prometeu.json +++ b/test-projects/dep2/prometeu.json @@ -3,9 +3,6 @@ "version": "1.0.0", "language": "pbs", "dependencies": [ - { - "path": "../dep1" - }, { "path": "../sdk" }