Better convention for outputDir.

This commit is contained in:
JesseBrault0709 2024-05-28 07:43:33 +02:00
parent 13b22b1afa
commit 5975f5110b
4 changed files with 12 additions and 7 deletions

View File

@ -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)

View File

@ -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<BuildDelegate> buildDelegateSupplier
private final Function<String, BuildDelegate> 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

View File

@ -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<BuildDelegate> withDefaults(File projectDir) {
static Supplier<BuildDelegate> withDefaults(String buildName, File projectDir) {
return {
new BuildDelegate(projectDir).tap {
basePackages.convention = [] as Set<String>
outputDir.convention = PathUtil.resolve(projectDir, Path.of('dist', buildName))
globals.convention = [:]
models.convention = [] as Set<Model>
textsDirs.convention = [new File(projectDir, 'texts')] as Set<File>

View File

@ -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() {}
}