|
34 | 34 | import java.io.IOException;
|
35 | 35 | import java.io.UncheckedIOException;
|
36 | 36 | import java.util.ArrayList;
|
| 37 | +import java.util.Arrays; |
37 | 38 | import java.util.List;
|
38 | 39 | import java.util.stream.Collectors;
|
39 | 40 | import java.time.format.DateTimeFormatter;
|
|
42 | 43 |
|
43 | 44 | public class BackportCommand implements CommandHandler {
|
44 | 45 | private void showHelp(PrintWriter reply) {
|
45 |
| - reply.println("Usage: `/backport <repository> [<branch>]`"); |
| 46 | + reply.println("Usage: `/backport <repository> [<branch>]` " + |
| 47 | + "or `/backport [<repository>]:<branch>`"); |
46 | 48 | }
|
47 | 49 |
|
48 | 50 | private void showHelpInPR(PrintWriter reply) {
|
49 |
| - reply.println("Usage: `/backport [disable] <repository> [<branch>]`"); |
| 51 | + reply.println("Usage: `/backport [disable] <repository> [<branch>]` " + |
| 52 | + "or `/backport [disable] [<repository>]:<branch>`"); |
50 | 53 | }
|
51 | 54 |
|
52 | 55 | @Override
|
@@ -91,6 +94,21 @@ public void handle(PullRequestBot bot, PullRequest pr, CensusInstance censusInst
|
91 | 94 | }
|
92 | 95 |
|
93 | 96 | var parts = args.split(" ");
|
| 97 | + |
| 98 | + // Preprocess args to support "repo:branch" argument |
| 99 | + if (parts[0].equals("disable")) { |
| 100 | + if (parts.length == 2 && parts[1].contains(":")) { |
| 101 | + List<String> tempList = new ArrayList<>(); |
| 102 | + tempList.add("disable"); |
| 103 | + tempList.addAll(Arrays.asList(parts[1].split(":"))); |
| 104 | + parts = tempList.toArray(new String[0]); |
| 105 | + } |
| 106 | + } else { |
| 107 | + if (parts.length == 1 && parts[0].contains(":")) { |
| 108 | + parts = parts[0].split(":"); |
| 109 | + } |
| 110 | + } |
| 111 | + |
94 | 112 | boolean argIsValid = parts[0].equals("disable") ? parts.length == 2 || parts.length == 3 : parts.length <= 2;
|
95 | 113 | if (!argIsValid) {
|
96 | 114 | showHelpInPR(reply);
|
@@ -158,6 +176,9 @@ private String generateBackportLabel(String targetRepo, String targetBranchName)
|
158 | 176 |
|
159 | 177 | private HostedRepository getTargetRepo(PullRequestBot bot, String repoName, PrintWriter reply) {
|
160 | 178 | var forge = bot.repo().forge();
|
| 179 | + if (repoName.isEmpty()) { |
| 180 | + repoName = bot.repo().name(); |
| 181 | + } |
161 | 182 | var repoNameArg = repoName.replace("http://", "")
|
162 | 183 | .replace("https://", "")
|
163 | 184 | .replace(forge.hostname() + "/", "");
|
@@ -212,6 +233,11 @@ public void handle(PullRequestBot bot, HostedCommit commit, LimitedCensusInstanc
|
212 | 233 | return;
|
213 | 234 | }
|
214 | 235 |
|
| 236 | + // Preprocess args to support "repo:branch" argument |
| 237 | + if (parts.length == 1 && parts[0].contains(":")) { |
| 238 | + parts = parts[0].split(":"); |
| 239 | + } |
| 240 | + |
215 | 241 | // Get target repo
|
216 | 242 | var targetRepo = getTargetRepo(bot, parts[0], reply);
|
217 | 243 | if (targetRepo == null) {
|
|
0 commit comments