App-Regather
view release on metacpan or search on metacpan
lib/App/Regather/Config.pm view on Meta::CPAN
=encoding UTF-8
=head1 NAME
App::Regather::Config - config file processing class
=head1 SYNOPSIS
=head1 DESCRIPTION
This is a class to log messages.
=head1 CONSTRUCTOR
=over 4
=item new
Creates a new B<App::Regather::Config> object
=over 4
=item filename =E<gt> config-file-name
Name of the file to parse.
=item cli =E<gt> = delete $_{cli};
Hash with CLI provided config options.
=item logger =E<gt> = delete $_{logger};
App::Regather::Logg object created preliminary.
=item fg =E<gt> 0 | 1
wheather we run in foreground
=item verbose =E<gt> N
verbosity level
=back
=back
=cut
sub new {
my $class = shift;
local %_ = @_;
my $filename = delete $_{filename};
my $cli = delete $_{cli};
my $logger = delete $_{logger};
my $fg = delete $_{fg};
my $verbose = delete $_{verbose};
my $nodes = delete $_{add_nodes};
my $self = $class->SUPER::new(%_);
$self->{logger} = $logger;
$self->{verbose} = $verbose;
$self->get_ldap_config_file;
$self->parse($filename);
if ( defined $cli && ref($cli) eq 'HASH' ) {
while ( my( $k, $v ) = each %{$cli} ) {
$self->add_value($k, $v, new Text::Locus("\noption \"$k\" provided from CLI",1)) ||
exit 1;
}
} elsif ( defined $cli && ref($cli) ne 'HASH' ) {
$self->error("malformed option/s provided from CLI");
exit 1;
}
# set node/s (absent in config file) from arguments if any
if ( defined $nodes ) {
while (my ($key, $val) = each %$nodes) {
next if ! %$val;
while (my ($k, $v) = each %$val) {
# next if $self->is_set($key, $k);
$self->set($key, $k, $v);
}
}
}
$self->commit or return;
$self
}
=head1 METHODS
=over 4
=item get_ldap_config_file
ldap.conf processing (with L<Config::Parser::ldap>) to add options
from it to config object
files searched are:
$ENV{LDAP_CONF}
/usr/local/etc/openldap/ldap.conf
/etc/ldap.conf
/etc/ldap/ldap.conf
/etc/openldap/ldap.conf );
the first one found is used.
=cut
sub get_ldap_config_file {
my $self = shift;
use Config::Parser::ldap;
( run in 1.488 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )