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.Build
|
||||||
import com.jessebrault.ssg.buildscript.BuildScriptConfiguratorFactory
|
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 com.jessebrault.ssg.util.Diagnostic
|
||||||
import org.jetbrains.annotations.Nullable
|
import org.jetbrains.annotations.Nullable
|
||||||
import org.slf4j.Logger
|
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 enter = MarkerFactory.getMarker('enter')
|
||||||
private static final Marker exit = MarkerFactory.getMarker('exit')
|
private static final Marker exit = MarkerFactory.getMarker('exit')
|
||||||
|
|
||||||
private final BuildScriptRunner buildScriptRunner
|
private final Collection<BuildScriptConfiguratorFactory> configuratorFactories
|
||||||
private final BuildScriptConfiguratorFactory configuratorFactory
|
@Nullable
|
||||||
private final File buildScript
|
private final File buildScript
|
||||||
private final Collection<File> buildSrcDirs
|
private final Collection<File> buildSrcDirs
|
||||||
private final Map<String, Object> scriptArgs
|
private final Map<String, Object> scriptArgs
|
||||||
|
|
||||||
private final Collection<Build> builds = []
|
private final Collection<Build> builds = []
|
||||||
|
|
||||||
private boolean ranBuildScript = false
|
private boolean ranBuildScript = false
|
||||||
|
|
||||||
BuildScriptBasedStaticSiteGenerator(
|
BuildScriptBasedStaticSiteGenerator(
|
||||||
BuildScriptRunner buildScriptRunner,
|
Collection<BuildScriptConfiguratorFactory> configuratorFactories = [],
|
||||||
BuildScriptConfiguratorFactory configuratorFactory,
|
|
||||||
@Nullable File buildScript = null,
|
@Nullable File buildScript = null,
|
||||||
Collection<File> buildSrcDirs = [],
|
Collection<File> buildSrcDirs = [],
|
||||||
Map<String, Object> scriptArgs = [:]
|
Map<String, Object> scriptArgs = [:]
|
||||||
) {
|
) {
|
||||||
this.buildScriptRunner = buildScriptRunner
|
this.configuratorFactories = configuratorFactories
|
||||||
this.configuratorFactory = configuratorFactory
|
|
||||||
this.buildScript = buildScript
|
this.buildScript = buildScript
|
||||||
this.buildSrcDirs = buildSrcDirs
|
this.buildSrcDirs = buildSrcDirs
|
||||||
this.scriptArgs = scriptArgs
|
this.scriptArgs = scriptArgs
|
||||||
@ -47,19 +44,23 @@ final class BuildScriptBasedStaticSiteGenerator implements StaticSiteGenerator {
|
|||||||
|
|
||||||
if (this.buildScript == null) {
|
if (this.buildScript == null) {
|
||||||
logger.info('no specified build script; using defaults')
|
logger.info('no specified build script; using defaults')
|
||||||
def result = this.buildScriptRunner.runBuildScript {
|
def result = BuildScripts.runBuildScript { base ->
|
||||||
this.configuratorFactory.get().accept(it)
|
this.configuratorFactories.each {
|
||||||
|
it.get().accept(base)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
this.builds.addAll(result)
|
this.builds.addAll(result)
|
||||||
} else if (this.buildScript.exists() && this.buildScript.isFile()) {
|
} else if (this.buildScript.exists() && this.buildScript.isFile()) {
|
||||||
logger.info('running buildScript: {}', this.buildScript)
|
logger.info('running buildScript: {}', this.buildScript)
|
||||||
def result = this.buildScriptRunner.runBuildScript(
|
def result = BuildScripts.runBuildScript(
|
||||||
this.buildScript.name,
|
this.buildScript.name,
|
||||||
this.buildScript.parentFile.toURI().toURL(),
|
this.buildScript.parentFile.toURI().toURL(),
|
||||||
this.buildSrcDirs.collect { it.toURI().toURL() },
|
this.buildSrcDirs.collect { it.toURI().toURL() },
|
||||||
[args: this.scriptArgs]
|
[args: this.scriptArgs]
|
||||||
) {
|
) { base ->
|
||||||
this.configuratorFactory.get().accept(it)
|
this.configuratorFactories.each {
|
||||||
|
it.get().accept(base)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
this.builds.addAll(result)
|
this.builds.addAll(result)
|
||||||
} else {
|
} 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.BuildScriptBase
|
||||||
import com.jessebrault.ssg.buildscript.BuildScriptConfiguratorFactory
|
import com.jessebrault.ssg.buildscript.BuildScriptConfiguratorFactory
|
||||||
import com.jessebrault.ssg.buildscript.SimpleBuildScriptRunner
|
|
||||||
import com.jessebrault.ssg.util.ResourceUtil
|
import com.jessebrault.ssg.util.ResourceUtil
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
import org.slf4j.Logger
|
import org.slf4j.Logger
|
||||||
@ -34,15 +33,14 @@ final class BuildScriptBasedStaticSiteGeneratorTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
def ssg = new BuildScriptBasedStaticSiteGenerator(
|
def ssg = new BuildScriptBasedStaticSiteGenerator(
|
||||||
new SimpleBuildScriptRunner(),
|
[new BuildScriptConfiguratorFactory() {
|
||||||
new BuildScriptConfiguratorFactory() {
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
Consumer<BuildScriptBase> get() {
|
Consumer<BuildScriptBase> get() {
|
||||||
return { }
|
return { }
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
}],
|
||||||
buildScript,
|
buildScript,
|
||||||
[],
|
[],
|
||||||
[sourceDir: sourceDir]
|
[sourceDir: sourceDir]
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package com.jessebrault.ssg
|
package com.jessebrault.ssg
|
||||||
|
|
||||||
import com.jessebrault.ssg.buildscript.DefaultBuildScriptConfiguratorFactory
|
import com.jessebrault.ssg.buildscript.DefaultBuildScriptConfiguratorFactory
|
||||||
import com.jessebrault.ssg.buildscript.SimpleBuildScriptRunner
|
|
||||||
import com.jessebrault.ssg.util.Diagnostic
|
import com.jessebrault.ssg.util.Diagnostic
|
||||||
import org.apache.logging.log4j.LogManager
|
import org.apache.logging.log4j.LogManager
|
||||||
import org.apache.logging.log4j.Logger
|
import org.apache.logging.log4j.Logger
|
||||||
@ -52,8 +51,7 @@ abstract class AbstractBuildCommand extends AbstractSubCommand {
|
|||||||
|
|
||||||
if (this.staticSiteGenerator == null) {
|
if (this.staticSiteGenerator == null) {
|
||||||
this.staticSiteGenerator = new BuildScriptBasedStaticSiteGenerator(
|
this.staticSiteGenerator = new BuildScriptBasedStaticSiteGenerator(
|
||||||
new SimpleBuildScriptRunner(),
|
[new DefaultBuildScriptConfiguratorFactory(this.baseDir)],
|
||||||
new DefaultBuildScriptConfiguratorFactory(this.baseDir),
|
|
||||||
this.buildScript == new File('ssgBuilds.groovy') || this.buildScript.exists()
|
this.buildScript == new File('ssgBuilds.groovy') || this.buildScript.exists()
|
||||||
? new File(this.baseDir, this.buildScript.path)
|
? new File(this.baseDir, this.buildScript.path)
|
||||||
: null,
|
: null,
|
||||||
|
Loading…
Reference in New Issue
Block a user