Mojolicious-Plugin-GitConfig
view release on metacpan or search on metacpan
lib/Mojolicious/Plugin/GitConfig.pm view on Meta::CPAN
package Mojolicious::Plugin::GitConfig;
$Mojolicious::Plugin::GitConfig::VERSION = '1.0';
# ABSTRACT: Mojolicious Plugin for using Config::GitLike as the main configuration provider
use Mojo::Base 'Mojolicious::Plugin';
use Mojolicious::Plugin::GitConfig::Config;
use Config::GitLike;
use Try::Tiny;
has 'configdata' => undef;
sub register {
my $self = shift;
my $app = shift;
my $conf = shift;
# select config file
my $file = $conf->{file} || $ENV{MOJO_CONFIG} || "config";
# if we use the git configuration files we have to do something a bit different
if ($conf->{git})
{
$self->configdata(Mojolicious::Plugin::GitConfig::Config->new(confname=>"config",compatible => 1, cascade => 1));
$self->configdata()->load();
$app->log->info("git configuration files loaded");
}
else
{
try {
$self->configdata(Config::GitLike->load_file($file));
} catch {
$app->log->fatal("could not load configuration file " . $file);
die("could not load configuration file " . $file);
};
}
$app->log->debug(__PACKAGE__ . ": register helper gitconfig");
$app->helper(gitconfig => sub {
shift;
my $params = shift;
$self->configdata();
}
);
};
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
Mojolicious::Plugin::GitConfig - Mojolicious Plugin for using Config::GitLike as the main configuration provider
=head1 VERSION
version 1.0
=head1 DESCRIPTION
This modules uses the Config::GitLike Module to implement the Mojolicious App configuration.
# uses the default git repository configuration files
$self->plugin('GitConfig' => {git=>1});
# uses a given configuration file
$self->plugin('GitConfig' => {file=>"myconfig.conf"});
# uses the default Mojolicious configuration files
$self->plugin('GitConfig');
$self->gitconfig() returns the Config::GitLike class
=head1 ATTRIBUTES
=head2 configdata
( run in 1.018 second using v1.01-cache-2.11-cpan-0d23b851a93 )