]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/LEI.pm
lei blob: add remote external support
[public-inbox.git] / lib / PublicInbox / LEI.pm
index 9cacb1426f38eef7ad4eb3eccc6d1fff8a7cacfd..a94941a995e8ad88b443de1e4ae1b5c607eee988 100644 (file)
@@ -121,7 +121,7 @@ sub index_opt {
 
 my @c_opt = qw(c=s@ C=s@ quiet|q);
 my @lxs_opt = (qw(remote! local! external! include|I=s@ exclude=s@ only=s@
-       import-remote!  no-torsocks torsocks=s),
+       import-remote! no-torsocks torsocks=s),
        PublicInbox::LeiQuery::curl_opt());
 
 # we generate shell completion + help using %CMD and %OPTDESC,
@@ -136,8 +136,8 @@ our %CMD = ( # sorted in order of importance/use:
        import-before! lock=s@ rsyncable alert=s@ mua=s verbose|v+), @c_opt,
        opt_dash('limit|n=i', '[0-9]+') ],
 
-'blob' => [ 'OID', 'display a git blob object, solving if necessary',
-       qw(git-dir=s@ cwd! verbose|v+ oid-a|A=s path-a|a=s path-b|b=s),
+'blob' => [ 'OID', 'show a git blob, reconstructing from mail if necessary',
+       qw(git-dir=s@ cwd! verbose|v+ mail! oid-a|A=s path-a|a=s path-b|b=s),
        @lxs_opt, @c_opt ],
 
 'add-external' => [ 'LOCATION',
@@ -249,7 +249,12 @@ my %OPTDESC = (
                "and\xa0'[]'\x{a0}ranges",
 'verbose|v+' => 'be more verbose',
 'external!' => 'do not use externals',
-'solve!' => 'do not attempt to reconstruct blobs from emails',
+'mail!' => 'do not look in mail storage for OID',
+'cwd!' => 'do not look in git repo of current working directory',
+'oid-a|A=s' => 'pre-image OID',
+'path-a|a=s' => 'pre-image pathname associated with OID',
+'path-b|b=s' => 'post-image pathname associated with OID',
+'git-dir=s@' => 'additional git repository to scan',
 'torsocks=s' => ['VAL|auto|no|yes',
                'whether or not to wrap git and curl commands with torsocks'],
 'no-torsocks' => 'alias for --torsocks=no',
@@ -744,38 +749,6 @@ sub lei_config {
        x_it($self, $?) if $?;
 }
 
-sub lei_init {
-       my ($self, $dir) = @_;
-       my $cfg = _lei_cfg($self, 1);
-       my $cur = $cfg->{'leistore.dir'};
-       $dir //= store_path($self);
-       $dir = rel2abs($self, $dir);
-       my @cur = stat($cur) if defined($cur);
-       $cur = File::Spec->canonpath($cur // $dir);
-       my @dir = stat($dir);
-       my $exists = "# leistore.dir=$cur already initialized" if @dir;
-       if (@cur) {
-               if ($cur eq $dir) {
-                       _lei_store($self, 1)->done;
-                       return qerr($self, $exists);
-               }
-
-               # some folks like symlinks and bind mounts :P
-               if (@dir && "@cur[1,0]" eq "@dir[1,0]") {
-                       lei_config($self, 'leistore.dir', $dir);
-                       _lei_store($self, 1)->done;
-                       return qerr($self, "$exists (as $cur)");
-               }
-               return fail($self, <<"");
-E: leistore.dir=$cur already initialized and it is not $dir
-
-       }
-       lei_config($self, 'leistore.dir', $dir);
-       _lei_store($self, 1)->done;
-       $exists //= "# leistore.dir=$dir newly initialized";
-       return qerr($self, $exists);
-}
-
 sub lei_daemon_pid { puts shift, $$ }
 
 sub lei_daemon_kill {
@@ -818,7 +791,7 @@ sub lei__complete {
                        if (s/[:=].+\z//) { # req/optional args, e.g output|o=i
                        } elsif (s/\+\z//) { # verbose|v+
                        } elsif (s/!\z//) {
-                               # negation: solve! => no-solve|solve
+                               # negation: mail! => no-mail|mail
                                s/([\w\-]+)/$1|no-$1/g
                        }
                        map {