Skip to content

Commit d730c88

Browse files
Copilotalexr00
andcommitted
Improve validation for PR checkout by URL feature
Co-authored-by: alexr00 <38270282+alexr00@users.noreply.github.com>
1 parent 9ad9572 commit d730c88

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

package.nls.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@
197197
"command.pr.focusDescriptionInput.title": "Focus Pull Request Description Review Input",
198198
"command.pr.showDiffSinceLastReview.title": "Show Changes Since Last Review",
199199
"command.pr.showDiffAll.title": "Show All Changes",
200-
"command.pr.checkoutByNumber.title": "Checkout Pull Request by Number",
200+
"command.pr.checkoutByNumber.title": "Checkout Pull Request by Number or URL",
201201
"command.review.openFile.title": "Open File",
202202
"command.review.openLocalFile.title": "Open File",
203203
"command.review.suggestDiff.title": "Suggest Edit",

src/commands.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1477,14 +1477,18 @@ ${contents}
14771477
const prNumber = await vscode.window.showInputBox({
14781478
ignoreFocusOut: true, prompt: vscode.l10n.t('Enter the pull request number or URL'),
14791479
validateInput: (input: string) => {
1480+
const prNumberMatcher = /^#?(\d*)$/;
14801481
const numberMatches = input.match(prNumberMatcher);
14811482
if (numberMatches && (numberMatches.length === 2) && !Number.isNaN(Number(numberMatches[1]))) {
1482-
return undefined; // Valid number
1483+
const num = Number(numberMatches[1]);
1484+
if (num > 0) {
1485+
return undefined; // Valid number
1486+
}
14831487
}
14841488

14851489
const urlMatches = input.match(ISSUE_OR_URL_EXPRESSION);
14861490
const parsed = parseIssueExpressionOutput(urlMatches);
1487-
if (parsed && parsed.issueNumber) {
1491+
if (parsed && parsed.issueNumber && parsed.issueNumber > 0) {
14881492
return undefined; // Valid URL
14891493
}
14901494

@@ -1499,11 +1503,16 @@ ${contents}
14991503
let extractedPrNumber: number;
15001504
const numberMatches = prNumber.match(prNumberMatcher);
15011505
if (numberMatches && (numberMatches.length === 2) && !Number.isNaN(Number(numberMatches[1]))) {
1502-
extractedPrNumber = Number(numberMatches[1]);
1506+
const num = Number(numberMatches[1]);
1507+
if (num > 0) {
1508+
extractedPrNumber = num;
1509+
} else {
1510+
return vscode.window.showErrorMessage(vscode.l10n.t('Invalid pull request number or URL'));
1511+
}
15031512
} else {
15041513
const urlMatches = prNumber.match(ISSUE_OR_URL_EXPRESSION);
15051514
const parsed = parseIssueExpressionOutput(urlMatches);
1506-
if (!parsed || !parsed.issueNumber) {
1515+
if (!parsed || !parsed.issueNumber || parsed.issueNumber <= 0) {
15071516
return vscode.window.showErrorMessage(vscode.l10n.t('Invalid pull request number or URL'));
15081517
}
15091518
extractedPrNumber = parsed.issueNumber;

0 commit comments

Comments
 (0)