From 5975f5110b132208b2f7d59e328b26706524f3bd Mon Sep 17 00:00:00 2001 From: JesseBrault0709 <62299747+JesseBrault0709@users.noreply.github.com> Date: Tue, 28 May 2024 07:43:33 +0200 Subject: [PATCH] Better convention for outputDir. --- .../com/jessebrault/ssg/DefaultStaticSiteGenerator.groovy | 3 +-- .../ssg/buildscript/BuildScriptToBuildSpecConverter.groovy | 7 +++---- .../ssg/buildscript/delegates/BuildDelegate.groovy | 5 ++++- .../main/groovy/com/jessebrault/ssg/util/PathUtil.groovy | 4 ++++ 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/api/src/main/groovy/com/jessebrault/ssg/DefaultStaticSiteGenerator.groovy b/api/src/main/groovy/com/jessebrault/ssg/DefaultStaticSiteGenerator.groovy index 8605485..fd70525 100644 --- a/api/src/main/groovy/com/jessebrault/ssg/DefaultStaticSiteGenerator.groovy +++ b/api/src/main/groovy/com/jessebrault/ssg/DefaultStaticSiteGenerator.groovy @@ -75,8 +75,7 @@ class DefaultStaticSiteGenerator implements StaticSiteGenerator { projectDir ) def buildScriptToBuildSpecConverter = new BuildScriptToBuildSpecConverter( - buildScriptGetter, - BuildDelegate.withDefaults(projectDir) + buildScriptGetter, { String name -> BuildDelegate.withDefaults(name, projectDir) } ) def buildSpec = buildScriptToBuildSpecConverter.convert(buildScriptFqn) diff --git a/api/src/main/groovy/com/jessebrault/ssg/buildscript/BuildScriptToBuildSpecConverter.groovy b/api/src/main/groovy/com/jessebrault/ssg/buildscript/BuildScriptToBuildSpecConverter.groovy index 7d503a3..ef0b4b9 100644 --- a/api/src/main/groovy/com/jessebrault/ssg/buildscript/BuildScriptToBuildSpecConverter.groovy +++ b/api/src/main/groovy/com/jessebrault/ssg/buildscript/BuildScriptToBuildSpecConverter.groovy @@ -4,14 +4,14 @@ import com.jessebrault.ssg.buildscript.delegates.BuildDelegate import groovy.transform.NullCheck import groovy.transform.TupleConstructor -import java.util.function.Supplier +import java.util.function.Function @NullCheck @TupleConstructor(includeFields = true) class BuildScriptToBuildSpecConverter { private final BuildScriptGetter buildScriptGetter - private final Supplier buildDelegateSupplier + private final Function buildDelegateFactory protected BuildSpec getFromDelegate(String name, BuildDelegate delegate) { new BuildSpec( @@ -38,8 +38,7 @@ class BuildScriptToBuildSpecConverter { extending = from.extending } - def delegate = this.buildDelegateSupplier.get() - delegate.outputDir.setConvention(new File(name.replaceAll(/\./, File.separator))) + def delegate = this.buildDelegateFactory.apply(name) while (!buildHierarchy.isEmpty()) { def currentScript = buildHierarchy.pop() currentScript.buildClosure.delegate = delegate diff --git a/api/src/main/groovy/com/jessebrault/ssg/buildscript/delegates/BuildDelegate.groovy b/api/src/main/groovy/com/jessebrault/ssg/buildscript/delegates/BuildDelegate.groovy index acb876d..08f256d 100644 --- a/api/src/main/groovy/com/jessebrault/ssg/buildscript/delegates/BuildDelegate.groovy +++ b/api/src/main/groovy/com/jessebrault/ssg/buildscript/delegates/BuildDelegate.groovy @@ -4,6 +4,7 @@ import com.jessebrault.ssg.model.Model import com.jessebrault.ssg.model.Models import com.jessebrault.ssg.text.MarkdownTextConverter import com.jessebrault.ssg.text.TextConverter +import com.jessebrault.ssg.util.PathUtil import groowt.util.di.DefaultRegistryObjectFactory import groowt.util.di.RegistryObjectFactory import groowt.util.fp.property.DefaultProperty @@ -12,14 +13,16 @@ import groowt.util.fp.provider.DefaultProvider import groowt.util.fp.provider.NamedProvider import groowt.util.fp.provider.Provider +import java.nio.file.Path import java.util.function.Supplier final class BuildDelegate { - static Supplier withDefaults(File projectDir) { + static Supplier withDefaults(String buildName, File projectDir) { return { new BuildDelegate(projectDir).tap { basePackages.convention = [] as Set + outputDir.convention = PathUtil.resolve(projectDir, Path.of('dist', buildName)) globals.convention = [:] models.convention = [] as Set textsDirs.convention = [new File(projectDir, 'texts')] as Set diff --git a/api/src/main/groovy/com/jessebrault/ssg/util/PathUtil.groovy b/api/src/main/groovy/com/jessebrault/ssg/util/PathUtil.groovy index a862035..20da516 100644 --- a/api/src/main/groovy/com/jessebrault/ssg/util/PathUtil.groovy +++ b/api/src/main/groovy/com/jessebrault/ssg/util/PathUtil.groovy @@ -12,6 +12,10 @@ final class PathUtil { Path.of(base).relativize(Path.of(target)).toString() } + static File resolve(File base, Path target) { + base.toPath().resolve(target).toFile() + } + private PathUtil() {} }