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 projectDir
) )
def buildScriptToBuildSpecConverter = new BuildScriptToBuildSpecConverter( def buildScriptToBuildSpecConverter = new BuildScriptToBuildSpecConverter(
buildScriptGetter, buildScriptGetter, { String name -> BuildDelegate.withDefaults(name, projectDir) }
BuildDelegate.withDefaults(projectDir)
) )
def buildSpec = buildScriptToBuildSpecConverter.convert(buildScriptFqn) 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.NullCheck
import groovy.transform.TupleConstructor import groovy.transform.TupleConstructor
import java.util.function.Supplier import java.util.function.Function
@NullCheck @NullCheck
@TupleConstructor(includeFields = true) @TupleConstructor(includeFields = true)
class BuildScriptToBuildSpecConverter { class BuildScriptToBuildSpecConverter {
private final BuildScriptGetter buildScriptGetter private final BuildScriptGetter buildScriptGetter
private final Supplier<BuildDelegate> buildDelegateSupplier private final Function<String, BuildDelegate> buildDelegateFactory
protected BuildSpec getFromDelegate(String name, BuildDelegate delegate) { protected BuildSpec getFromDelegate(String name, BuildDelegate delegate) {
new BuildSpec( new BuildSpec(
@ -38,8 +38,7 @@ class BuildScriptToBuildSpecConverter {
extending = from.extending extending = from.extending
} }
def delegate = this.buildDelegateSupplier.get() def delegate = this.buildDelegateFactory.apply(name)
delegate.outputDir.setConvention(new File(name.replaceAll(/\./, File.separator)))
while (!buildHierarchy.isEmpty()) { while (!buildHierarchy.isEmpty()) {
def currentScript = buildHierarchy.pop() def currentScript = buildHierarchy.pop()
currentScript.buildClosure.delegate = delegate 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.model.Models
import com.jessebrault.ssg.text.MarkdownTextConverter import com.jessebrault.ssg.text.MarkdownTextConverter
import com.jessebrault.ssg.text.TextConverter import com.jessebrault.ssg.text.TextConverter
import com.jessebrault.ssg.util.PathUtil
import groowt.util.di.DefaultRegistryObjectFactory import groowt.util.di.DefaultRegistryObjectFactory
import groowt.util.di.RegistryObjectFactory import groowt.util.di.RegistryObjectFactory
import groowt.util.fp.property.DefaultProperty 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.NamedProvider
import groowt.util.fp.provider.Provider import groowt.util.fp.provider.Provider
import java.nio.file.Path
import java.util.function.Supplier import java.util.function.Supplier
final class BuildDelegate { final class BuildDelegate {
static Supplier<BuildDelegate> withDefaults(File projectDir) { static Supplier<BuildDelegate> withDefaults(String buildName, File projectDir) {
return { return {
new BuildDelegate(projectDir).tap { new BuildDelegate(projectDir).tap {
basePackages.convention = [] as Set<String> basePackages.convention = [] as Set<String>
outputDir.convention = PathUtil.resolve(projectDir, Path.of('dist', buildName))
globals.convention = [:] globals.convention = [:]
models.convention = [] as Set<Model> models.convention = [] as Set<Model>
textsDirs.convention = [new File(projectDir, 'texts')] as Set<File> 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() Path.of(base).relativize(Path.of(target)).toString()
} }
static File resolve(File base, Path target) {
base.toPath().resolve(target).toFile()
}
private PathUtil() {} private PathUtil() {}
} }