ba8356f600c3615358ce92d2207ef27018e35fac
[scpubgit/Clifton.git] / lib / App / Clifton / Launcher.pm
1 package App::Clifton::Launcher;
2
3 use IO::Async::Loop;
4 use Log::Contextual qw(set_logger :log);
5 use Log::Contextual::SimpleLogger;
6 use aliased 'App::Clifton::Server';
7 use Moo;
8
9 has config_file => (is => 'ro', required => 1);
10
11 sub run {
12   my ($self) = @_;
13   set_logger(Log::Contextual::SimpleLogger->new({ levels => [ qw(
14     info warn debug
15   ) ] }));
16   my $loop = IO::Async::Loop->new;
17   my $server = Server->new(
18     config_file => $self->config_file,
19     loop => $loop,
20   );
21   $loop->later(sub {
22     $server->reload_config->on_finished(sub {
23       log_info { "Server startup complete" };
24     });
25   });
26   $loop->loop_forever;
27 }
28
29 1;