From ae4fb0e9ba76d6cac4ac7e5428c417ba10dd5d61 Mon Sep 17 00:00:00 2001 From: Gerrit Birkeland Date: Sun, 19 Jan 2020 17:53:59 -0700 Subject: [PATCH] feat: Allow user to set git remote Fixes #1130 --- src/lib/converter/plugins/GitHubPlugin.ts | 11 +++++++---- src/lib/utils/options/declaration.ts | 1 + src/lib/utils/options/sources/typedoc.ts | 5 +++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/lib/converter/plugins/GitHubPlugin.ts b/src/lib/converter/plugins/GitHubPlugin.ts index 813f39542..fed2e2727 100644 --- a/src/lib/converter/plugins/GitHubPlugin.ts +++ b/src/lib/converter/plugins/GitHubPlugin.ts @@ -130,7 +130,7 @@ export class Repository { * @param path The potential repository root. * @returns A new instance of [[Repository]] or undefined. */ - static tryCreateRepository(path: string, gitRevision: string): Repository | undefined { + static tryCreateRepository(path: string, gitRevision: string, gitRemote: string): Repository | undefined { ShellJS.pushd(path); const out = ShellJS.exec('git rev-parse --show-toplevel', {silent: true}); ShellJS.popd(); @@ -139,7 +139,7 @@ export class Repository { return; } - let remotesOutput = ShellJS.exec('git ls-remote --get-url', {silent: true}); + const remotesOutput = ShellJS.exec(`git remote get-url ${gitRemote}`, {silent: true}); let remotes: string[] = (remotesOutput.code === 0) ? remotesOutput.stdout.split('\n') : []; return new Repository(BasePath.normalize(out.stdout.replace('\n', '')), gitRevision, remotes); @@ -163,7 +163,10 @@ export class GitHubPlugin extends ConverterComponent { private ignoredPaths: string[] = []; @BindOption('gitRevision') - gitRevision!: string; + readonly gitRevision!: string; + + @BindOption('gitRemote') + readonly gitRemote!: string; /** * Create a new GitHubHandler instance. @@ -203,7 +206,7 @@ export class GitHubPlugin extends ConverterComponent { } // Try to create a new repository - const repository = Repository.tryCreateRepository(dirName, this.gitRevision); + const repository = Repository.tryCreateRepository(dirName, this.gitRevision, this.gitRemote); if (repository) { this.repositories[repository.path.toLowerCase()] = repository; return repository; diff --git a/src/lib/utils/options/declaration.ts b/src/lib/utils/options/declaration.ts index bfca23816..9d83c8348 100644 --- a/src/lib/utils/options/declaration.ts +++ b/src/lib/utils/options/declaration.ts @@ -68,6 +68,7 @@ export interface TypeDocOptionMap { categoryOrder: string[]; categorizeByGroup: boolean; gitRevision: string; + gitRemote: string; gaID: string; gaSite: string; hideGenerator: boolean; diff --git a/src/lib/utils/options/sources/typedoc.ts b/src/lib/utils/options/sources/typedoc.ts index bd8d83678..77142aedf 100644 --- a/src/lib/utils/options/sources/typedoc.ts +++ b/src/lib/utils/options/sources/typedoc.ts @@ -143,6 +143,11 @@ export function addTypeDocOptions(options: Options) { name: 'gitRevision', help: 'Use specified revision instead of the last revision for linking to GitHub source files.' }); + options.addDeclaration({ + name: 'gitRemote', + help: 'Use the specified remote for linking to GitHub source files.', + defaultValue: 'origin' + }); options.addDeclaration({ name: 'gaID', help: 'Set the Google Analytics tracking ID and activate tracking code.'