quotebot/lib/BotConfig.pm

51 lines
998 B
Perl

package BotConfig;
use TOML qw/from_toml/;
use MooseX::Singleton;
use FindBin;
use BotConfig::Server;
use BotConfig::Database;
use Data::Dumper;
has env => (
is => 'ro',
default => 'dev',
);
has conf => (
is => 'ro',
default => sub {
my $dir = $FindBin::Bin;
$dir =~ s{/(bin|lib|etc)/?$}{}g;
open(my $fh, "<", $dir . "/etc/" . $_[0]->env . ".toml")
or die "Couldn't open config: " . $dir . "/etc/" . $_[0]->env . ".toml" . " $!";
my $raw = do { local $/; <$fh> };
close($fh);
my ($data, $error) = from_toml($raw);
die "Config error: \n$error" if $error;
my $server = BotConfig::Server->new($data->{server});
my $database = BotConfig::Database->new($data->{database});
return { server => $server, db => $database };
},
lazy => 1,
);
sub server {
my $self = $_[0];
return $self->conf->{server};
}
sub db {
return $_[0]->conf->{db};
}
BEGIN {
}
1;