Better convention for outputDir.
This commit is contained in:
parent
13b22b1afa
commit
5975f5110b
@ -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)
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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>
|
||||||
|
@ -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() {}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user