blob: 95a20736c43928fed0edc6069b7472724fef596f [file] [log] [blame]
Akron88ddd4a2022-11-08 10:41:35 +01001#!/usr/bin/env perl
2use strict;
3use warnings;
4use Mojo::File 'tempfile';
5use Mojo::UserAgent;
Akron88ddd4a2022-11-08 10:41:35 +01006
7our @ARGV;
8
9my $url = $ARGV[0];
10
11sub _check {
12 my $cmd = shift;
13 print "\n\n" . 'Do "' . $cmd . '"? (y/n)', "\n";
14
15 my $x = <STDIN>;
16 chomp($x);
17 if ($x eq 'y' || $x eq 'Y') {
18 system $cmd;
19 } else {
20 exit;
21 };
22};
23
Akron74994cf2022-11-15 14:28:00 +010024unless ($url) {
Akron88ddd4a2022-11-08 10:41:35 +010025 print 'git-gerrit-pull https://github.com/KorAP/.../pull/..' . "\n";
26 exit;
27};
28
29_check('git checkout master');
30
31_check('git pull origin master');
32
Akron74994cf2022-11-15 14:28:00 +010033$url =~ m!KorAP/([^/]+?)/pull/(\d+?)$!;
Akron88ddd4a2022-11-08 10:41:35 +010034
35my $ua = Mojo::UserAgent->new;
36
37print "Fetch $url...\n";
38
Akron74994cf2022-11-15 14:28:00 +010039my $project = $1;
40my $pr = $2;
Akron88ddd4a2022-11-08 10:41:35 +010041my $branch = $ua->get($url)->res->dom->at('.commit-ref.head-ref')->all_text;
42
43_check('git fetch github pull/' . $pr . '/head:' . $branch);
44_check('git checkout ' . $branch);
45_check('git rebase master');
46
47
Akron88ddd4a2022-11-08 10:41:35 +010048# Kustvakt
Akron74994cf2022-11-15 14:28:00 +010049if ($project =~ m!^Kustvakt$!i) {
Akron70a26692022-11-15 14:04:01 +010050 _check('cd core && JAVA_HOME="/usr/lib/jvm/java-1.11.0-openjdk-amd64" mvn clean install');
51 _check('cd lite && JAVA_HOME="/usr/lib/jvm/java-1.11.0-openjdk-amd64" mvn clean test');
52 _check('cd full && JAVA_HOME="/usr/lib/jvm/java-1.11.0-openjdk-amd64" mvn clean test');
Akron88ddd4a2022-11-08 10:41:35 +010053}
54
55# KalamarExport-Plugin
Akron74994cf2022-11-15 14:28:00 +010056elsif ($project =~ m!^Kalamar-Plugin-Export$!i) {
Akron88ddd4a2022-11-08 10:41:35 +010057 _check('JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-amd64" mvn clean test');
58}
59
60# KorapSRU
Akron74994cf2022-11-15 14:28:00 +010061elsif ($project =~ m!^KorapSRU$!i) {
Akron88ddd4a2022-11-08 10:41:35 +010062 _check('JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-amd64" mvn clean test');
63}
64
Akron74994cf2022-11-15 14:28:00 +010065# Unknown Project
Akron88ddd4a2022-11-08 10:41:35 +010066else {
Akron74994cf2022-11-15 14:28:00 +010067 print "Unknown project $project!\n\n";
Akron88ddd4a2022-11-08 10:41:35 +010068 exit(1);
69};
70
71
72
73_check('git commit --amend --no-edit');
74
75{
76 my $ret = `git log -1 --pretty=%B`;
77 my $newret = '';
78 my $change_id = '';
79 my $first = 1;
80 foreach my $line (split "\n", $ret) {
81 if ($first) {
82 chomp $line;
83 $line .= " (closes #$pr)\n";
84 $first = 0;
85 }
86 elsif ($line =~ /^Change-Id: /) {
87 $change_id = $line;
88 next;
89 };
90 $newret .= $line . "\n";
91 };
92
93 if ($change_id) {
94 $newret .= "\n" . $change_id."\n\n";
95 };
96
97 my $msg_file = tempfile();
98 $msg_file->spurt($newret);
99
100 print "===================================\n";
101 print $newret;
102 print "===================================\n";
103
104 _check('git commit -F ' . $msg_file . ' --amend');
105};
106
107_check('git-gerrit');
108
109_check('git checkout master');
110_check('git branch -D ' . $branch);
111
112print "\n\nEverything done - thank you!\n\n"
113
114__END__
115
116=pod
117
118This script is an alternative to C<import_github_pull_requests>
119that ignores CI results on github and just requires the
120URL of a specific GH pull request to send it through Gerrit.