X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FConfig.pm;h=d91c28a91ab15e014e9db0e45b38091fe5bb8517;hb=67e53d0875a7efcb958fb9680ea87216adaf06cc;hp=4078585a0e28186fa51e4acb4f79aca56b5e706c;hpb=cf0a2370a57fe49d0fca149409f98d2907efeb15;p=public-inbox.git diff --git a/lib/PublicInbox/Config.pm b/lib/PublicInbox/Config.pm index 4078585a..d91c28a9 100644 --- a/lib/PublicInbox/Config.pm +++ b/lib/PublicInbox/Config.pm @@ -1,9 +1,11 @@ # Copyright (C) 2014, Eric Wong and all contributors # License: AGPLv3 or later (https://www.gnu.org/licenses/agpl-3.0.txt) package PublicInbox::Config; +use strict; +use warnings; # returns key-value pairs of config directives in a hash -sub dump { +sub new { my ($class, $file) = @_; local $ENV{GIT_CONFIG} = $file; @@ -12,6 +14,26 @@ sub dump { $? == 0 or die "git config -l failed: $?\n"; chomp @cfg; my %rv = map { split(/=/, $_, 2) } @cfg; + bless \%rv, $class; +} + +sub lookup { + my ($self, $recipient) = @_; + my $addr = lc($recipient); + my $pfx; + + foreach my $k (keys %$self) { + $k =~ /\A(publicinbox\.[A-Z0-9a-z-]+)\.address\z/ or next; + (lc($self->{$k}) eq $addr) or next; + $pfx = $1; + last; + } + + defined $pfx or return; + + my %rv = map { + $_ => $self->{"$pfx.$_"} + } (qw(mainrepo failrepo description address)); \%rv; }