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 )