From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-3.5 required=3.0 tests=ALL_TRUSTED,AWL,BAYES_00, RP_MATCHES_RCVD shortcircuit=no autolearn=unavailable version=3.3.2 X-Original-To: meta@public-inbox.org Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 6DBA92055C for ; Sat, 9 Apr 2016 09:15:03 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 1/3] git: add support for qx wrapper Date: Sat, 9 Apr 2016 09:14:55 +0000 Message-Id: <20160409091457.14741-2-e@80x24.org> In-Reply-To: <20160409091457.14741-1-e@80x24.org> References: <20160409091457.14741-1-e@80x24.org> List-Id: This lets us one-line git commands easily like ``, but without having to remember --git-dir or escape arguments. --- lib/PublicInbox/Git.pm | 8 ++++++++ t/git.t | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/lib/PublicInbox/Git.pm b/lib/PublicInbox/Git.pm index 0f92dd9..c406c03 100644 --- a/lib/PublicInbox/Git.pm +++ b/lib/PublicInbox/Git.pm @@ -117,6 +117,14 @@ sub popen { popen_rd(\@cmd); } +sub qx { + my ($self, @cmd) = @_; + my $fh = $self->popen(@cmd); + return <$fh> if wantarray; + local $/; + <$fh> +} + sub cleanup { my ($self) = @_; _destroy($self, qw(in out pid)); diff --git a/t/git.t b/t/git.t index 0f3dbae..d7b20d0 100644 --- a/t/git.t +++ b/t/git.t @@ -129,6 +129,14 @@ if (1) { local $/; is($all, <$fh>, 'entire read matches'); }; + + my $ref = $gcf->qx(qw(cat-file blob), $buf); + is($all, $ref, 'qx read giant single string'); + + my @ref = $gcf->qx(qw(cat-file blob), $buf); + is($all, join('', @ref), 'qx returned array when wanted'); + my $nl = scalar @ref; + ok($nl > 1, "qx returned array length of $nl"); } done_testing(); -- EW