X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Frhynodge%2Fengine%2FStarter.java;h=bed4935bd6f395680fd1bb16d8e21e038400acfc;hb=ddb2be2da6903b948859076ed522551fb81ae536;hp=d824eb81fd2ebe30c8e2b46fd85794255833957c;hpb=252bc27aca417b31fa27716dfab7e6446d642a7c;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 d824eb8..bed4935 100644 --- a/src/main/java/net/pterodactylus/rhynodge/engine/Starter.java +++ b/src/main/java/net/pterodactylus/rhynodge/engine/Starter.java @@ -18,12 +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.states.StateManager.Directory; +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. @@ -39,17 +44,18 @@ 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(Directory.of(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 chainWatcher = injector.getInstance(ChainWatcher.class); chainWatcher.start(); }