From 67e53d0875a7efcb958fb9680ea87216adaf06cc Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Thu, 27 Mar 2014 19:38:06 +0000 Subject: config: revamp API and implement lookup --- lib/PublicInbox/Config.pm | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'lib') 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; } -- cgit v1.2.3-24-ge0c7