diff options
author | Eric Wong <normalperson@yhbt.net> | 2014-03-27 19:38:06 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2014-03-28 02:35:21 +0000 |
commit | 67e53d0875a7efcb958fb9680ea87216adaf06cc (patch) | |
tree | 9d0d39852dbd24347976e337dd1af044bafe0cc6 /lib/PublicInbox | |
parent | cf0a2370a57fe49d0fca149409f98d2907efeb15 (diff) | |
download | public-inbox-67e53d0875a7efcb958fb9680ea87216adaf06cc.tar.gz |
Diffstat (limited to 'lib/PublicInbox')
-rw-r--r-- | lib/PublicInbox/Config.pm | 24 |
1 files changed, 23 insertions, 1 deletions
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 <normalperson@yhbt.net> 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; } |