diff options
| author | Michael Williamson <mike@zwobble.org> | 2025-01-11 11:39:24 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2025-01-11 11:39:24 +0000 |
| commit | 9fc2ebefc01942cbdf360b5080ecc1155b67351e (patch) | |
| tree | eeb7a514ccd00bef7956f439500783b7d376212d /src/main/java | |
| parent | 470b1fab1f9d99d6c85f479e28ea1c424e671e0a (diff) | |
Add dependencies to project config
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/config/DependencyConfig.java | 15 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/config/ProjectConfig.java | 13 |
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()) |
