ADD: first version of plugin
This commit is contained in:
parent
ffdab07ba5
commit
8bf0e6d5e3
80
lib/Mojolicious/Plugin/GitConfig.pm
Normal file
80
lib/Mojolicious/Plugin/GitConfig.pm
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
package Mojolicious::Plugin::GitConfig;
|
||||||
|
|
||||||
|
# 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;
|
||||||
|
|
||||||
|
=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
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
=attr configdata
|
||||||
|
|
||||||
|
attribute holding the configuration data after loading the configuration file/files
|
||||||
|
|
||||||
|
=cut
|
||||||
|
has 'configdata' => undef;
|
||||||
|
|
||||||
|
|
||||||
|
=method register
|
||||||
|
|
||||||
|
method called by Mojolicous while loading this plugin
|
||||||
|
|
||||||
|
@param #1 - the class itself
|
||||||
|
@param #2 - the mojolicious app context
|
||||||
|
@param #3 - the configuration provided by loading the plugin
|
||||||
|
|
||||||
|
=cut
|
||||||
|
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;
|
19
lib/Mojolicious/Plugin/GitConfig/Config.pm
Normal file
19
lib/Mojolicious/Plugin/GitConfig/Config.pm
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
package Mojolicious::Plugin::GitConfig::Config;
|
||||||
|
|
||||||
|
# ABSTRACT: extended Config:GitLike class to use git repository config files
|
||||||
|
use Mojo::Base 'Config::GitLike';
|
||||||
|
|
||||||
|
sub global_file {
|
||||||
|
return "/etc/gitconfig";
|
||||||
|
}
|
||||||
|
|
||||||
|
sub user_file {
|
||||||
|
return $ENV{HOME} . "/.gitconfig";
|
||||||
|
}
|
||||||
|
|
||||||
|
sub dir_file {
|
||||||
|
return ".git/config";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
1;
|
Loading…
Reference in New Issue
Block a user