48 lines
No EOL
905 B
Perl
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; |