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=c3dfa4005d787f9e9faeb2bc9b823da1ca071105;hpb=0d42e0423dd53ecf969d1229106925cb518abf9c;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 c3dfa40..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. @@ -34,13 +38,46 @@ public class Starter { */ 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(); + } }