aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2025-01-11 11:39:24 +0000
committerMichael Williamson <mike@zwobble.org>2025-01-11 11:39:24 +0000
commit9fc2ebefc01942cbdf360b5080ecc1155b67351e (patch)
treeeeb7a514ccd00bef7956f439500783b7d376212d /src/main/java
parent470b1fab1f9d99d6c85f479e28ea1c424e671e0a (diff)
Add dependencies to project config
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/config/DependencyConfig.java15
-rw-r--r--src/main/java/org/shedlang/compiler/config/ProjectConfig.java13
2 files changed, 28 insertions, 0 deletions
diff --git a/src/main/java/org/shedlang/compiler/config/DependencyConfig.java b/src/main/java/org/shedlang/compiler/config/DependencyConfig.java
new file mode 100644
index 00000000..67535034
--- /dev/null
+++ b/src/main/java/org/shedlang/compiler/config/DependencyConfig.java
@@ -0,0 +1,15 @@
+package org.shedlang.compiler.config;
+
+import org.shedlang.compiler.config.json.Json5ObjectWithSource;
+
+import java.nio.file.Path;
+
+public record DependencyConfig(Path path) {
+ public static DependencyConfig fromJson5(
+ Path projectRoot,
+ Json5ObjectWithSource object
+ ) {
+ var path = projectRoot.resolve(object.getString("path").value());
+ return new DependencyConfig(path);
+ }
+}
diff --git a/src/main/java/org/shedlang/compiler/config/ProjectConfig.java b/src/main/java/org/shedlang/compiler/config/ProjectConfig.java
index 4ed85f1f..1589c7a2 100644
--- a/src/main/java/org/shedlang/compiler/config/ProjectConfig.java
+++ b/src/main/java/org/shedlang/compiler/config/ProjectConfig.java
@@ -11,6 +11,7 @@ import java.util.List;
public record ProjectConfig(
Path root,
List<BinConfig> bins,
+ List<DependencyConfig> dependencies,
List<ProfileConfig> profiles
) {
public static ProjectConfig read(Path projectPath) throws IOException {
@@ -31,6 +32,7 @@ public record ProjectConfig(
return new ProjectConfig(
root,
binsFromToml(object),
+ dependenciesFromJson5(root, object),
profilesFromToml(object)
);
}
@@ -43,6 +45,17 @@ public record ProjectConfig(
.toList();
}
+ private static List<DependencyConfig> dependenciesFromJson5(
+ Path projectRoot,
+ Json5ObjectWithSource object
+ ) {
+ return object.getArrayOfObjects("dependencies")
+ .orElseGet(() -> List.of())
+ .stream()
+ .map(dependency -> DependencyConfig.fromJson5(projectRoot, dependency))
+ .toList();
+ }
+
public static List<ProfileConfig> profilesFromToml(Json5ObjectWithSource object) {
return object.getArrayOfObjects("profiles")
.orElseGet(() -> List.of())