X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Frhynodge%2Fengine%2FStarter.java;h=2908dddabd913b6d41f0a746721c0be9334a7c26;hb=8aeef90590095a455e2323d70ba8ccae032f4276;hp=7ca75cac51e287b369029179df3192bff2ebf7ef;hpb=addfbc56099ebd7609b79a1f9de1a6659d5441e2;p=rhynodge.git diff --git a/src/main/java/net/pterodactylus/rhynodge/engine/Starter.java b/src/main/java/net/pterodactylus/rhynodge/engine/Starter.java index 7ca75ca..2908ddd 100644 --- a/src/main/java/net/pterodactylus/rhynodge/engine/Starter.java +++ b/src/main/java/net/pterodactylus/rhynodge/engine/Starter.java @@ -18,11 +18,17 @@ package net.pterodactylus.rhynodge.engine; import java.io.IOException; +import java.util.Arrays; import net.pterodactylus.rhynodge.actions.EmailAction; import net.pterodactylus.rhynodge.loader.ChainWatcher; -import net.pterodactylus.rhynodge.states.StateManager; +import net.pterodactylus.rhynodge.loader.ChainWatcher.ChainDirectory; +import net.pterodactylus.rhynodge.states.StateManager.StateDirectory; import net.pterodactylus.util.envopt.Parser; +import net.pterodactylus.util.inject.ObjectBinding; + +import com.google.inject.Guice; +import com.google.inject.Injector; /** * Rhynodge main starter class. @@ -38,18 +44,19 @@ public class Starter { * Command-line arguments */ public static void main(String... arguments) throws IOException { - Options options = Parser.fromSystemEnvironment().parseEnvironment(Options::new); + EmailAction errorEmailAction = + createErrorEmailAction(options.smtpHostname, options.errorEmailSender, options.errorEmailRecipient); - /* create the state manager. */ - StateManager stateManager = new StateManager(options.stateDirectory); - - /* create the engine. */ - Engine engine = new Engine(stateManager, createErrorEmailAction(options.smtpHostname, options.errorEmailSender, options.errorEmailRecipient)); + Injector injector = Guice.createInjector(Arrays.asList( + ObjectBinding.forClass(StateDirectory.class).is(StateDirectory.of(options.stateDirectory)), + ObjectBinding.forClass(ChainDirectory.class).is(ChainDirectory.of(options.chainDirectory)), + ObjectBinding.forClass(EmailAction.class).is(errorEmailAction) + )); /* start a watcher. */ - ChainWatcher chainWatcher = new ChainWatcher(engine, options.chainDirectory); - chainWatcher.start(); + ChainWatcher chainWatcher = injector.getInstance(ChainWatcher.class); + chainWatcher.startAsync().awaitTerminated(); } private static EmailAction createErrorEmailAction(String smtpHostname, String errorEmailSender, String errorEmailRecipient) {