Fix git-gerrit-pull for new gitHub design
Change-Id: Ice477a2e488afcc9e56b395a90db9424cc591625
diff --git a/bin/git_gerrit_pull b/bin/git_gerrit_pull
index c361e49..645507b 100755
--- a/bin/git_gerrit_pull
+++ b/bin/git_gerrit_pull
@@ -2,8 +2,12 @@
use strict;
use warnings;
use Mojo::File 'tempfile';
+use Mojo::JSON qw'decode_json encode_json';
+use Mojo::ByteStream 'b';
use Mojo::UserAgent;
+$ENV{MOJO_NO_JSON_XS} = 0;
+
our @ARGV;
my $JAVA8_HOME = '/usr/lib/jvm/java-1.8.0-openjdk-amd64';
@@ -56,7 +60,31 @@
my $project = $1;
my $pr = $2;
-my $branch = $ua->get($url)->res->dom->at('.commit-ref.head-ref')->all_text;
+my $pr_html = $ua->get($url)->res->dom;
+my $branch = $pr_html->at('.commit-ref.head-ref');
+
+# Legacy path
+if ($branch) {
+ $branch = $branch->all_text;
+}
+
+# JSON path
+elsif (my $json = $pr_html->at('script[data-target=react-app.embeddedData]')) {
+
+ $json = decode_json(b($json->all_text)->encode->to_string);
+
+ $branch = $json
+ ->{payload}
+ ->{pullRequestsLayoutRoute}
+ ->{pullRequest}
+ ->{headBranch};
+
+};
+
+unless ($branch) {
+ warn 'Unable to retrieve branch name';
+ exit;
+};
_check('git fetch github pull/' . $pr . '/head:' . $branch);
_check('git checkout ' . $branch);