sketch out some service code
[scpubgit/Clifton.git] / lib / App / Clifton / Launcher.pm
diff --git a/lib/App/Clifton/Launcher.pm b/lib/App/Clifton/Launcher.pm
new file mode 100644 (file)
index 0000000..ba8356f
--- /dev/null
@@ -0,0 +1,29 @@
+package App::Clifton::Launcher;
+
+use IO::Async::Loop;
+use Log::Contextual qw(set_logger :log);
+use Log::Contextual::SimpleLogger;
+use aliased 'App::Clifton::Server';
+use Moo;
+
+has config_file => (is => 'ro', required => 1);
+
+sub run {
+  my ($self) = @_;
+  set_logger(Log::Contextual::SimpleLogger->new({ levels => [ qw(
+    info warn debug
+  ) ] }));
+  my $loop = IO::Async::Loop->new;
+  my $server = Server->new(
+    config_file => $self->config_file,
+    loop => $loop,
+  );
+  $loop->later(sub {
+    $server->reload_config->on_finished(sub {
+      log_info { "Server startup complete" };
+    });
+  });
+  $loop->loop_forever;
+}
+
+1;