diff --git a/src/main/java/jvcl/main/Jvcl.java b/src/main/java/jvcl/main/Jvcl.java index b503ee0..483a577 100644 --- a/src/main/java/jvcl/main/Jvcl.java +++ b/src/main/java/jvcl/main/Jvcl.java @@ -19,6 +19,7 @@ public class Jvcl extends BaseMain { @Override protected void run() throws Exception { final JvclOptions options = getOptions(); final JSpec spec = options.getSpec(); + final boolean noExec = options.isNoExec(); if (empty(spec.getAssets())) { err(">>> jvcl: no assets defined in spec"); @@ -34,7 +35,7 @@ public class Jvcl extends BaseMain { final AssetManager assetManager = new AssetManager(toolbox, getOptions().scratchDir()); Arrays.stream(spec.getAssets()).forEach(assetManager::defineAsset); - final OperationEngine opEngine = new OperationEngine(toolbox, assetManager); + final OperationEngine opEngine = new OperationEngine(toolbox, assetManager, noExec); Arrays.stream(spec.getOperations()).forEach(opEngine::perform); final int opCount = spec.getOperations().length; diff --git a/src/main/java/jvcl/model/operation/JOperation.java b/src/main/java/jvcl/model/operation/JOperation.java index 0399961..36c5ff9 100644 --- a/src/main/java/jvcl/model/operation/JOperation.java +++ b/src/main/java/jvcl/model/operation/JOperation.java @@ -31,6 +31,7 @@ public abstract class JOperation { @Getter @Setter private String operation; @Getter @Setter private JsonNode creates; + @Getter @Setter private boolean noExec = false; public String hash(JAsset[] sources) { return hash(sources, null); } diff --git a/src/main/java/jvcl/operation/exec/ConcatExec.java b/src/main/java/jvcl/operation/exec/ConcatExec.java index df9ac51..676a015 100644 --- a/src/main/java/jvcl/operation/exec/ConcatExec.java +++ b/src/main/java/jvcl/operation/exec/ConcatExec.java @@ -14,7 +14,6 @@ import java.util.List; import java.util.Map; import static org.cobbzilla.util.io.FileUtil.abs; -import static org.cobbzilla.util.system.CommandShell.execScript; @Slf4j public class ConcatExec extends ExecBase { @@ -51,7 +50,7 @@ public class ConcatExec extends ExecBase { final String script = renderScript(toolbox, ctx, CONCAT_RECODE_TEMPLATE_1); log.debug("operate: running script: "+script); - final String scriptOutput = execScript(script); + final String scriptOutput = exec(script, op.isNoExec()); log.debug("operate: command output: "+scriptOutput); assetManager.addOperationAsset(output); } diff --git a/src/main/java/jvcl/operation/exec/ExecBase.java b/src/main/java/jvcl/operation/exec/ExecBase.java index 904962b..9c75001 100644 --- a/src/main/java/jvcl/operation/exec/ExecBase.java +++ b/src/main/java/jvcl/operation/exec/ExecBase.java @@ -12,6 +12,7 @@ import java.util.Map; import static org.cobbzilla.util.io.FileUtil.abs; import static org.cobbzilla.util.io.FileUtil.basename; +import static org.cobbzilla.util.system.CommandShell.execScript; @Slf4j public abstract class ExecBase { @@ -36,4 +37,13 @@ public abstract class ExecBase { return defaultOutfile; } } + + public String exec(String script, boolean noExec) { + if (noExec) { + System.out.println(script); + return ""; + } else { + return execScript(script); + } + } } diff --git a/src/main/java/jvcl/operation/exec/KenBurnsExec.java b/src/main/java/jvcl/operation/exec/KenBurnsExec.java index c2d48a0..ad10e1b 100644 --- a/src/main/java/jvcl/operation/exec/KenBurnsExec.java +++ b/src/main/java/jvcl/operation/exec/KenBurnsExec.java @@ -20,7 +20,6 @@ import static java.math.BigDecimal.ZERO; import static jvcl.service.Toolbox.TWO; import static jvcl.service.Toolbox.divideBig; import static org.cobbzilla.util.io.FileUtil.abs; -import static org.cobbzilla.util.system.CommandShell.execScript; @Slf4j public class KenBurnsExec extends ExecBase { @@ -97,7 +96,7 @@ public class KenBurnsExec extends ExecBase { final String script = renderScript(toolbox, ctx, KEN_BURNS_TEMPLATE); log.debug("operate: running script: "+script); - final String scriptOutput = execScript(script); + final String scriptOutput = exec(script, op.isNoExec()); log.debug("operate: command output: "+scriptOutput); assetManager.addOperationAsset(output); } diff --git a/src/main/java/jvcl/operation/exec/LetterboxExec.java b/src/main/java/jvcl/operation/exec/LetterboxExec.java index 3c7e2f2..fb7854c 100644 --- a/src/main/java/jvcl/operation/exec/LetterboxExec.java +++ b/src/main/java/jvcl/operation/exec/LetterboxExec.java @@ -14,7 +14,6 @@ import java.util.Map; import static org.cobbzilla.util.daemon.ZillaRuntime.die; import static org.cobbzilla.util.string.StringUtil.safeShellArg; -import static org.cobbzilla.util.system.CommandShell.execScript; @Slf4j public class LetterboxExec extends SingleOrMultiSourceExecBase { @@ -71,7 +70,7 @@ public class LetterboxExec extends SingleOrMultiSourceExecBase { @@ -59,7 +58,7 @@ public class OverlayExec extends ExecBase { final String script = renderScript(toolbox, ctx, OVERLAY_TEMPLATE); log.debug("operate: running script: "+script); - final String scriptOutput = execScript(script); + final String scriptOutput = exec(script, op.isNoExec()); log.debug("operate: command output: "+scriptOutput); assetManager.addOperationAsset(output); } diff --git a/src/main/java/jvcl/operation/exec/ScaleExec.java b/src/main/java/jvcl/operation/exec/ScaleExec.java index 8ccf5a9..dd6df28 100644 --- a/src/main/java/jvcl/operation/exec/ScaleExec.java +++ b/src/main/java/jvcl/operation/exec/ScaleExec.java @@ -13,8 +13,6 @@ import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; -import static org.cobbzilla.util.system.CommandShell.execScript; - @Slf4j public class ScaleExec extends SingleOrMultiSourceExecBase { @@ -58,7 +56,7 @@ public class ScaleExec extends SingleOrMultiSourceExecBase { final String script = renderScript(toolbox, ctx, SCALE_TEMPLATE); log.debug("operate: running script: "+script); - final String scriptOutput = execScript(script); + final String scriptOutput = exec(script, op.isNoExec()); log.debug("operate: command output: "+scriptOutput); if (output == subOutput) { assetManager.addOperationAsset(output); diff --git a/src/main/java/jvcl/operation/exec/SplitExec.java b/src/main/java/jvcl/operation/exec/SplitExec.java index 1dc85bd..6810689 100644 --- a/src/main/java/jvcl/operation/exec/SplitExec.java +++ b/src/main/java/jvcl/operation/exec/SplitExec.java @@ -17,7 +17,6 @@ import java.util.Map; import static org.cobbzilla.util.daemon.ZillaRuntime.die; import static org.cobbzilla.util.io.FileUtil.abs; import static org.cobbzilla.util.io.FileUtil.mkdirOrDie; -import static org.cobbzilla.util.system.CommandShell.execScript; @Slf4j public class SplitExec extends ExecBase { @@ -76,7 +75,7 @@ public class SplitExec extends ExecBase { final String script = renderScript(toolbox, ctx, SPLIT_TEMPLATE); log.debug("operate: running script: "+script); - final String scriptOutput = execScript(script); + final String scriptOutput = exec(script, op.isNoExec()); log.debug("operate: command output: "+scriptOutput); assetManager.addOperationAssetSlice(output, slice); } diff --git a/src/main/java/jvcl/operation/exec/TrimExec.java b/src/main/java/jvcl/operation/exec/TrimExec.java index 27b83f1..0aae9ef 100644 --- a/src/main/java/jvcl/operation/exec/TrimExec.java +++ b/src/main/java/jvcl/operation/exec/TrimExec.java @@ -13,8 +13,6 @@ import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; -import static org.cobbzilla.util.system.CommandShell.execScript; - @Slf4j public class TrimExec extends SingleOrMultiSourceExecBase { @@ -55,7 +53,7 @@ public class TrimExec extends SingleOrMultiSourceExecBase { final String script = renderScript(toolbox, ctx, TRIM_TEMPLATE); log.debug("operate: running script: "+script); - final String scriptOutput = execScript(script); + final String scriptOutput = exec(script, op.isNoExec()); log.debug("operate: command output: "+scriptOutput); if (output == subOutput) { assetManager.addOperationAsset(output); diff --git a/src/main/java/jvcl/service/OperationEngine.java b/src/main/java/jvcl/service/OperationEngine.java index ef93feb..49946b8 100644 --- a/src/main/java/jvcl/service/OperationEngine.java +++ b/src/main/java/jvcl/service/OperationEngine.java @@ -1,18 +1,21 @@ package jvcl.service; import jvcl.model.operation.JOperation; +import lombok.Getter; public class OperationEngine { private final Toolbox toolbox; private final AssetManager assetManager; + @Getter private final boolean noExec; - public OperationEngine(Toolbox toolbox, AssetManager assetManager) { + public OperationEngine(Toolbox toolbox, AssetManager assetManager, boolean noExec) { this.toolbox = toolbox; this.assetManager = assetManager; + this.noExec = noExec; } public void perform(JOperation op) { - op.getExec().operate(op, toolbox, assetManager); + op.setNoExec(noExec).getExec().operate(op, toolbox, assetManager); } }