buildscript classes now use Closure<?> instead of Closure<Void>.
This commit is contained in:
parent
44d4baeb62
commit
306b4bb8d3
@ -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)
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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() {}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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() {
|
||||
|
Loading…
Reference in New Issue
Block a user