From 5bb78d0e837ed22d374ea2b894de0ee980e272c2 Mon Sep 17 00:00:00 2001 From: forestaa Date: Sat, 4 Jun 2022 23:11:17 +0900 Subject: [PATCH] Fixes #1845, #1210 adds github enterprise remote support --- src/config.ts | 1 + src/git/remotes/factory.ts | 4 ++++ src/git/remotes/github-enterprise.ts | 21 +++++++++++++++++++++ src/git/remotes/github.ts | 2 +- 4 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 src/git/remotes/github-enterprise.ts diff --git a/src/config.ts b/src/config.ts index 389f82ca60a9f..1da90b57a05c5 100644 --- a/src/config.ts +++ b/src/config.ts @@ -239,6 +239,7 @@ export const enum CustomRemoteType { GoogleSource = 'GoogleSource', Gitea = 'Gitea', GitHub = 'GitHub', + GitHubEnterprise = 'GitHubEnterprise', GitLab = 'GitLab', } diff --git a/src/git/remotes/factory.ts b/src/git/remotes/factory.ts index b3e2368879bc3..8f5a38d12ee52 100644 --- a/src/git/remotes/factory.ts +++ b/src/git/remotes/factory.ts @@ -7,6 +7,7 @@ import { CustomRemote } from './custom'; import { GerritRemote } from './gerrit'; import { GiteaRemote } from './gitea'; import { GitHubRemote } from './github'; +import { GithubEnterpriseRemote } from './github-enterprise'; import { GitLabRemote } from './gitlab'; import { GoogleSourceRemote } from './google-source'; import { RemoteProvider } from './provider'; @@ -156,6 +157,9 @@ export class RemoteProviderFactory { return (domain: string, path: string) => new GiteaRemote(domain, path, cfg.protocol, cfg.name, true); case CustomRemoteType.GitHub: return (domain: string, path: string) => new GitHubRemote(domain, path, cfg.protocol, cfg.name, true); + case CustomRemoteType.GitHubEnterprise: + return (domain: string, path: string) => + new GithubEnterpriseRemote(domain, path, cfg.protocol, cfg.name, true); case CustomRemoteType.GitLab: return (domain: string, path: string) => new GitLabRemote(domain, path, cfg.protocol, cfg.name, true); default: diff --git a/src/git/remotes/github-enterprise.ts b/src/git/remotes/github-enterprise.ts new file mode 100644 index 0000000000000..5fab9af20b4f5 --- /dev/null +++ b/src/git/remotes/github-enterprise.ts @@ -0,0 +1,21 @@ +import { GitHubRemote } from './github'; + +const authProvider = Object.freeze({ id: 'github-enterprise', scopes: ['repo', 'read:user', 'user:email'] }); + +export class GithubEnterpriseRemote extends GitHubRemote { + protected override get authProvider(): { id: string; scopes: string[] } { + return authProvider; + } + + constructor(domain: string, path: string, protocol?: string, name?: string, custom: boolean = false) { + super(domain, path, protocol, name, custom); + } + + override get id() { + return 'github-enterprise'; + } + + override get name() { + return this.formatName('GitHub Enterprise'); + } +} diff --git a/src/git/remotes/github.ts b/src/git/remotes/github.ts index c3ae9cce10f34..aa04f99ad803c 100644 --- a/src/git/remotes/github.ts +++ b/src/git/remotes/github.ts @@ -20,7 +20,7 @@ const rangeRegex = /^L(\d+)(?:-L(\d+))?$/; const authProvider = Object.freeze({ id: 'github', scopes: ['repo', 'read:user', 'user:email'] }); export class GitHubRemote extends RichRemoteProvider { - protected get authProvider() { + protected get authProvider(): { id: string; scopes: string[] } { return authProvider; }