diff --git a/archetype/engine-v2/src/main/java/io/helidon/build/archetype/engine/v2/ArchetypeEngineV2.java b/archetype/engine-v2/src/main/java/io/helidon/build/archetype/engine/v2/ArchetypeEngineV2.java index c7f2dfcaf..035659939 100644 --- a/archetype/engine-v2/src/main/java/io/helidon/build/archetype/engine/v2/ArchetypeEngineV2.java +++ b/archetype/engine-v2/src/main/java/io/helidon/build/archetype/engine/v2/ArchetypeEngineV2.java @@ -58,9 +58,15 @@ private ArchetypeEngineV2(Builder builder) { /** * Generate a project. * + * @param externalValues external values + * @param externalDefaults external defaults + * @param directorySupplier directory supplier * @return output directory */ - public Path generate() { + public Path generate(Map externalValues, + Map externalDefaults, + Function directorySupplier) { + Context context = Context.builder() .cwd(cwd) .externalValues(externalValues) @@ -94,6 +100,15 @@ public Path generate() { return directory; } + /** + * Generate a project. + * + * @return output directory + */ + public Path generate() { + return generate(externalValues, externalDefaults, directorySupplier); + } + /** * Create a new builder. * diff --git a/archetype/engine-v2/src/main/java/io/helidon/build/archetype/engine/v2/util/OptimizedWalker.java b/archetype/engine-v2/src/main/java/io/helidon/build/archetype/engine/v2/util/OptimizedWalker.java index 1f78230a2..6faec44d2 100644 --- a/archetype/engine-v2/src/main/java/io/helidon/build/archetype/engine/v2/util/OptimizedWalker.java +++ b/archetype/engine-v2/src/main/java/io/helidon/build/archetype/engine/v2/util/OptimizedWalker.java @@ -25,6 +25,7 @@ import io.helidon.build.archetype.engine.v2.Walker; import io.helidon.build.archetype.engine.v2.ast.Block; +import io.helidon.build.archetype.engine.v2.ast.Condition; import io.helidon.build.archetype.engine.v2.ast.DeclaredBlock; import io.helidon.build.archetype.engine.v2.ast.Invocation; import io.helidon.build.archetype.engine.v2.ast.Node; @@ -116,6 +117,14 @@ public Node.VisitResult postVisitBlock(Block block, Void arg) { } } + @Override + public Node.VisitResult visitCondition(Condition condition, Void arg) { + if (isSkipped(condition.then())) { + return Node.VisitResult.SKIP_SUBTREE; + } + return condition.accept(visitor, this.visitorArg); + } + @Override public Node.VisitResult visitAny(Node node, Void arg) { if (isSkipped(node)) { diff --git a/archetype/engine-v2/src/test/resources/compiler/empty-script/main.xml b/archetype/engine-v2/src/test/resources/compiler/empty-script/main.xml index 7949f717e..e12c53c65 100644 --- a/archetype/engine-v2/src/test/resources/compiler/empty-script/main.xml +++ b/archetype/engine-v2/src/test/resources/compiler/empty-script/main.xml @@ -1,7 +1,7 @@