Deleted BuildScriptRunner and its implementation.
This commit is contained in:
parent
d73f2ba521
commit
594ed8ba7d
@ -2,7 +2,7 @@ package com.jessebrault.ssg
|
||||
|
||||
import com.jessebrault.ssg.buildscript.Build
|
||||
import com.jessebrault.ssg.buildscript.BuildScriptConfiguratorFactory
|
||||
import com.jessebrault.ssg.buildscript.BuildScriptRunner
|
||||
import com.jessebrault.ssg.buildscript.BuildScripts
|
||||
import com.jessebrault.ssg.util.Diagnostic
|
||||
import org.jetbrains.annotations.Nullable
|
||||
import org.slf4j.Logger
|
||||
@ -18,25 +18,22 @@ final class BuildScriptBasedStaticSiteGenerator implements StaticSiteGenerator {
|
||||
private static final Marker enter = MarkerFactory.getMarker('enter')
|
||||
private static final Marker exit = MarkerFactory.getMarker('exit')
|
||||
|
||||
private final BuildScriptRunner buildScriptRunner
|
||||
private final BuildScriptConfiguratorFactory configuratorFactory
|
||||
private final Collection<BuildScriptConfiguratorFactory> configuratorFactories
|
||||
@Nullable
|
||||
private final File buildScript
|
||||
private final Collection<File> buildSrcDirs
|
||||
private final Map<String, Object> scriptArgs
|
||||
|
||||
private final Collection<Build> builds = []
|
||||
|
||||
private boolean ranBuildScript = false
|
||||
|
||||
BuildScriptBasedStaticSiteGenerator(
|
||||
BuildScriptRunner buildScriptRunner,
|
||||
BuildScriptConfiguratorFactory configuratorFactory,
|
||||
Collection<BuildScriptConfiguratorFactory> configuratorFactories = [],
|
||||
@Nullable File buildScript = null,
|
||||
Collection<File> buildSrcDirs = [],
|
||||
Map<String, Object> scriptArgs = [:]
|
||||
) {
|
||||
this.buildScriptRunner = buildScriptRunner
|
||||
this.configuratorFactory = configuratorFactory
|
||||
this.configuratorFactories = configuratorFactories
|
||||
this.buildScript = buildScript
|
||||
this.buildSrcDirs = buildSrcDirs
|
||||
this.scriptArgs = scriptArgs
|
||||
@ -47,19 +44,23 @@ final class BuildScriptBasedStaticSiteGenerator implements StaticSiteGenerator {
|
||||
|
||||
if (this.buildScript == null) {
|
||||
logger.info('no specified build script; using defaults')
|
||||
def result = this.buildScriptRunner.runBuildScript {
|
||||
this.configuratorFactory.get().accept(it)
|
||||
def result = BuildScripts.runBuildScript { base ->
|
||||
this.configuratorFactories.each {
|
||||
it.get().accept(base)
|
||||
}
|
||||
}
|
||||
this.builds.addAll(result)
|
||||
} else if (this.buildScript.exists() && this.buildScript.isFile()) {
|
||||
logger.info('running buildScript: {}', this.buildScript)
|
||||
def result = this.buildScriptRunner.runBuildScript(
|
||||
def result = BuildScripts.runBuildScript(
|
||||
this.buildScript.name,
|
||||
this.buildScript.parentFile.toURI().toURL(),
|
||||
this.buildSrcDirs.collect { it.toURI().toURL() },
|
||||
[args: this.scriptArgs]
|
||||
) {
|
||||
this.configuratorFactory.get().accept(it)
|
||||
) { base ->
|
||||
this.configuratorFactories.each {
|
||||
it.get().accept(base)
|
||||
}
|
||||
}
|
||||
this.builds.addAll(result)
|
||||
} else {
|
||||
|
@ -1,51 +0,0 @@
|
||||
package com.jessebrault.ssg.buildscript
|
||||
|
||||
import groovy.transform.stc.ClosureParams
|
||||
import groovy.transform.stc.SimpleType
|
||||
|
||||
import java.util.function.Consumer
|
||||
|
||||
/**
|
||||
* TODO: get rid of this, split it into two different classes/util functions (BuildScripts?)
|
||||
*/
|
||||
interface BuildScriptRunner {
|
||||
|
||||
Collection<Build> runBuildScript(
|
||||
String scriptName,
|
||||
URL scriptBaseDirUrl,
|
||||
Collection<URL> otherUrls,
|
||||
Map<String, Object> binding,
|
||||
Consumer<BuildScriptBase> configureBuildScript
|
||||
)
|
||||
|
||||
Collection<Build> runBuildScript(
|
||||
@DelegatesTo(value = BuildScriptBase, strategy = Closure.DELEGATE_FIRST)
|
||||
@ClosureParams(value = SimpleType, options = 'com.jessebrault.ssg.buildscript.BuildScriptBase')
|
||||
Closure<?> scriptBody
|
||||
)
|
||||
|
||||
default Collection<Build> runBuildScript(
|
||||
String scriptName,
|
||||
URL scriptBaseDirUrl,
|
||||
Collection<URL> otherUrls,
|
||||
Map<String, Object> binding
|
||||
) {
|
||||
this.runBuildScript(scriptName, scriptBaseDirUrl, otherUrls, binding) { }
|
||||
}
|
||||
|
||||
default Collection<Build> runBuildScript(
|
||||
String scriptName,
|
||||
URL scriptBaseDirUrl,
|
||||
Collection<URL> otherUrls
|
||||
) {
|
||||
this.runBuildScript(scriptName, scriptBaseDirUrl, otherUrls, [:]) { }
|
||||
}
|
||||
|
||||
default Collection<Build> runBuildScript(
|
||||
String scriptName,
|
||||
URL scriptBaseDirUrl
|
||||
) {
|
||||
this.runBuildScript(scriptName, scriptBaseDirUrl, [], [:]) { }
|
||||
}
|
||||
|
||||
}
|
@ -1,55 +0,0 @@
|
||||
package com.jessebrault.ssg.buildscript
|
||||
|
||||
import groovy.transform.NullCheck
|
||||
import groovy.transform.stc.ClosureParams
|
||||
import groovy.transform.stc.SimpleType
|
||||
import org.codehaus.groovy.control.CompilerConfiguration
|
||||
import org.jgrapht.traverse.DepthFirstIterator
|
||||
|
||||
import java.util.function.Consumer
|
||||
|
||||
@NullCheck
|
||||
final class SimpleBuildScriptRunner implements BuildScriptRunner {
|
||||
|
||||
@Override
|
||||
Collection<Build> runBuildScript(
|
||||
String scriptName,
|
||||
URL scriptBaseDirUrl,
|
||||
Collection<URL> otherUrls,
|
||||
Map<String, Object> binding,
|
||||
Consumer<BuildScriptBase> configureBuildScript
|
||||
) {
|
||||
def engine = new GroovyScriptEngine([scriptBaseDirUrl, *otherUrls] as URL[])
|
||||
|
||||
engine.config = new CompilerConfiguration().tap {
|
||||
scriptBaseClass = 'com.jessebrault.ssg.buildscript.BuildScriptBase'
|
||||
}
|
||||
|
||||
def buildScript = engine.createScript(scriptName, new Binding(binding))
|
||||
assert buildScript instanceof BuildScriptBase
|
||||
configureBuildScript.accept(buildScript)
|
||||
buildScript.run()
|
||||
BuildSpecUtil.getBuilds(buildScript.buildSpecs)
|
||||
}
|
||||
|
||||
@Override
|
||||
Collection<Build> runBuildScript(
|
||||
@DelegatesTo(value = BuildScriptBase, strategy = Closure.DELEGATE_FIRST)
|
||||
@ClosureParams(value = SimpleType, options = 'com.jessebrault.ssg.buildscript.BuildScriptBase')
|
||||
Closure<?> scriptBody
|
||||
) {
|
||||
def base = new BuildScriptBase() {
|
||||
|
||||
@Override
|
||||
Object run() {
|
||||
scriptBody.delegate = this
|
||||
scriptBody.resolveStrategy = Closure.DELEGATE_FIRST
|
||||
scriptBody.call(this)
|
||||
}
|
||||
|
||||
}
|
||||
base.run()
|
||||
BuildSpecUtil.getBuilds(base.buildSpecs)
|
||||
}
|
||||
|
||||
}
|
@ -2,7 +2,6 @@ package com.jessebrault.ssg
|
||||
|
||||
import com.jessebrault.ssg.buildscript.BuildScriptBase
|
||||
import com.jessebrault.ssg.buildscript.BuildScriptConfiguratorFactory
|
||||
import com.jessebrault.ssg.buildscript.SimpleBuildScriptRunner
|
||||
import com.jessebrault.ssg.util.ResourceUtil
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.slf4j.Logger
|
||||
@ -34,15 +33,14 @@ final class BuildScriptBasedStaticSiteGeneratorTests {
|
||||
}
|
||||
|
||||
def ssg = new BuildScriptBasedStaticSiteGenerator(
|
||||
new SimpleBuildScriptRunner(),
|
||||
new BuildScriptConfiguratorFactory() {
|
||||
[new BuildScriptConfiguratorFactory() {
|
||||
|
||||
@Override
|
||||
Consumer<BuildScriptBase> get() {
|
||||
return { }
|
||||
}
|
||||
|
||||
},
|
||||
}],
|
||||
buildScript,
|
||||
[],
|
||||
[sourceDir: sourceDir]
|
||||
|
@ -1,7 +1,6 @@
|
||||
package com.jessebrault.ssg
|
||||
|
||||
import com.jessebrault.ssg.buildscript.DefaultBuildScriptConfiguratorFactory
|
||||
import com.jessebrault.ssg.buildscript.SimpleBuildScriptRunner
|
||||
import com.jessebrault.ssg.util.Diagnostic
|
||||
import org.apache.logging.log4j.LogManager
|
||||
import org.apache.logging.log4j.Logger
|
||||
@ -52,8 +51,7 @@ abstract class AbstractBuildCommand extends AbstractSubCommand {
|
||||
|
||||
if (this.staticSiteGenerator == null) {
|
||||
this.staticSiteGenerator = new BuildScriptBasedStaticSiteGenerator(
|
||||
new SimpleBuildScriptRunner(),
|
||||
new DefaultBuildScriptConfiguratorFactory(this.baseDir),
|
||||
[new DefaultBuildScriptConfiguratorFactory(this.baseDir)],
|
||||
this.buildScript == new File('ssgBuilds.groovy') || this.buildScript.exists()
|
||||
? new File(this.baseDir, this.buildScript.path)
|
||||
: null,
|
||||
|
Loading…
Reference in New Issue
Block a user