X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Freactor%2Fengine%2FStarter.java;h=0a0941e0a71733d0301744b9cbe49ee3136ea2d3;hb=13a4fe6bece23b3dd561de657cf9bb7ea307e2b6;hp=10497740e8c1f10bb505eb63d162473d819f3e3d;hpb=c8deadfac577735a1cf6bf628bfa0d434e52aad2;p=rhynodge.git diff --git a/src/main/java/net/pterodactylus/reactor/engine/Starter.java b/src/main/java/net/pterodactylus/reactor/engine/Starter.java index 1049774..0a0941e 100644 --- a/src/main/java/net/pterodactylus/reactor/engine/Starter.java +++ b/src/main/java/net/pterodactylus/reactor/engine/Starter.java @@ -18,6 +18,10 @@ package net.pterodactylus.reactor.engine; import net.pterodactylus.reactor.loader.ChainWatcher; +import net.pterodactylus.reactor.states.StateManager; + +import com.lexicalscope.jewel.cli.CliFactory; +import com.lexicalscope.jewel.cli.Option; /** * Reactor main starter class. @@ -26,15 +30,54 @@ import net.pterodactylus.reactor.loader.ChainWatcher; */ public class Starter { + /** + * JVM main entry method. + * + * @param arguments + * Command-line arguments + */ public static void main(String... arguments) { - /* start the engine. */ - Engine engine = new Engine(); - engine.start(); + /* parse command line. */ + Parameters parameters = CliFactory.parseArguments(Parameters.class, arguments); + + /* create the state manager. */ + StateManager stateManager = new StateManager(parameters.getStateDirectory()); + + /* create the engine. */ + Engine engine = new Engine(stateManager); /* start a watcher. */ - ChainWatcher chainWatcher = new ChainWatcher(engine, "/home/bombe/Documents/Workspace/Reactor/src/main/resources/chains/"); + ChainWatcher chainWatcher = new ChainWatcher(engine, parameters.getChainDirectory()); chainWatcher.start(); + + /* start the engine. */ + engine.start(); + } + + /** + * Definition of the command-line parameters. + * + * @author David ‘Bombe’ Roden + */ + private static interface Parameters { + + /** + * Returns the directory to watch for chains. + * + * @return The chain directory + */ + @Option(defaultValue = "chains", shortName = "c", description = "The directory to watch for chains") + String getChainDirectory(); + + /** + * Returns the directory to store states in. + * + * @return The states directory + */ + @Option(defaultValue = "states", shortName = "s", description = "The directory to store states in") + String getStateDirectory(); + } }