Skip to content

Commit bb5bddc

Browse files
authored
Add validation to github enterprise input box (#6651)
* Add validation to github enterprise input box Fixes #6602 * Use input for manually setting enterprise uri
1 parent ba7865f commit bb5bddc

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

src/github/repositoriesManager.ts

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -194,20 +194,32 @@ export class RepositoriesManager extends Disposable {
194194
const yes = vscode.l10n.t('Yes');
195195

196196
if (enterprise) {
197-
const remoteToUse = getEnterpriseUri()?.toString() ?? (enterpriseRemotes.length ? enterpriseRemotes[0].normalizedHost : (unknownRemotes.length ? unknownRemotes[0].normalizedHost : undefined));
197+
let remoteToUse = getEnterpriseUri()?.toString() ?? (enterpriseRemotes.length ? enterpriseRemotes[0].normalizedHost : (unknownRemotes.length ? unknownRemotes[0].normalizedHost : undefined));
198198
if (enterpriseRemotes.length === 0 && unknownRemotes.length === 0) {
199199
Logger.appendLine(`Enterprise login selected, but no possible enterprise remotes discovered (${dotComRemotes.length} .com)`, RepositoriesManager.ID);
200200
}
201201
if (remoteToUse) {
202+
const no = vscode.l10n.t('No, manually set {0}', 'github-enterprise.uri');
202203
const promptResult = await vscode.window.showInformationMessage(vscode.l10n.t('Would you like to set up GitHub Pull Requests and Issues to authenticate with the enterprise server {0}?', remoteToUse),
203-
{ modal: true }, yes, vscode.l10n.t('No, manually set {0}', 'github-enterprise.uri'));
204+
{ modal: true }, yes, no);
204205
if (promptResult === yes) {
205206
await setEnterpriseUri(remoteToUse);
207+
} else if (promptResult === no) {
208+
remoteToUse = undefined;
206209
} else {
207210
return false;
208211
}
209-
} else {
210-
const setEnterpriseUriPrompt = await vscode.window.showInputBox({ placeHolder: vscode.l10n.t('Set a GitHub Enterprise server URL'), ignoreFocusOut: true });
212+
}
213+
if (!remoteToUse) {
214+
const setEnterpriseUriPrompt = await vscode.window.showInputBox({
215+
placeHolder: vscode.l10n.t('Set a GitHub Enterprise server URL'), ignoreFocusOut: true, validateInput: (value) => {
216+
const pattern = /^(?:$|(https?):\/\/(?!github\.com).*)/;
217+
if (!pattern.test(value)) {
218+
return vscode.l10n.t('Please enter a valid GitHub Enterprise server URL. A "github.com" URL is not valid for GitHub Enterprise.');
219+
}
220+
return undefined;
221+
}
222+
});
211223
if (setEnterpriseUriPrompt) {
212224
await setEnterpriseUri(setEnterpriseUriPrompt);
213225
} else {

0 commit comments

Comments
 (0)