From 594ed8ba7d172118c77c0ce4560aefa198e694ae Mon Sep 17 00:00:00 2001 From: JesseBrault0709 <62299747+JesseBrault0709@users.noreply.github.com> Date: Sun, 14 May 2023 16:17:23 +0200 Subject: [PATCH] Deleted BuildScriptRunner and its implementation. --- ...BuildScriptBasedStaticSiteGenerator.groovy | 27 ++++----- .../ssg/buildscript/BuildScriptRunner.groovy | 51 ----------------- .../SimpleBuildScriptRunner.groovy | 55 ------------------- ...ScriptBasedStaticSiteGeneratorTests.groovy | 6 +- .../ssg/AbstractBuildCommand.groovy | 4 +- 5 files changed, 17 insertions(+), 126 deletions(-) delete mode 100644 api/src/main/groovy/com/jessebrault/ssg/buildscript/BuildScriptRunner.groovy delete mode 100644 api/src/main/groovy/com/jessebrault/ssg/buildscript/SimpleBuildScriptRunner.groovy diff --git a/api/src/main/groovy/com/jessebrault/ssg/BuildScriptBasedStaticSiteGenerator.groovy b/api/src/main/groovy/com/jessebrault/ssg/BuildScriptBasedStaticSiteGenerator.groovy index 7e8414c..63ed806 100644 --- a/api/src/main/groovy/com/jessebrault/ssg/BuildScriptBasedStaticSiteGenerator.groovy +++ b/api/src/main/groovy/com/jessebrault/ssg/BuildScriptBasedStaticSiteGenerator.groovy @@ -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 configuratorFactories + @Nullable private final File buildScript private final Collection buildSrcDirs private final Map scriptArgs - private final Collection builds = [] private boolean ranBuildScript = false BuildScriptBasedStaticSiteGenerator( - BuildScriptRunner buildScriptRunner, - BuildScriptConfiguratorFactory configuratorFactory, + Collection configuratorFactories = [], @Nullable File buildScript = null, Collection buildSrcDirs = [], Map 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 { diff --git a/api/src/main/groovy/com/jessebrault/ssg/buildscript/BuildScriptRunner.groovy b/api/src/main/groovy/com/jessebrault/ssg/buildscript/BuildScriptRunner.groovy deleted file mode 100644 index a5fdfa0..0000000 --- a/api/src/main/groovy/com/jessebrault/ssg/buildscript/BuildScriptRunner.groovy +++ /dev/null @@ -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 runBuildScript( - String scriptName, - URL scriptBaseDirUrl, - Collection otherUrls, - Map binding, - Consumer configureBuildScript - ) - - Collection runBuildScript( - @DelegatesTo(value = BuildScriptBase, strategy = Closure.DELEGATE_FIRST) - @ClosureParams(value = SimpleType, options = 'com.jessebrault.ssg.buildscript.BuildScriptBase') - Closure scriptBody - ) - - default Collection runBuildScript( - String scriptName, - URL scriptBaseDirUrl, - Collection otherUrls, - Map binding - ) { - this.runBuildScript(scriptName, scriptBaseDirUrl, otherUrls, binding) { } - } - - default Collection runBuildScript( - String scriptName, - URL scriptBaseDirUrl, - Collection otherUrls - ) { - this.runBuildScript(scriptName, scriptBaseDirUrl, otherUrls, [:]) { } - } - - default Collection runBuildScript( - String scriptName, - URL scriptBaseDirUrl - ) { - this.runBuildScript(scriptName, scriptBaseDirUrl, [], [:]) { } - } - -} diff --git a/api/src/main/groovy/com/jessebrault/ssg/buildscript/SimpleBuildScriptRunner.groovy b/api/src/main/groovy/com/jessebrault/ssg/buildscript/SimpleBuildScriptRunner.groovy deleted file mode 100644 index dfe9186..0000000 --- a/api/src/main/groovy/com/jessebrault/ssg/buildscript/SimpleBuildScriptRunner.groovy +++ /dev/null @@ -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 runBuildScript( - String scriptName, - URL scriptBaseDirUrl, - Collection otherUrls, - Map binding, - Consumer 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 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) - } - -} diff --git a/api/src/test/groovy/com/jessebrault/ssg/BuildScriptBasedStaticSiteGeneratorTests.groovy b/api/src/test/groovy/com/jessebrault/ssg/BuildScriptBasedStaticSiteGeneratorTests.groovy index 70fe50a..ebb222f 100644 --- a/api/src/test/groovy/com/jessebrault/ssg/BuildScriptBasedStaticSiteGeneratorTests.groovy +++ b/api/src/test/groovy/com/jessebrault/ssg/BuildScriptBasedStaticSiteGeneratorTests.groovy @@ -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 get() { return { } } - }, + }], buildScript, [], [sourceDir: sourceDir] diff --git a/cli/src/main/groovy/com/jessebrault/ssg/AbstractBuildCommand.groovy b/cli/src/main/groovy/com/jessebrault/ssg/AbstractBuildCommand.groovy index ec50665..332ebc2 100644 --- a/cli/src/main/groovy/com/jessebrault/ssg/AbstractBuildCommand.groovy +++ b/cli/src/main/groovy/com/jessebrault/ssg/AbstractBuildCommand.groovy @@ -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,