From f611aa3227d480622c5cc296b9a1e6dae7bb75f3 Mon Sep 17 00:00:00 2001 From: JesseBrault0709 <62299747+JesseBrault0709@users.noreply.github.com> Date: Sun, 30 Apr 2023 06:50:35 +0200 Subject: [PATCH] OutputDir no longer accepts null constructor param. --- .../ssg/SimpleBuildTasksConverter.groovy | 2 +- .../ssg/buildscript/OutputDir.groovy | 29 +++++++++++++++---- .../ssg/buildscript/OutputDirFunctions.groovy | 4 +-- .../ssg/buildscript/dsl/BuildDelegate.groovy | 3 +- 4 files changed, 26 insertions(+), 12 deletions(-) diff --git a/api/src/main/groovy/com/jessebrault/ssg/SimpleBuildTasksConverter.groovy b/api/src/main/groovy/com/jessebrault/ssg/SimpleBuildTasksConverter.groovy index 08dab3d..32070f6 100644 --- a/api/src/main/groovy/com/jessebrault/ssg/SimpleBuildTasksConverter.groovy +++ b/api/src/main/groovy/com/jessebrault/ssg/SimpleBuildTasksConverter.groovy @@ -12,7 +12,7 @@ final class SimpleBuildTasksConverter implements BuildTasksConverter { Result> convert(Build build) { def taskSpec = new TaskSpec( build.name, - build.outputDirFunction.apply(build).file, + build.outputDirFunction.apply(build).asFile(), build.siteSpec, build.globals ) diff --git a/api/src/main/groovy/com/jessebrault/ssg/buildscript/OutputDir.groovy b/api/src/main/groovy/com/jessebrault/ssg/buildscript/OutputDir.groovy index 20ae5d1..f094e77 100644 --- a/api/src/main/groovy/com/jessebrault/ssg/buildscript/OutputDir.groovy +++ b/api/src/main/groovy/com/jessebrault/ssg/buildscript/OutputDir.groovy @@ -1,24 +1,41 @@ package com.jessebrault.ssg.buildscript import groovy.transform.EqualsAndHashCode -import org.jetbrains.annotations.Nullable +import groovy.transform.NullCheck +@NullCheck @EqualsAndHashCode final class OutputDir { - @Nullable final String path - OutputDir(@Nullable String path) { + OutputDir(String path) { this.path = path } OutputDir(File file) { - this.path = file.path + this(file.path) } - File getFile() { - this.path ? new File(this.path) : new File('') + File asFile() { + new File(this.path) + } + + String asString() { + this.path + } + + Object asType(Class clazz) { + switch (clazz) { + case File -> this.asFile() + case String -> this.asString() + default -> throw new IllegalArgumentException('cannot cast to a class other than File or String') + } + } + + @Override + String toString() { + "OutputDir(path: ${ this.path })" } } diff --git a/api/src/main/groovy/com/jessebrault/ssg/buildscript/OutputDirFunctions.groovy b/api/src/main/groovy/com/jessebrault/ssg/buildscript/OutputDirFunctions.groovy index cf820dd..b82f302 100644 --- a/api/src/main/groovy/com/jessebrault/ssg/buildscript/OutputDirFunctions.groovy +++ b/api/src/main/groovy/com/jessebrault/ssg/buildscript/OutputDirFunctions.groovy @@ -1,7 +1,5 @@ package com.jessebrault.ssg.buildscript -import org.jetbrains.annotations.Nullable - import java.util.function.Function final class OutputDirFunctions { @@ -19,7 +17,7 @@ final class OutputDirFunctions { return { new OutputDir(dir) } } - static Function of(@Nullable String path) { + static Function of(String path) { return { new OutputDir(path) } } diff --git a/api/src/main/groovy/com/jessebrault/ssg/buildscript/dsl/BuildDelegate.groovy b/api/src/main/groovy/com/jessebrault/ssg/buildscript/dsl/BuildDelegate.groovy index 01d010e..7e38823 100644 --- a/api/src/main/groovy/com/jessebrault/ssg/buildscript/dsl/BuildDelegate.groovy +++ b/api/src/main/groovy/com/jessebrault/ssg/buildscript/dsl/BuildDelegate.groovy @@ -3,7 +3,6 @@ package com.jessebrault.ssg.buildscript.dsl import com.jessebrault.ssg.buildscript.Build import com.jessebrault.ssg.buildscript.OutputDir import com.jessebrault.ssg.buildscript.OutputDirFunctions -import org.jetbrains.annotations.Nullable import java.util.function.Function @@ -31,7 +30,7 @@ final class BuildDelegate extends AbstractBuildDelegate { this.outputDirFunction = OutputDirFunctions.of(file) } - void setOutputDir(@Nullable String path) { + void setOutputDir(String path) { this.outputDirFunction = OutputDirFunctions.of(path) }