about summary refs log tree commit homepage
path: root/script/public-inbox-index
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2019-01-31 21:08:48 +0000
committerEric Wong <e@80x24.org>2019-01-31 21:08:48 +0000
commit65323f060a3db731bb9fafa004336eeb4bbb8f00 (patch)
treeceaff52229c942314524f4bcac650e1db175c773 /script/public-inbox-index
parentce4fe8f5144f7555ddd42b6a94ec602e042c6e43 (diff)
parent440b0feaa209e12e4bcb8ef16a95041fce71e7dc (diff)
downloadpublic-inbox-65323f060a3db731bb9fafa004336eeb4bbb8f00.tar.gz
* origin/purge:
  implement public-inbox-purge tool
  v2writable: read epoch on purge
  v2writable: cleanup processes when done
  v2writable: purge ignores non-existent git epoch directories
  v2writable: ->purge returns undef on no-op
  import: purge: reap fast-export process
  hoist out resolve_repo_dir from -index
Diffstat (limited to 'script/public-inbox-index')
-rwxr-xr-xscript/public-inbox-index32
1 files changed, 2 insertions, 30 deletions
diff --git a/script/public-inbox-index b/script/public-inbox-index
index 2ae92757..5adb6e74 100755
--- a/script/public-inbox-index
+++ b/script/public-inbox-index
@@ -9,9 +9,10 @@
 use strict;
 use warnings;
 use Getopt::Long qw(:config gnu_getopt no_ignore_case auto_abbrev);
-use Cwd 'abs_path';
 my $usage = "public-inbox-index REPO_DIR";
 use PublicInbox::Config;
+use PublicInbox::Admin qw(resolve_repo_dir);
+
 my $config = eval { PublicInbox::Config->new } || eval {
         warn "public-inbox unconfigured for serving, indexing anyways...\n";
         undef;
@@ -35,35 +36,6 @@ die "--jobs must be positive\n" if defined $jobs && $jobs < 0;
 
 my @dirs;
 
-sub resolve_repo_dir {
-        my ($cd) = @_;
-        my $prefix = defined $cd ? $cd : './';
-        if (-d $prefix && -f "$prefix/inbox.lock") { # v2
-                return abs_path($prefix);
-        }
-
-        my @cmd = qw(git rev-parse --git-dir);
-        my $cmd = join(' ', @cmd);
-        my $pid = open my $fh, '-|';
-        defined $pid or die "forking $cmd failed: $!\n";
-        if ($pid == 0) {
-                if (defined $cd) {
-                        chdir $cd or die "chdir $cd failed: $!\n";
-                }
-                exec @cmd;
-                die "Failed to exec $cmd: $!\n";
-        } else {
-                my $dir = eval {
-                        local $/;
-                        <$fh>;
-                };
-                close $fh or die "error in $cmd: $!\n";
-                chomp $dir;
-                return abs_path($cd) if ($dir eq '.' && defined $cd);
-                abs_path($dir);
-        }
-}
-
 if (@ARGV) {
         @dirs = map { resolve_repo_dir($_) } @ARGV;
 } else {