quotebot/lib/BotConfig.pm

48 lines
No EOL
905 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 {
open(my $fh, "<", $FindBin::Bin . "/etc/".$_[0]->env.".toml") or die "Couldn't open config: ".$FindBin::Bin . "/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;