]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/Config.pm
config: use defined-or (//) in a few places
[public-inbox.git] / lib / PublicInbox / Config.pm
index c0e2cc575ec640ff1532edcc16d501660e5e4f28..ae9ad8deef9e910bd89c35388278522b388e47aa 100644 (file)
@@ -19,7 +19,7 @@ sub _array ($) { ref($_[0]) eq 'ARRAY' ? $_[0] : [ $_[0] ] }
 # if keys may be multi-value, the value is an array ref containing all values
 sub new {
        my ($class, $file) = @_;
-       $file = default_file() unless defined($file);
+       $file //= default_file();
        my $self;
        if (ref($file) eq 'SCALAR') { # used by some tests
                open my $fh, '<', $file or die;  # PerlIO::scalar
@@ -136,9 +136,7 @@ sub limiter {
 sub config_dir { $ENV{PI_DIR} // "$ENV{HOME}/.public-inbox" }
 
 sub default_file {
-       my $f = $ENV{PI_CONFIG};
-       return $f if defined $f;
-       config_dir() . '/config';
+       $ENV{PI_CONFIG} // (config_dir() . '/config');
 }
 
 sub config_fh_parse ($$$) {
@@ -369,8 +367,8 @@ sub _fill_code_repo {
        $git;
 }
 
-sub _git_config_bool ($) {
-       my ($val) = @_;
+sub git_bool {
+       my ($val) = $_[-1]; # $_[0] may be $self, or $val
        if ($val =~ /\A(?:false|no|off|[\-\+]?(?:0x)?0+)\z/i) {
                0;
        } elsif ($val =~ /\A(?:true|yes|on|[\-\+]?(?:0x)?[0-9]+)\z/i) {
@@ -386,18 +384,22 @@ sub _fill {
 
        foreach my $k (qw(inboxdir filter newsgroup
                        watch httpbackendmax
-                       replyto feedmax nntpserver indexlevel)) {
+                       replyto feedmax nntpserver
+                       indexlevel indexsequentialshard)) {
                my $v = $self->{"$pfx.$k"};
                $ibx->{$k} = $v if defined $v;
        }
 
        # backwards compatibility:
        $ibx->{inboxdir} //= $self->{"$pfx.mainrepo"};
-
+       if (($ibx->{inboxdir} // '') =~ /\n/s) {
+               warn "E: `$ibx->{inboxdir}' must not contain `\\n'\n";
+               return;
+       }
        foreach my $k (qw(obfuscate)) {
                my $v = $self->{"$pfx.$k"};
                defined $v or next;
-               if (defined(my $bval = _git_config_bool($v))) {
+               if (defined(my $bval = git_bool($v))) {
                        $ibx->{$k} = $bval;
                } else {
                        warn "Ignoring $pfx.$k=$v in config, not boolean\n";