package io.trygvis.rules.engine.cli; import io.trygvis.rules.engine.Engine; import java.io.File; import java.util.concurrent.Callable; import static picocli.CommandLine.Command; import static picocli.CommandLine.Option; @Command(name = "run") public class RunCommand implements Callable { @Option(names = {"-n", "--name"}) public String name; @Option(names = {"-i", "--input"}) public File input; @Option(names = {"--output-state"}) public File outputState; @Option(names = {"--generated-output"}) public File generatedOutput; @Option(names = {"--agenda-groups"}) public String[] agendaGroups; @Option(names = {"--modules"}, split = ",") public File[] modules; @Override public Integer call() throws Exception { System.out.println("RunCommand.call"); if (agendaGroups == null || agendaGroups.length == 0) { agendaGroups = new String[]{"init", "generate"}; } try (var engine = new Engine(name, input, generatedOutput, agendaGroups, modules)) { engine.io.dump(outputState, engine.session.getFactHandles(), (Object o) -> o.getClass().getName().contains("Wg") || o.getClass().getSimpleName().contains("Machine") || o.getClass().getSimpleName().contains("DnsEntry") || o.getClass().getSimpleName().contains("Ipv4Cidr") || o.getClass().getSimpleName().contains("Ipv4Address") ); System.out.println("RunCommand.call"); } System.out.println("RunCommand.call"); return 0; } }