diff options
author | Thibault Gagnaux <tgagnaux@gmail.com> | 2022-02-23 19:29:54 +0100 |
---|---|---|
committer | Thibault Gagnaux <tgagnaux@gmail.com> | 2022-02-23 19:29:54 +0100 |
commit | 049f8d3029b30dc58221e90aa8ddf69b3aa3b61e (patch) | |
tree | e6c5e82733f910ebb0db7dba4fc74eb8dc339e77 /src/main/java/ch/fhnw/thga/gradleplugins/CompileFregeTask.java | |
parent | a4879784e7be87b5ee184b47eb8faba635019a5d (diff) | |
download | frege-gradle-plugin-049f8d3029b30dc58221e90aa8ddf69b3aa3b61e.tar.gz frege-gradle-plugin-049f8d3029b30dc58221e90aa8ddf69b3aa3b61e.tar.bz2 frege-gradle-plugin-049f8d3029b30dc58221e90aa8ddf69b3aa3b61e.zip |
feat: simplifies the replFrege task
The replFregeTask has the following new logic:
1. Compiles the specified fregeRepl module (either in the
`build.gradle` via command line option `--replModule=...`) and all
its dependencies.
2. Sets up the correct classpath so that dependent modules don't have
to be imported manually. In addition, it solves the shadowing problem by
removing the replModule java and class file from the classpath.
3. It prints one single command to directly start the repl and load the
specified module.
Bonus: I designed the task so that you can even automate step 3 with
the following bash command: `eval $(./gradlew -q replFrege)`.
Diffstat (limited to 'src/main/java/ch/fhnw/thga/gradleplugins/CompileFregeTask.java')
-rw-r--r-- | src/main/java/ch/fhnw/thga/gradleplugins/CompileFregeTask.java | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/main/java/ch/fhnw/thga/gradleplugins/CompileFregeTask.java b/src/main/java/ch/fhnw/thga/gradleplugins/CompileFregeTask.java index a3c42d2..a39a07b 100644 --- a/src/main/java/ch/fhnw/thga/gradleplugins/CompileFregeTask.java +++ b/src/main/java/ch/fhnw/thga/gradleplugins/CompileFregeTask.java @@ -11,6 +11,7 @@ import javax.inject.Inject; import org.gradle.api.DefaultTask; import org.gradle.api.file.DirectoryProperty; import org.gradle.api.file.RegularFileProperty; +import org.gradle.api.logging.LogLevel; import org.gradle.api.model.ObjectFactory; import org.gradle.api.provider.ListProperty; import org.gradle.api.provider.Property; @@ -30,7 +31,7 @@ import org.gradle.api.tasks.options.Option; @CacheableTask public abstract class CompileFregeTask extends DefaultTask { private static final String FREGE_FILES_GLOB_PATTERN = "**/*.fr"; - private final JavaExec javaExec; + private JavaExec javaExec; @InputFile @PathSensitive(PathSensitivity.RELATIVE) @@ -113,12 +114,18 @@ public abstract class CompileFregeTask extends DefaultTask { } @TaskAction - public void compileFrege() { + public void compileFrege() + { + this.getLogging().captureStandardOutput(LogLevel.LIFECYCLE); List<String> targetDirectoryArg = List.of( "-d", - getFregeOutputDir().getAsFile().get().getAbsolutePath()); - - javaExec.setClasspath(getProject().files(getFregeCompilerJar())) - .setArgs(buildCompilerArgsFromProperties(targetDirectoryArg)).exec(); + getFregeOutputDir().getAsFile().get().getAbsolutePath() + ); + javaExec.setClasspath( + getProject() + .files(getFregeCompilerJar())) + .setErrorOutput(System.out) + .setArgs(buildCompilerArgsFromProperties(targetDirectoryArg)) + .exec(); } }
\ No newline at end of file |