Add pull request helper for specific pull requests

Change-Id: If54ce7e874650b727fc866c4f50759d69464c632
diff --git a/bin/git_gerrit_pull b/bin/git_gerrit_pull
new file mode 100755
index 0000000..f9ef2b8
--- /dev/null
+++ b/bin/git_gerrit_pull
@@ -0,0 +1,125 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Mojo::File 'tempfile';
+use Mojo::UserAgent;
+use Cwd qw();
+
+our @ARGV;
+
+my $url = $ARGV[0];
+
+sub _check {
+  my $cmd = shift;
+  print "\n\n" . 'Do "' . $cmd . '"? (y/n)', "\n";
+
+  my $x = <STDIN>;
+  chomp($x);
+  if ($x eq 'y' || $x eq 'Y') {
+    system $cmd;
+  } else {
+    exit;
+  };
+};
+
+unless ($url ) {
+  print 'git-gerrit-pull https://github.com/KorAP/.../pull/..' . "\n";
+  exit;
+};
+
+_check('git checkout master');
+
+_check('git pull origin master');
+
+$url =~ m!/pull/(\d+?)$!;
+
+my $ua = Mojo::UserAgent->new;
+
+print "Fetch $url...\n";
+
+my $pr = $1;
+my $branch = $ua->get($url)->res->dom->at('.commit-ref.head-ref')->all_text;
+
+_check('git fetch github pull/' . $pr . '/head:' . $branch);
+_check('git checkout ' . $branch);
+_check('git rebase master');
+
+
+my $path = Cwd::abs_path();
+
+# Kustvakt
+if ($path =~ m!Kustvakt/?$!) {
+  _check('cd core && JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-amd64" mvn clean install');
+  _check('cd lite && JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-amd64" mvn clean test');
+  _check('cd full && JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-amd64" mvn clean test');
+}
+
+# KalamarExport-Plugin
+elsif ($path =~ m!KalamarExportPlugin/?$!) {
+  _check('JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-amd64" mvn clean test');
+}
+
+# KorapSRU
+elsif ($path =~ m!KorapSRU/?$!) {
+  _check('JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-amd64" mvn clean test');
+}
+
+# Unknown
+else {
+  print "Unknown directory!\n\n";
+  exit(1);
+};
+
+
+
+_check('git commit --amend --no-edit');
+
+{
+  my $ret = `git log -1 --pretty=%B`;
+  my $newret = '';
+  my $change_id = '';
+  my $first = 1;
+  foreach my $line (split "\n", $ret) {
+    if ($first) {
+      chomp $line;
+      $line .= " (closes #$pr)\n";
+      $first = 0;
+    }
+    elsif ($line =~ /^Change-Id: /) {
+      $change_id = $line;
+      next;
+    };
+    $newret .= $line . "\n";
+  };
+
+  if ($change_id) {
+    $newret .= "\n" . $change_id."\n\n";
+  };
+
+  my $msg_file = tempfile();
+  $msg_file->spurt($newret);
+
+  print "===================================\n";
+  print $newret;
+  print "===================================\n";
+
+  _check('git commit -F ' . $msg_file . ' --amend');
+};
+
+_check('git-gerrit');
+
+_check('git checkout master');
+_check('git branch -D ' . $branch);
+
+print "\n\nEverything done - thank you!\n\n"
+
+__END__
+
+=pod
+
+This script is an alternative to C<import_github_pull_requests>
+that ignores CI results on github and just requires the
+URL of a specific GH pull request to send it through Gerrit.
+The detection paths for the repository specific actions may
+differ. It's probably beneficial to make this dependent on the
+GitHub URL instead of the local repository ...