From: Eric Wong Date: Tue, 21 Mar 2023 23:07:18 +0000 (+0000) Subject: admin: hoist out resolve_git_dir X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4873f1e033b5fb1260a3cb9c857c79dce2780983;p=thirdparty%2Fpublic-inbox.git admin: hoist out resolve_git_dir 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. --- diff --git a/lib/PublicInbox/Admin.pm b/lib/PublicInbox/Admin.pm index 11ea8f830..b34f22566 100644 --- a/lib/PublicInbox/Admin.pm +++ b/lib/PublicInbox/Admin.pm @@ -1,10 +1,10 @@ -# Copyright (C) 2019-2021 all contributors +# Copyright (C) all contributors # License: AGPL-3.0+ # 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); }