--- /dev/null
+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;