buildscript classes now use Closure<?> instead of Closure<Void>.

This commit is contained in:
JesseBrault0709 2023-04-26 09:52:06 +02:00
parent 44d4baeb62
commit 306b4bb8d3
5 changed files with 21 additions and 45 deletions

View File

@ -1,6 +1,5 @@
package com.jessebrault.ssg.buildscript
import com.jessebrault.ssg.buildscript.Build.AllBuilds
import com.jessebrault.ssg.buildscript.dsl.AllBuildsDelegate
import com.jessebrault.ssg.buildscript.dsl.BuildDelegate
@ -16,7 +15,7 @@ abstract class BuildScriptBase extends Script {
void build(
@DelegatesTo(value = BuildDelegate, strategy = Closure.DELEGATE_FIRST)
Closure<Void> buildClosure
Closure<?> buildClosure
) {
this.build('build' + this.currentBuildNumber, buildClosure)
}
@ -24,7 +23,7 @@ abstract class BuildScriptBase extends Script {
void build(
String name,
@DelegatesTo(value = BuildDelegate, strategy = Closure.DELEGATE_FIRST)
Closure<Void> buildClosure
Closure<?> buildClosure
) {
def d = new BuildDelegate().tap {
it.name = name
@ -38,7 +37,7 @@ abstract class BuildScriptBase extends Script {
void allBuilds(
@DelegatesTo(value = AllBuildsDelegate, strategy = Closure.DELEGATE_FIRST)
Closure<Void> allBuildsClosure
Closure<?> allBuildsClosure
) {
def d = new AllBuildsDelegate()
allBuildsClosure.setDelegate(d)

View File

@ -27,9 +27,6 @@ final class DefaultBuildScriptConfiguratorFactory implements BuildScriptConfigur
pageTypes << PageTypes.GSP
templateTypes << TemplateTypes.GSP
partTypes << PartTypes.GSP
//noinspection GroovyUnnecessaryReturn
return
}
providers { types ->
@ -59,27 +56,18 @@ final class DefaultBuildScriptConfiguratorFactory implements BuildScriptConfigur
}
it.allTextsProvider += sourceProviders.textsProvider
it.allPartsProvider += sourceProviders.partsProvider
//noinspection GroovyUnnecessaryReturn
return
}
register('pageToHtml', PageToHtmlTaskFactory::new) {
it.pagesProvider += sourceProviders.pagesProvider
it.allTextsProvider += sourceProviders.textsProvider
it.allPartsProvider += sourceProviders.partsProvider
//noinspection GroovyUnnecessaryReturn
return
}
}
}
it.build('default') {
outputDir = new File('build')
//noinspection GroovyUnnecessaryReturn
return
}
}
}

View File

