diff --git a/fusioncli/build.gradle.kts b/fusioncli/build.gradle.kts index 41b71bc79..7fa62ddc3 100644 --- a/fusioncli/build.gradle.kts +++ b/fusioncli/build.gradle.kts @@ -18,6 +18,17 @@ dependencies { } +val mainFusionRepo = layout.projectDirectory.dir("src/main/fusion") + +// Bundle the Fusion repository in our jar. +// TODO DRY this WRT runtime +tasks.jar { + into("FUSION-REPO") { + from(mainFusionRepo) + includeEmptyDirs = true + } +} + tasks.jacocoTestCoverageVerification { violationRules { rule { diff --git a/runtime/src/main/fusion/modules/fusion/private/repl.fusion b/fusioncli/src/main/fusion/modules/fusion/private/cli/repl.fusion similarity index 100% rename from runtime/src/main/fusion/modules/fusion/private/repl.fusion rename to fusioncli/src/main/fusion/modules/fusion/private/cli/repl.fusion diff --git a/fusioncli/src/main/java/dev/ionfusion/fusioncli/Repl.java b/fusioncli/src/main/java/dev/ionfusion/fusioncli/Repl.java index 2db6af5f6..6420136ed 100644 --- a/fusioncli/src/main/java/dev/ionfusion/fusioncli/Repl.java +++ b/fusioncli/src/main/java/dev/ionfusion/fusioncli/Repl.java @@ -109,7 +109,7 @@ public int execute(PrintWriter out, PrintWriter err) // Bootstrap the runtime before printing the welcome banner, so // that we don't do that when there's usage problems. myTopLevel = runtime().getDefaultTopLevel(); - myTopLevel.requireModule("/fusion/private/repl"); + myTopLevel.requireModule("/fusion/private/cli/repl"); welcome(); diff --git a/fusioncli/src/test/java/dev/ionfusion/fusioncli/CliTestCase.java b/fusioncli/src/test/java/dev/ionfusion/fusioncli/CliTestCase.java index 731c54485..365cdd7fe 100644 --- a/fusioncli/src/test/java/dev/ionfusion/fusioncli/CliTestCase.java +++ b/fusioncli/src/test/java/dev/ionfusion/fusioncli/CliTestCase.java @@ -4,6 +4,7 @@ package dev.ionfusion.fusioncli; import static dev.ionfusion.testing.ProjectLayout.fusionBootstrapDirectory; +import static dev.ionfusion.testing.ProjectLayout.mainRepositoryDirectory; import static org.junit.jupiter.api.Assertions.assertEquals; import dev.ionfusion.testing.StdioTestCase; @@ -59,6 +60,9 @@ private String[] prependGlobalOptions(String[] commandLine) join.add("--repositories"); join.add(fusionBootstrapDirectory().toString()); + join.add("--repositories"); + join.add(mainRepositoryDirectory().toString()); + join.addAll(Arrays.asList(commandLine)); return join.toArray(new String[0]); } diff --git a/testing/src/main/java/dev/ionfusion/testing/ProjectLayout.java b/testing/src/main/java/dev/ionfusion/testing/ProjectLayout.java index 1e4540503..209c401a6 100644 --- a/testing/src/main/java/dev/ionfusion/testing/ProjectLayout.java +++ b/testing/src/main/java/dev/ionfusion/testing/ProjectLayout.java @@ -39,6 +39,11 @@ public static Path fusionBootstrapDirectory() return PROJECT_DIRECTORY.resolve("../runtime/src/main/fusion"); } + public static Path mainRepositoryDirectory() + { + return PROJECT_DIRECTORY.resolve("src/main/fusion"); + } + public static Path testRepositoryDirectory() { return PROJECT_DIRECTORY.resolve("src/test/fusion");