From 564a2a7f4feb6f53b5aeff38a73f30dc275d4437 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 9 Mar 2025 21:52:45 +0000 Subject: Remove duplication of path to binary --- src/main/java/org/shedlang/compiler/ShedCompiler.java | 12 ++++++------ .../java/org/shedlang/compiler/config/ProjectConfig.java | 10 ++++++++-- 2 files changed, 14 insertions(+), 8 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/org/shedlang/compiler/ShedCompiler.java b/src/main/java/org/shedlang/compiler/ShedCompiler.java index e2be53a2..845da159 100644 --- a/src/main/java/org/shedlang/compiler/ShedCompiler.java +++ b/src/main/java/org/shedlang/compiler/ShedCompiler.java @@ -30,7 +30,7 @@ import static org.shedlang.compiler.sourcefiles.SourceFiles.collectSourceFiles; import static org.shedlang.compiler.typechecker.NamespaceDependencyLineariser.orderNamespaces; public class ShedCompiler { - public void compile( + public TargetDir compile( Path projectRoot, Backend backend, Optional profileName @@ -85,17 +85,17 @@ public class ShedCompiler { var profileConfig = profileName.map(config::profile) .orElse(ProfileConfig.DEFAULT); + var targetDir = config.targetDir(backend, profileConfig); + backend.compile( config, profileConfig, namespaces, typeInfos, - new TargetDir( - config.targetDir() - .resolve(backend.targetName()) - .resolve(profileConfig.name()) - ) + targetDir ); + + return targetDir; } /** diff --git a/src/main/java/org/shedlang/compiler/config/ProjectConfig.java b/src/main/java/org/shedlang/compiler/config/ProjectConfig.java index dcb402f8..44a041f4 100644 --- a/src/main/java/org/shedlang/compiler/config/ProjectConfig.java +++ b/src/main/java/org/shedlang/compiler/config/ProjectConfig.java @@ -1,5 +1,7 @@ package org.shedlang.compiler.config; +import org.shedlang.compiler.backends.Backend; +import org.shedlang.compiler.backends.paths.TargetDir; import org.shedlang.compiler.config.json.Json5ObjectWithSource; import org.zwobble.sourcetext.SourceText; @@ -64,8 +66,12 @@ public record ProjectConfig( .toList(); } - public Path targetDir() { - return root.resolve("target"); + public TargetDir targetDir(Backend backend, ProfileConfig profileConfig) { + var path = root.resolve("target") + .resolve(backend.targetName()) + .resolve(profileConfig.name()); + + return new TargetDir(path); } public ProfileConfig profile(String profileName) { -- cgit v1.2.3