51 lines
998 B
Perl
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;
|