From 0a762d998bf9fda79faf8616f20cf733cccb9749 Mon Sep 17 00:00:00 2001 From: Benjamin Janssens Date: Tue, 4 Feb 2025 13:34:25 +0100 Subject: [PATCH] refactor(scaffolder): re-add previous signature for getOctokitOptions and make it deprecated Signed-off-by: Benjamin Janssens --- .../report.api.md | 8 +++++ .../src/util.ts | 34 ++++++++++++++++--- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/plugins/scaffolder-backend-module-github/report.api.md b/plugins/scaffolder-backend-module-github/report.api.md index 782846dec7..476e8fde1e 100644 --- a/plugins/scaffolder-backend-module-github/report.api.md +++ b/plugins/scaffolder-backend-module-github/report.api.md @@ -477,10 +477,18 @@ export const createPublishGithubPullRequestAction: ( export function getOctokitOptions(options: { integrations: ScmIntegrationRegistry; credentialsProvider?: GithubCredentialsProvider; + token?: string; host: string; owner?: string; repo?: string; +}): Promise; + +// @public @deprecated +export function getOctokitOptions(options: { + integrations: ScmIntegrationRegistry; + credentialsProvider?: GithubCredentialsProvider; token?: string; + repoUrl: string; }): Promise; // @public diff --git a/plugins/scaffolder-backend-module-github/src/util.ts b/plugins/scaffolder-backend-module-github/src/util.ts index 575ad8c6ed..c25ca99f5f 100644 --- a/plugins/scaffolder-backend-module-github/src/util.ts +++ b/plugins/scaffolder-backend-module-github/src/util.ts @@ -20,32 +20,58 @@ import { GithubCredentialsProvider, ScmIntegrationRegistry, } from '@backstage/integration'; +import { parseRepoUrl } from '@backstage/plugin-scaffolder-node'; import { OctokitOptions } from '@octokit/core/dist-types/types'; const DEFAULT_TIMEOUT_MS = 60_000; /** - * Helper for generating octokit configuration options for given repoUrl. + * Helper for generating octokit configuration options. * If no token is provided, it will attempt to get a token from the credentials provider. * @public */ export async function getOctokitOptions(options: { integrations: ScmIntegrationRegistry; credentialsProvider?: GithubCredentialsProvider; + token?: string; host: string; owner?: string; repo?: string; +}): Promise; + +/** + * Helper for generating octokit configuration options for given repoUrl. + * If no token is provided, it will attempt to get a token from the credentials provider. + * @public + * @deprecated Use options `host`, `owner` and `repo` instead of `repoUrl`. + */ +export async function getOctokitOptions(options: { + integrations: ScmIntegrationRegistry; + credentialsProvider?: GithubCredentialsProvider; token?: string; + repoUrl: string; +}): Promise; + +export async function getOctokitOptions(options: { + integrations: ScmIntegrationRegistry; + credentialsProvider?: GithubCredentialsProvider; + token?: string; + host?: string; + owner?: string; + repo?: string; + repoUrl?: string; }): Promise { - const { integrations, credentialsProvider, host, owner, repo, token } = - options; + const { integrations, credentialsProvider, token, repoUrl } = options; + const { host, owner, repo } = repoUrl + ? parseRepoUrl(repoUrl, integrations) + : options; const requestOptions = { // set timeout to 60 seconds timeout: DEFAULT_TIMEOUT_MS, }; - const integrationConfig = integrations.github.byHost(host)?.config; + const integrationConfig = integrations.github.byHost(host!)?.config; if (!integrationConfig) { throw new InputError(`No integration for host ${host}`);