This is an automated email from the git hooks/post-receive script.

alexm-guest pushed a commit to branch fallback-for-github-pull-requests
in repository pkg-perl-tools.

commit 410cf68909f7bfff28cae5dfdcabb36c853d2e1c
Author: Alex Muntada <al...@alexm.org>
Date:   Sat Dec 3 04:57:17 2016 +0100

    Add fallback for GitHub pull-requests
---
 lib/Debian/PkgPerl/GitHub.pm | 49 +++++++++++++++++++++++++++++++++++++++++++-
 scripts/forward              |  8 ++++++++
 2 files changed, 56 insertions(+), 1 deletion(-)

diff --git a/lib/Debian/PkgPerl/GitHub.pm b/lib/Debian/PkgPerl/GitHub.pm
index c4d41bd..74375f5 100644
--- a/lib/Debian/PkgPerl/GitHub.pm
+++ b/lib/Debian/PkgPerl/GitHub.pm
@@ -45,6 +45,7 @@ Debian::PkgPerl::GitHub - Help forwarding a bug or a patch to 
GitHub
     );
     print Debian::PkgPerl::GitHub->new(
         message  => $patch_msg,
+        fallback => 0,
     )->forward();
 
 =head1 DESCRIPTION
@@ -72,6 +73,11 @@ use Cwd 'realpath';
 
 Message to be forwarded to an upstream project.
 
+=item * fallback
+
+Enables fallback to forwarding a patch as an issue if pull-request
+fails for any reason. Default is false.
+
 =back
 
 =head3 Environment:
@@ -278,6 +284,46 @@ sub forward_patch_as_pull_request {
     return $issue_url;
 }
 
+=head2 forward_patch_as_ticket()
+
+Fallback to forwarding a patch as a bug.
+
+=head3 Returns:
+
+Issue URL on success, nothing otherwise.
+
+=cut
+
+sub forward_patch_as_ticket {
+    my $self = shift;
+
+    # Do nothing unless fallback is enabled.
+    return unless $self->{fallback};
+
+    my $gh      = $self->{github};
+    my $owner   = $self->{owner};
+    my $repo    = $self->{repo};
+    my $ticket  = $self->{ticket};
+    my $title   = $self->{message}->get_subject();
+    my $comment = $self->{message}->prepare_body();
+
+    $gh->set_default_user_repo( $owner, $repo );
+    my $issue;
+    if ($ticket) {
+        $issue = $gh->issue->issue($ticket);
+        $gh->issue->create_comment( $ticket, { body => $comment } );
+    }
+    else {
+        $issue = $gh->issue->create_issue({
+            title  => $title,
+            body   => $comment,
+            labels => $self->{labels},
+        });
+    }
+
+    return $issue && $issue->{html_url};
+}
+
 =head2 forward_bug_as_issue()
 
 =cut
@@ -320,7 +366,8 @@ sub forward {
     my $self = shift;
 
     my $issue_url = $self->{message}->get_patch()
-        ? $self->forward_patch_as_pull_request()
+        ? eval { $self->forward_patch_as_pull_request() }
+              || $self->forward_patch_as_ticket()
         : $self->forward_bug_as_issue()
         ;
 
diff --git a/scripts/forward b/scripts/forward
index 711da35..8d9af8e 100755
--- a/scripts/forward
+++ b/scripts/forward
@@ -106,6 +106,11 @@ This option sets the e-mail address to forward to. The 
default
 is determined from the C<< resources->bugtracker->mailto >>
 field of F<META> or CPAN RT bug address if that field is not present.
 
+=item B<--fallback>
+
+Enable fallback to forwarding patches as bug reports when pull requests
+fail for any reason. Defaults to false.
+
 =back
 
 =cut
@@ -122,6 +127,7 @@ my $opt_meta_file;
 my $opt_ticket;
 my $opt_use_mail;
 my $opt_mailto;
+my $opt_fallback;
 
 GetOptions(
     'd|dist=s'        => \$opt_dist,
@@ -134,6 +140,7 @@ GetOptions(
     'ticket=s'        => \$opt_ticket,
     'use-mail!'       => \$opt_use_mail,
     'mailto=s'        => \$opt_mailto,
+    'fallback!'       => \$opt_fallback,
 ) or exit 1;
 
 die
@@ -381,6 +388,7 @@ sub submit_github {
     my $gh = Debian::PkgPerl::GitHub->new(
         ticket   => $opt_ticket,
         message  => $message,
+        fallback => $opt_fallback,
     );
 
     my $issue_url = $opt_offline_test ? $gh->test() : $gh->forward();

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-perl/packages/pkg-perl-tools.git

_______________________________________________
Pkg-perl-cvs-commits mailing list
Pkg-perl-cvs-commits@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-perl-cvs-commits

Reply via email to