From 63283ae1b51203c930332e6887296cb123e5db6c Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Thu, 18 Feb 2021 23:22:22 +0300 Subject: lei convert: mail format conversion sub-command This will make testing IMAP support for other commands easier, as it doesn't write to lei/store at all. Like the pager and MUA, "git credential" is always spawned by script/lei (and not lei-daemon) so it has a controlling terminal for password prompts. v2: fix missing requires, correct test ordering v3: ensure config exists for IMAP auth --- lib/PublicInbox/GitCredential.pm | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'lib/PublicInbox/GitCredential.pm') diff --git a/lib/PublicInbox/GitCredential.pm b/lib/PublicInbox/GitCredential.pm index 9e193029..2d81817c 100644 --- a/lib/PublicInbox/GitCredential.pm +++ b/lib/PublicInbox/GitCredential.pm @@ -4,11 +4,17 @@ package PublicInbox::GitCredential; use strict; use PublicInbox::Spawn qw(popen_rd); -sub run ($$) { - my ($self, $op) = @_; - my ($in_r, $in_w); +sub run ($$;$) { + my ($self, $op, $lei) = @_; + my ($in_r, $in_w, $out_r); + my $cmd = [ qw(git credential), $op ]; pipe($in_r, $in_w) or die "pipe: $!"; - my $out_r = popen_rd([qw(git credential), $op], undef, { 0 => $in_r }); + if ($lei && !$lei->{oneshot}) { # we'll die if disconnected: + pipe($out_r, my $out_w) or die "pipe: $!"; + $lei->send_exec_cmd([ $in_r, $out_w ], $cmd, {}); + } else { + $out_r = popen_rd($cmd, undef, { 0 => $in_r }); + } close $in_r or die "close in_r: $!"; my $out = ''; @@ -41,8 +47,8 @@ sub check_netrc ($) { } sub fill { - my ($self) = @_; - my $out_r = run($self, 'fill'); + my ($self, $lei) = @_; + my $out_r = run($self, 'fill', $lei); while (<$out_r>) { chomp; return if $_ eq ''; -- cgit v1.2.3-24-ge0c7