From 9fc2ebefc01942cbdf360b5080ecc1155b67351e Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 11 Jan 2025 11:39:24 +0000 Subject: Add dependencies to project config --- .../org/shedlang/compiler/config/DependencyConfig.java | 15 +++++++++++++++ .../java/org/shedlang/compiler/config/ProjectConfig.java | 13 +++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 src/main/java/org/shedlang/compiler/config/DependencyConfig.java (limited to 'src/main/java') 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 bins, + List dependencies, List 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 dependenciesFromJson5( + Path projectRoot, + Json5ObjectWithSource object + ) { + return object.getArrayOfObjects("dependencies") + .orElseGet(() -> List.of()) + .stream() + .map(dependency -> DependencyConfig.fromJson5(projectRoot, dependency)) + .toList(); + } + public static List profilesFromToml(Json5ObjectWithSource object) { return object.getArrayOfObjects("profiles") .orElseGet(() -> List.of()) -- cgit v1.2.3