@ -1,14 +1,12 @@
package com.jessebrault.ssg.buildscript
import groovy.transform.stc.ClosureParams
import groovy.transform.stc.SimpleType
import org.jetbrains.annotations.Nullable
import java.util.function.Function
final class OutputDirFunctions {
static final Function<Build, OutputDir> DEFAULT = of { new OutputDir(it.name) }
static final Function<Build, OutputDir> DEFAULT = { Build build -> new OutputDir(build.name) }
static Function<Build, OutputDir> concat(
Function<Build, OutputDir> f0,
@ -17,19 +15,12 @@ final class OutputDirFunctions {
f1 == OutputDirFunctions.DEFAULT ? f0 : f1
}
static Function<Build, OutputDir> of(
@ClosureParams(value = SimpleType, options = 'com.jessebrault.ssg.buildscript.Build')
Closure<OutputDir> closure
) {
closure as Function<Build, OutputDir>
}
static Function<Build, OutputDir> of(File dir) {
of { new OutputDir(dir) }
return { new OutputDir(dir) }
}
static Function<Build, OutputDir> of(@Nullable String path) {
of { new OutputDir(path) }
return { new OutputDir(path) }
}
private OutputDirFunctions() {}

View File

@ -9,11 +9,11 @@ import groovy.transform.stc.SimpleType
abstract class AbstractBuildDelegate<T> {
private final Collection<Closure<Void>> siteSpecClosures = []
private final Collection<Closure<Void>> globalsClosures = []
private final Collection<Closure<Void>> typesClosures = []
private final Collection<Closure<Void>> sourcesClosures = []
private final Collection<Closure<Void>> taskFactoriesClosures = []
private final Collection<Closure<?>> siteSpecClosures = []
private final Collection<Closure<?>> globalsClosures = []
private final Collection<Closure<?>> typesClosures = []
private final Collection<Closure<?>> sourcesClosures = []
private final Collection<Closure<?>> taskFactoriesClosures = []
abstract T getResult()
@ -73,21 +73,21 @@ abstract class AbstractBuildDelegate<T> {
void siteSpec(
@DelegatesTo(value = SiteSpecDelegate, strategy = Closure.DELEGATE_FIRST)
Closure<Void> siteSpecClosure
Closure<?> siteSpecClosure
) {
this.siteSpecClosures << siteSpecClosure
}
void globals(
@DelegatesTo(value = GlobalsDelegate, strategy = Closure.DELEGATE_FIRST)
Closure<Void> globalsClosure
Closure<?> globalsClosure
) {
this.globalsClosures << globalsClosure
}
void types(
@DelegatesTo(value = TypesDelegate, strategy = Closure.DELEGATE_FIRST)
Closure<Void> typesClosure
Closure<?> typesClosure
) {
this.typesClosures << typesClosure
}
@ -95,7 +95,7 @@ abstract class AbstractBuildDelegate<T> {
void providers(
@DelegatesTo(value = SourceProvidersDelegate, strategy = Closure.DELEGATE_FIRST)
@ClosureParams(value = SimpleType, options = 'com.jessebrault.ssg.buildscript.TypesContainer')
Closure<Void> providersClosure
Closure<?> providersClosure
) {
this.sourcesClosures << providersClosure
}
@ -103,7 +103,7 @@ abstract class AbstractBuildDelegate<T> {
void taskFactories(
@DelegatesTo(value = TaskFactoriesDelegate, strategy = Closure.DELEGATE_FIRST)
@ClosureParams(value = SimpleType, options = 'com.jessebrault.ssg.buildscript.SourceProviders')
Closure<Void> taskFactoriesClosure
Closure<?> taskFactoriesClosure
) {
this.taskFactoriesClosures << taskFactoriesClosure
}

View File

@ -2,9 +2,8 @@ package com.jessebrault.ssg.buildscript.dsl
import com.jessebrault.ssg.task.TaskFactory
import com.jessebrault.ssg.task.TaskFactorySpec
import groovy.transform.stc.ClosureParams
import groovy.transform.stc.SecondParam
import java.util.function.Consumer
import java.util.function.Supplier
final class TaskFactoriesDelegate {
@ -25,18 +24,17 @@ final class TaskFactoriesDelegate {
def <T extends TaskFactory> void register(
String name,
Supplier<T> factorySupplier,
@ClosureParams(value = SecondParam.FirstGenericType)
Closure<Void> factoryConfigureClosure
Consumer<T> factoryConfigurator
) {
this.checkNotRegistered(name)
this.specs[name] = new TaskFactorySpec(factorySupplier, [factoryConfigureClosure])
this.specs[name] = new TaskFactorySpec(factorySupplier, [factoryConfigurator as Closure<?>])
}
void configure(String name, Closure<Void> factoryConfigureClosure) {
void configure(String name, Consumer<? extends TaskFactory> factoryConfigureClosure) {
if (!this.specs.containsKey(name)) {
throw new IllegalArgumentException("there is no TaskFactory registered by name ${ name }")
}
this.specs[name].configureClosures << factoryConfigureClosure
this.specs[name].configureClosures << (factoryConfigureClosure as Closure<Void>)
}
Map<String, TaskFactorySpec> getResult() {