]> git.ipfire.org Git - thirdparty/public-inbox.git/commitdiff
admin: hoist out resolve_git_dir
authorEric Wong <e@80x24.org>
Tue, 21 Mar 2023 23:07:18 +0000 (23:07 +0000)
committerEric Wong <e@80x24.org>
Sat, 25 Mar 2023 09:37:42 +0000 (09:37 +0000)
We'll be using this for indexing git coderepos, and
switch to Perl 5.12 while we're at it since unicode_strings
doesn't affect this package.

lib/PublicInbox/Admin.pm

index 11ea8f8307c2082ec974d51763df3f5f2983fa8c..b34f225667ffa749c426a5d8db47afd98c28d7ce 100644 (file)
@@ -1,10 +1,10 @@
-# Copyright (C) 2019-2021 all contributors <meta@public-inbox.org>
+# Copyright (C) all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 
 # common stuff for administrative command-line tools
 # Unstable internal API
 package PublicInbox::Admin;
-use strict;
+use v5.12;
 use parent qw(Exporter);
 our @EXPORT_OK = qw(setup_signals);
 use PublicInbox::Config;
@@ -69,13 +69,19 @@ sub resolve_inboxdir {
                        die "`$try' is not a directory\n";
                }
        }
+       my $dir = resolve_git_dir($cd);
+       $$ver = 1 if $ver;
+       $dir;
+}
+
+sub resolve_git_dir {
+       my ($cd) = @_;
        # try v1 bare git dirs
        my $cmd = [ qw(git rev-parse --git-dir) ];
        my $fh = popen_rd($cmd, undef, {-C => $cd});
        my $dir = do { local $/; <$fh> };
-       close $fh or die "error in @$cmd (cwd:${\($cd // '.')}): $!\n";
+       close $fh or die "error in @$cmd (cwd:${\($cd // '.')}): $?\n";
        chomp $dir;
-       $$ver = 1 if $ver;
        rel2abs_collapsed($dir eq '.' ? ($cd // $dir) : $dir);
 }