renovate 42.19.10 → 42.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/migrate-validate.js +1 -2
- package/dist/config/migrate-validate.js.map +1 -1
- package/dist/config/migration.js +0 -1
- package/dist/config/migration.js.map +1 -1
- package/dist/config/options/index.js +1 -1
- package/dist/config/options/index.js.map +1 -1
- package/dist/instrumentation/index.js +3 -4
- package/dist/instrumentation/index.js.map +1 -1
- package/dist/modules/datasource/crate/index.js +1 -1
- package/dist/modules/datasource/crate/index.js.map +1 -1
- package/dist/modules/datasource/docker/common.js +6 -0
- package/dist/modules/datasource/docker/common.js.map +1 -1
- package/dist/modules/datasource/docker/schema.js +1 -1
- package/dist/modules/datasource/docker/schema.js.map +1 -1
- package/dist/modules/datasource/go/index.js +1 -2
- package/dist/modules/datasource/go/index.js.map +1 -1
- package/dist/modules/datasource/maven/index.js +2 -2
- package/dist/modules/datasource/maven/index.js.map +1 -1
- package/dist/modules/datasource/maven/util.js +2 -2
- package/dist/modules/datasource/maven/util.js.map +1 -1
- package/dist/modules/manager/bazel/artifacts.js +2 -2
- package/dist/modules/manager/bazel/artifacts.js.map +1 -1
- package/dist/modules/manager/maven-wrapper/artifacts.js +2 -2
- package/dist/modules/manager/maven-wrapper/artifacts.js.map +1 -1
- package/dist/modules/manager/npm/extract/common/package-file.js +2 -2
- package/dist/modules/manager/npm/extract/common/package-file.js.map +1 -1
- package/dist/modules/manager/npm/extract/yarn.js +2 -2
- package/dist/modules/manager/npm/extract/yarn.js.map +1 -1
- package/dist/modules/manager/npm/post-update/index.js +14 -18
- package/dist/modules/manager/npm/post-update/index.js.map +1 -1
- package/dist/modules/manager/npm/post-update/npm.js +4 -4
- package/dist/modules/manager/npm/post-update/npm.js.map +1 -1
- package/dist/modules/manager/npm/post-update/pnpm.js +4 -4
- package/dist/modules/manager/npm/post-update/pnpm.js.map +1 -1
- package/dist/modules/manager/npm/post-update/yarn.js +6 -6
- package/dist/modules/manager/npm/post-update/yarn.js.map +1 -1
- package/dist/modules/manager/npm/update/dependency/index.js +3 -4
- package/dist/modules/manager/npm/update/dependency/index.js.map +1 -1
- package/dist/modules/manager/npm/update/dependency/pnpm.js +2 -2
- package/dist/modules/manager/npm/update/dependency/pnpm.js.map +1 -1
- package/dist/modules/manager/npm/update/index.js +1 -0
- package/dist/modules/manager/npm/update/index.js.map +1 -1
- package/dist/modules/manager/npm/update/locked-dependency/common/parent-version.js +8 -8
- package/dist/modules/manager/npm/update/locked-dependency/common/parent-version.js.map +1 -1
- package/dist/modules/manager/npm/update/locked-dependency/package-lock/dep-constraints.js +2 -2
- package/dist/modules/manager/npm/update/locked-dependency/package-lock/dep-constraints.js.map +1 -1
- package/dist/modules/manager/npm/update/locked-dependency/package-lock/index.js +5 -5
- package/dist/modules/manager/npm/update/locked-dependency/package-lock/index.js.map +1 -1
- package/dist/modules/manager/npm/update/locked-dependency/yarn-lock/get-locked.js +4 -4
- package/dist/modules/manager/npm/update/locked-dependency/yarn-lock/get-locked.js.map +1 -1
- package/dist/modules/manager/npm/update/locked-dependency/yarn-lock/index.js +2 -2
- package/dist/modules/manager/npm/update/locked-dependency/yarn-lock/index.js.map +1 -1
- package/dist/modules/manager/npm/update/locked-dependency/yarn-lock/replace.js +2 -2
- package/dist/modules/manager/npm/update/locked-dependency/yarn-lock/replace.js.map +1 -1
- package/dist/modules/manager/npm/update/package-version/index.js +1 -2
- package/dist/modules/manager/npm/update/package-version/index.js.map +1 -1
- package/dist/modules/manager/npm/utils.js +8 -8
- package/dist/modules/manager/npm/utils.js.map +1 -1
- package/dist/modules/platform/azure/azure-helper.js +2 -2
- package/dist/modules/platform/azure/azure-helper.js.map +1 -1
- package/dist/modules/platform/azure/index.js +14 -14
- package/dist/modules/platform/azure/index.js.map +1 -1
- package/dist/modules/platform/bitbucket/comments.js +4 -4
- package/dist/modules/platform/bitbucket/comments.js.map +1 -1
- package/dist/modules/platform/bitbucket/index.js +31 -31
- package/dist/modules/platform/bitbucket/index.js.map +1 -1
- package/dist/modules/platform/bitbucket/utils.js +2 -2
- package/dist/modules/platform/bitbucket/utils.js.map +1 -1
- package/dist/modules/platform/bitbucket-server/index.js +32 -34
- package/dist/modules/platform/bitbucket-server/index.js.map +1 -1
- package/dist/modules/platform/bitbucket-server/utils.js +2 -4
- package/dist/modules/platform/bitbucket-server/utils.js.map +1 -1
- package/dist/modules/platform/codecommit/codecommit-client.js +6 -6
- package/dist/modules/platform/codecommit/codecommit-client.js.map +1 -1
- package/dist/modules/platform/codecommit/index.js +24 -24
- package/dist/modules/platform/codecommit/index.js.map +1 -1
- package/dist/modules/platform/gitea/index.js +4 -4
- package/dist/modules/platform/gitea/index.js.map +1 -1
- package/dist/modules/platform/github/index.js +68 -68
- package/dist/modules/platform/github/index.js.map +1 -1
- package/dist/modules/platform/github/massage-markdown-links.js +2 -2
- package/dist/modules/platform/github/massage-markdown-links.js.map +1 -1
- package/dist/modules/platform/github/pr.js +2 -2
- package/dist/modules/platform/github/pr.js.map +1 -1
- package/dist/modules/platform/github/schema.js +1 -2
- package/dist/modules/platform/github/schema.js.map +1 -1
- package/dist/modules/platform/gitlab/index.js +29 -30
- package/dist/modules/platform/gitlab/index.js.map +1 -1
- package/dist/modules/platform/utils/pr-body.js +7 -3
- package/dist/modules/platform/utils/pr-body.js.map +1 -1
- package/dist/proxy.js +1 -2
- package/dist/proxy.js.map +1 -1
- package/dist/util/cache/package/index.js +2 -2
- package/dist/util/cache/package/index.js.map +1 -1
- package/dist/util/cache/package/namespaces.js +1 -1
- package/dist/util/cache/package/namespaces.js.map +1 -1
- package/dist/util/git/error.js +5 -4
- package/dist/util/git/error.js.map +1 -1
- package/dist/util/git/index.js +10 -12
- package/dist/util/git/index.js.map +1 -1
- package/dist/util/git/private-key.js +2 -0
- package/dist/util/git/private-key.js.map +1 -1
- package/dist/util/http/bitbucket.js +1 -2
- package/dist/util/http/bitbucket.js.map +1 -1
- package/dist/util/http/cache/abstract-http-cache-provider.js +2 -2
- package/dist/util/http/cache/abstract-http-cache-provider.js.map +1 -1
- package/dist/util/http/http.js +1 -1
- package/dist/util/http/http.js.map +1 -1
- package/dist/util/stats.js +1 -1
- package/dist/util/stats.js.map +1 -1
- package/dist/workers/global/config/parse/codespaces.js +1 -2
- package/dist/workers/global/config/parse/codespaces.js.map +1 -1
- package/dist/workers/repository/update/branch/auto-replace.js +4 -2
- package/dist/workers/repository/update/branch/auto-replace.js.map +1 -1
- package/dist/workers/repository/update/branch/automerge.js +4 -1
- package/dist/workers/repository/update/branch/automerge.js.map +1 -1
- package/dist/workers/repository/update/branch/execute-post-upgrade-commands.js +1 -0
- package/dist/workers/repository/update/branch/execute-post-upgrade-commands.js.map +1 -1
- package/dist/workers/repository/update/branch/index.js +16 -8
- package/dist/workers/repository/update/branch/index.js.map +1 -1
- package/package.json +3 -2
- package/renovate-schema.json +3 -3
|
@@ -317,23 +317,23 @@ async function updatePr({ number: prNo, prTitle: title, prBody: body, state, })
|
|
|
317
317
|
}
|
|
318
318
|
}
|
|
319
319
|
// Auto-Merge not supported currently.
|
|
320
|
-
/* v8 ignore
|
|
320
|
+
/* v8 ignore next */
|
|
321
321
|
async function mergePr({ branchName, id: prNo, strategy, }) {
|
|
322
322
|
logger_1.logger.debug(`mergePr(${prNo}, ${branchName})`);
|
|
323
323
|
await client.getPr(`${prNo}`);
|
|
324
324
|
return Promise.resolve(false);
|
|
325
325
|
//
|
|
326
|
-
// /* v8 ignore
|
|
326
|
+
// /* v8 ignore next */
|
|
327
327
|
// if (!prOut) {
|
|
328
328
|
// return false;
|
|
329
|
-
// }
|
|
329
|
+
// }
|
|
330
330
|
// const pReq = prOut.pullRequest;
|
|
331
331
|
// const targets = pReq?.pullRequestTargets;
|
|
332
332
|
//
|
|
333
|
-
// /* v8 ignore
|
|
333
|
+
// /* v8 ignore next */
|
|
334
334
|
// if (!targets) {
|
|
335
335
|
// return false;
|
|
336
|
-
// }
|
|
336
|
+
// }
|
|
337
337
|
//
|
|
338
338
|
// if (strategy === 'rebase') {
|
|
339
339
|
// logger.warn('CodeCommit does not support a "rebase" strategy.');
|
|
@@ -388,7 +388,7 @@ async function mergePr({ branchName, id: prNo, strategy, }) {
|
|
|
388
388
|
// logger.debug({ err }, 'Failed to set the PR as Closed.');
|
|
389
389
|
// return false;
|
|
390
390
|
// }
|
|
391
|
-
}
|
|
391
|
+
}
|
|
392
392
|
async function addReviewers(prNo, reviewers) {
|
|
393
393
|
const numberOfApprovers = reviewers.length;
|
|
394
394
|
const approvalRuleContents = `{"Version":"2018-11-08","Statements": [{"Type": "Approvers","NumberOfApprovalsNeeded":${numberOfApprovers},"ApprovalPoolMembers": ${JSON.stringify(reviewers)}}]}`;
|
|
@@ -398,52 +398,52 @@ async function addReviewers(prNo, reviewers) {
|
|
|
398
398
|
logger_1.logger.debug({ approvalRule }, `Approval Rule Added to PR #${prNo}:`);
|
|
399
399
|
}
|
|
400
400
|
}
|
|
401
|
-
/* v8 ignore
|
|
401
|
+
/* v8 ignore next */
|
|
402
402
|
function addAssignees(iid, assignees) {
|
|
403
403
|
// CodeCommit does not support adding reviewers
|
|
404
404
|
return Promise.resolve();
|
|
405
|
-
}
|
|
406
|
-
/* v8 ignore
|
|
405
|
+
}
|
|
406
|
+
/* v8 ignore next */
|
|
407
407
|
function findIssue(title) {
|
|
408
408
|
// CodeCommit does not have issues
|
|
409
409
|
return Promise.resolve(null);
|
|
410
|
-
}
|
|
411
|
-
/* v8 ignore
|
|
410
|
+
}
|
|
411
|
+
/* v8 ignore next */
|
|
412
412
|
function ensureIssue({ title, }) {
|
|
413
413
|
// CodeCommit does not have issues
|
|
414
414
|
return Promise.resolve(null);
|
|
415
|
-
}
|
|
416
|
-
/* v8 ignore
|
|
415
|
+
}
|
|
416
|
+
/* v8 ignore next */
|
|
417
417
|
function getIssueList() {
|
|
418
418
|
// CodeCommit does not have issues
|
|
419
419
|
return Promise.resolve([]);
|
|
420
|
-
}
|
|
421
|
-
/* v8 ignore
|
|
420
|
+
}
|
|
421
|
+
/* v8 ignore next */
|
|
422
422
|
function ensureIssueClosing(title) {
|
|
423
423
|
// CodeCommit does not have issues
|
|
424
424
|
return Promise.resolve();
|
|
425
|
-
}
|
|
426
|
-
/* v8 ignore
|
|
425
|
+
}
|
|
426
|
+
/* v8 ignore next */
|
|
427
427
|
function deleteLabel(prNumber, label) {
|
|
428
428
|
return Promise.resolve();
|
|
429
|
-
}
|
|
429
|
+
}
|
|
430
430
|
// Returns the combined status for a branch.
|
|
431
|
-
/* v8 ignore
|
|
431
|
+
/* v8 ignore next */
|
|
432
432
|
function getBranchStatus(branchName) {
|
|
433
433
|
logger_1.logger.debug(`getBranchStatus(${branchName})`);
|
|
434
434
|
logger_1.logger.debug('returning branch status yellow, because getBranchStatus isnt supported on aws yet');
|
|
435
435
|
return Promise.resolve('yellow');
|
|
436
|
-
}
|
|
437
|
-
/* v8 ignore
|
|
436
|
+
}
|
|
437
|
+
/* v8 ignore next */
|
|
438
438
|
function getBranchStatusCheck(branchName, context) {
|
|
439
439
|
logger_1.logger.debug(`getBranchStatusCheck(${branchName}, context=${context})`);
|
|
440
440
|
logger_1.logger.debug('returning null, because getBranchStatusCheck is not supported on aws yet');
|
|
441
441
|
return Promise.resolve(null);
|
|
442
|
-
}
|
|
443
|
-
/* v8 ignore
|
|
442
|
+
}
|
|
443
|
+
/* v8 ignore next */
|
|
444
444
|
function setBranchStatus({ branchName, context, description, state, url: targetUrl, }) {
|
|
445
445
|
return Promise.resolve();
|
|
446
|
-
}
|
|
446
|
+
}
|
|
447
447
|
async function ensureComment({ number, topic, content, }) {
|
|
448
448
|
logger_1.logger.debug(`ensureComment(${number}, ${topic}, content)`);
|
|
449
449
|
const header = topic ? `### ${topic}\n\n` : '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/platform/codecommit/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { Buffer } from 'node:buffer';\nimport type {\n GetCommentsForPullRequestOutput,\n ListRepositoriesOutput,\n} from '@aws-sdk/client-codecommit';\nimport { PullRequestStatusEnum } from '@aws-sdk/client-codecommit';\nimport {\n PLATFORM_BAD_CREDENTIALS,\n REPOSITORY_EMPTY,\n REPOSITORY_NOT_FOUND,\n} from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport type { BranchStatus, PrState } from '../../../types';\nimport { coerceArray } from '../../../util/array';\nimport { parseJson } from '../../../util/common';\nimport { getEnv } from '../../../util/env';\nimport * as git from '../../../util/git';\nimport { regEx } from '../../../util/regex';\nimport { sanitize } from '../../../util/sanitize';\nimport type {\n BranchStatusConfig,\n CreatePRConfig,\n EnsureCommentConfig,\n EnsureCommentRemovalConfig,\n EnsureIssueConfig,\n EnsureIssueResult,\n FindPRConfig,\n Issue,\n MergePRConfig,\n PlatformParams,\n PlatformResult,\n Pr,\n RepoParams,\n RepoResult,\n UpdatePrConfig,\n} from '../types';\nimport { getNewBranchName, repoFingerprint } from '../util';\nimport { smartTruncate } from '../utils/pr-body';\nimport * as client from './codecommit-client';\n\nexport interface CodeCommitPr extends Pr {\n body: string;\n destinationCommit: string;\n sourceCommit: string;\n}\n\ninterface Config {\n repository?: string;\n defaultBranch?: string;\n region?: string;\n prList?: CodeCommitPr[];\n}\n\nexport const id = 'codecommit';\n\nlet config: Config = {} as any;\n\nexport async function initPlatform({\n endpoint,\n username,\n password,\n token: awsToken,\n}: PlatformParams): Promise<PlatformResult> {\n const accessKeyId = username;\n const secretAccessKey = password;\n const env = getEnv();\n let region: string | undefined;\n\n if (accessKeyId) {\n env.AWS_ACCESS_KEY_ID = accessKeyId;\n }\n if (secretAccessKey) {\n env.AWS_SECRET_ACCESS_KEY = secretAccessKey;\n }\n if (awsToken) {\n env.AWS_SESSION_TOKEN = awsToken;\n }\n\n if (endpoint) {\n const regionReg = regEx(/.*codecommit\\.(?<region>.+)\\.amazonaws\\.com/);\n const codeCommitMatch = regionReg.exec(endpoint);\n region = codeCommitMatch?.groups?.region;\n if (region) {\n env.AWS_REGION = region;\n } else {\n logger.warn(\"Can't parse region, make sure your endpoint is correct\");\n }\n }\n\n // If any of the below fails, it will throw an exception stopping the program.\n client.buildCodeCommitClient();\n // To check if we have permission to codecommit, throws exception if failed.\n await client.listRepositories();\n\n const platformConfig: PlatformResult = {\n endpoint:\n endpoint ??\n `https://git-codecommit.${env.AWS_REGION ?? 'us-east-1'}.amazonaws.com/`,\n };\n return Promise.resolve(platformConfig);\n}\n\nexport async function initRepo({\n repository,\n endpoint,\n}: RepoParams): Promise<RepoResult> {\n logger.debug(`initRepo(\"${repository}\")`);\n\n config = { repository } as Config;\n\n let repo;\n try {\n repo = await client.getRepositoryInfo(repository);\n } catch (err) {\n logger.error({ err }, 'Could not find repository');\n throw new Error(REPOSITORY_NOT_FOUND);\n }\n\n if (!repo?.repositoryMetadata) {\n logger.error({ repository }, 'Could not find repository');\n throw new Error(REPOSITORY_NOT_FOUND);\n }\n logger.debug({ repositoryDetails: repo }, 'Repository details');\n const metadata = repo.repositoryMetadata;\n\n const url = client.getCodeCommitUrl(metadata, repository);\n try {\n await git.initRepo({\n url,\n });\n } catch (err) {\n logger.debug({ err }, 'Failed to git init');\n throw new Error(PLATFORM_BAD_CREDENTIALS);\n }\n\n if (!metadata.defaultBranch || !metadata.repositoryId) {\n logger.debug('Repo is empty');\n throw new Error(REPOSITORY_EMPTY);\n }\n\n const defaultBranch = metadata.defaultBranch;\n config.defaultBranch = defaultBranch;\n logger.debug(`${repository} default branch = ${defaultBranch}`);\n\n return {\n repoFingerprint: repoFingerprint(metadata.repositoryId, endpoint),\n defaultBranch,\n isFork: false,\n };\n}\n\nexport async function getPrList(): Promise<CodeCommitPr[]> {\n logger.debug('getPrList()');\n\n if (config.prList) {\n return config.prList;\n }\n\n const listPrsResponse = await client.listPullRequests(config.repository!);\n const fetchedPrs: CodeCommitPr[] = [];\n\n if (listPrsResponse && !listPrsResponse.pullRequestIds) {\n return fetchedPrs;\n }\n\n const prIds = coerceArray(listPrsResponse.pullRequestIds);\n\n for (const prId of prIds) {\n const prRes = await client.getPr(prId);\n\n if (!prRes?.pullRequest) {\n continue;\n }\n const prInfo = prRes.pullRequest;\n const pr: CodeCommitPr = {\n targetBranch: prInfo.pullRequestTargets![0].destinationReference!,\n sourceBranch: prInfo.pullRequestTargets![0].sourceReference!,\n destinationCommit: prInfo.pullRequestTargets![0].destinationCommit!,\n sourceCommit: prInfo.pullRequestTargets![0].sourceCommit!,\n state:\n prInfo.pullRequestStatus === PullRequestStatusEnum.OPEN\n ? 'open'\n : 'closed',\n number: Number.parseInt(prId),\n title: prInfo.title!,\n body: prInfo.description!,\n };\n fetchedPrs.push(pr);\n }\n\n config.prList = fetchedPrs;\n\n logger.debug(`Retrieved Pull Requests, count: ${fetchedPrs.length}`);\n return fetchedPrs;\n}\n\nexport async function findPr({\n branchName,\n prTitle,\n state = 'all',\n}: FindPRConfig): Promise<CodeCommitPr | null> {\n let prsFiltered: CodeCommitPr[] = [];\n try {\n const prs = await getPrList();\n const refsHeadBranchName = getNewBranchName(branchName);\n prsFiltered = prs.filter(\n (item) => item.sourceBranch === refsHeadBranchName,\n );\n\n if (prTitle) {\n prsFiltered = prsFiltered.filter(\n (item) => item.title.toUpperCase() === prTitle.toUpperCase(),\n );\n }\n\n switch (state) {\n case 'all':\n break;\n case '!open':\n prsFiltered = prsFiltered.filter((item) => item.state !== 'open');\n break;\n default:\n prsFiltered = prsFiltered.filter((item) => item.state === 'open');\n break;\n }\n } catch (err) {\n logger.error({ err }, 'findPr error');\n }\n if (prsFiltered.length === 0) {\n return null;\n }\n return prsFiltered[0];\n}\n\nexport async function getBranchPr(\n branchName: string,\n): Promise<CodeCommitPr | null> {\n logger.debug(`getBranchPr(${branchName})`);\n const existingPr = await findPr({\n branchName,\n state: 'open',\n });\n return existingPr ? getPr(existingPr.number) : null;\n}\n\nexport async function getPr(\n pullRequestId: number,\n): Promise<CodeCommitPr | null> {\n logger.debug(`getPr(${pullRequestId})`);\n const prRes = await client.getPr(`${pullRequestId}`);\n\n if (!prRes?.pullRequest) {\n return null;\n }\n\n const prInfo = prRes.pullRequest;\n let prState: PrState;\n if (prInfo.pullRequestTargets![0].mergeMetadata?.isMerged) {\n prState = 'merged';\n } else {\n prState =\n prInfo.pullRequestStatus === PullRequestStatusEnum.OPEN\n ? 'open'\n : 'closed';\n }\n\n return {\n sourceBranch: prInfo.pullRequestTargets![0].sourceReference!,\n sourceCommit: prInfo.pullRequestTargets![0].sourceCommit!,\n state: prState,\n number: pullRequestId,\n title: prInfo.title!,\n targetBranch: prInfo.pullRequestTargets![0].destinationReference!,\n destinationCommit: prInfo.pullRequestTargets![0].destinationCommit!,\n body: prInfo.description!,\n };\n}\n\nexport async function getRepos(): Promise<string[]> {\n logger.debug('Autodiscovering AWS CodeCommit repositories');\n\n let reposRes: ListRepositoriesOutput;\n try {\n reposRes = await client.listRepositories();\n //todo do we need pagination? maximum number of repos is 1000 without pagination, also the same for free account\n } catch (error) {\n logger.error({ error }, 'Could not retrieve repositories');\n return [];\n }\n\n const res: string[] = [];\n\n const repoNames = coerceArray(reposRes?.repositories);\n\n for (const repo of repoNames) {\n if (repo.repositoryName) {\n res.push(repo.repositoryName);\n }\n }\n\n return res;\n}\n\nexport function massageMarkdown(input: string): string {\n // Remove any HTML we use\n return input\n .replace(\n 'you tick the rebase/retry checkbox',\n 'PR is renamed to start with \"rebase!\"',\n )\n .replace(\n 'checking the rebase/retry box above',\n 'renaming the PR to start with \"rebase!\"',\n )\n .replace(regEx(/<\\/?summary>/g), '**')\n .replace(regEx(/<\\/?details>/g), '')\n .replace(regEx(`\\n---\\n\\n.*?<!-- rebase-check -->.*?\\n`), '')\n .replace(regEx(/\\]\\(\\.\\.\\/pull\\//g), '](../../pull-requests/')\n .replace(\n regEx(/(?<hiddenComment><!--renovate-(?:debug|config-hash):.*?-->)/g),\n '[//]: # ($<hiddenComment>)',\n );\n}\n\n/**\n * Unsed, no Dashboard\n */\nexport function maxBodyLength(): number {\n return Infinity;\n}\n\nexport async function getJsonFile(\n fileName: string,\n repoName?: string,\n branchOrTag?: string,\n): Promise<any> {\n const raw = await getRawFile(fileName, repoName, branchOrTag);\n return parseJson(raw, fileName);\n}\n\nexport async function getRawFile(\n fileName: string,\n repoName?: string,\n branchOrTag?: string,\n): Promise<string | null> {\n const fileRes = await client.getFile(\n repoName ?? config.repository,\n fileName,\n branchOrTag,\n );\n if (!fileRes?.fileContent) {\n return null;\n }\n const buf = Buffer.from(fileRes.fileContent);\n return buf.toString();\n}\n\nconst AMAZON_MAX_BODY_LENGTH = 10239;\n\nexport async function createPr({\n sourceBranch,\n targetBranch,\n prTitle: title,\n prBody: body,\n}: CreatePRConfig): Promise<CodeCommitPr> {\n const description = smartTruncate(sanitize(body), AMAZON_MAX_BODY_LENGTH);\n\n const prCreateRes = await client.createPr(\n title,\n sanitize(description),\n sourceBranch,\n targetBranch,\n config.repository,\n );\n\n if (\n !prCreateRes.pullRequest?.title ||\n !prCreateRes.pullRequest?.pullRequestId ||\n !prCreateRes.pullRequest?.description ||\n !prCreateRes.pullRequest?.pullRequestTargets?.length\n ) {\n throw new Error('Could not create pr, missing PR info');\n }\n\n return {\n number: Number.parseInt(prCreateRes.pullRequest.pullRequestId),\n state: 'open',\n title: prCreateRes.pullRequest.title,\n sourceBranch,\n targetBranch,\n sourceCommit: prCreateRes.pullRequest.pullRequestTargets[0].sourceCommit!,\n destinationCommit:\n prCreateRes.pullRequest.pullRequestTargets[0].destinationCommit!,\n sourceRepo: config.repository,\n body: prCreateRes.pullRequest.description,\n };\n}\n\nexport async function updatePr({\n number: prNo,\n prTitle: title,\n prBody: body,\n state,\n}: UpdatePrConfig): Promise<void> {\n logger.debug(`updatePr(${prNo}, ${title}, body)`);\n\n let cachedPr: CodeCommitPr | undefined = undefined;\n const cachedPrs = config.prList ?? [];\n for (const p of cachedPrs) {\n if (p.number === prNo) {\n cachedPr = p;\n }\n }\n\n if (body && cachedPr?.body !== body) {\n await client.updatePrDescription(\n `${prNo}`,\n smartTruncate(sanitize(body), AMAZON_MAX_BODY_LENGTH),\n );\n }\n\n if (title && cachedPr?.title !== title) {\n await client.updatePrTitle(`${prNo}`, title);\n }\n\n const prStatusInput =\n state === 'closed'\n ? PullRequestStatusEnum.CLOSED\n : PullRequestStatusEnum.OPEN;\n if (cachedPr?.state !== prStatusInput) {\n try {\n await client.updatePrStatus(`${prNo}`, prStatusInput);\n } catch {\n // safety check\n // do nothing, it's ok to fail sometimes when trying to update from open to open or from closed to closed.\n }\n }\n}\n\n// Auto-Merge not supported currently.\n/* v8 ignore start */\nexport async function mergePr({\n branchName,\n id: prNo,\n strategy,\n}: MergePRConfig): Promise<boolean> {\n logger.debug(`mergePr(${prNo}, ${branchName!})`);\n await client.getPr(`${prNo}`);\n return Promise.resolve(false);\n //\n // /* v8 ignore start */\n // if (!prOut) {\n // return false;\n // } /* v8 ignore stop */\n // const pReq = prOut.pullRequest;\n // const targets = pReq?.pullRequestTargets;\n //\n // /* v8 ignore start */\n // if (!targets) {\n // return false;\n // } /* v8 ignore stop */\n //\n // if (strategy === 'rebase') {\n // logger.warn('CodeCommit does not support a \"rebase\" strategy.');\n // return false;\n // }\n //\n // try {\n // if (strategy === 'auto' || strategy === 'squash') {\n // await client.squashMerge(\n // targets[0].repositoryName!,\n // targets[0].sourceReference!,\n // targets[0].destinationReference!,\n // pReq?.title\n // );\n // } else if (strategy === 'fast-forward') {\n // await client.fastForwardMerge(\n // targets[0].repositoryName!,\n // targets[0].sourceReference!,\n // targets[0].destinationReference!\n // );\n // } else {\n // logger.debug(`unsupported strategy`);\n // return false;\n // }\n // } catch (err) {\n // logger.debug({ err }, `PR merge error`);\n // logger.info({ pr: prNo }, 'PR automerge failed');\n // return false;\n // }\n //\n // logger.trace(`Updating PR ${prNo} to status ${PullRequestStatusEnum.CLOSED}`);\n //\n // try {\n // const response = await client.updatePrStatus(\n // `${prNo}`,\n // PullRequestStatusEnum.CLOSED\n // );\n // const isClosed =\n // response.pullRequest?.pullRequestStatus === PullRequestStatusEnum.CLOSED;\n //\n // if (!isClosed) {\n // logger.warn(\n // {\n // pullRequestId: prNo,\n // status: response.pullRequest?.pullRequestStatus,\n // },\n // `Expected PR to have status`\n // );\n // }\n // return true;\n // } catch (err) {\n // logger.debug({ err }, 'Failed to set the PR as Closed.');\n // return false;\n // }\n} /* v8 ignore stop */\n\nexport async function addReviewers(\n prNo: number,\n reviewers: string[],\n): Promise<void> {\n const numberOfApprovers = reviewers.length;\n const approvalRuleContents = `{\"Version\":\"2018-11-08\",\"Statements\": [{\"Type\": \"Approvers\",\"NumberOfApprovalsNeeded\":${numberOfApprovers},\"ApprovalPoolMembers\": ${JSON.stringify(\n reviewers,\n )}}]}`;\n const res = await client.createPrApprovalRule(\n `${prNo}`,\n approvalRuleContents,\n );\n if (res) {\n const approvalRule = res.approvalRule;\n logger.debug({ approvalRule }, `Approval Rule Added to PR #${prNo}:`);\n }\n}\n\n/* v8 ignore start */\nexport function addAssignees(iid: number, assignees: string[]): Promise<void> {\n // CodeCommit does not support adding reviewers\n return Promise.resolve();\n} /* v8 ignore stop */\n\n/* v8 ignore start */\nexport function findIssue(title: string): Promise<Issue | null> {\n // CodeCommit does not have issues\n return Promise.resolve(null);\n} /* v8 ignore stop */\n\n/* v8 ignore start */\nexport function ensureIssue({\n title,\n}: EnsureIssueConfig): Promise<EnsureIssueResult | null> {\n // CodeCommit does not have issues\n return Promise.resolve(null);\n} /* v8 ignore stop */\n\n/* v8 ignore start */\nexport function getIssueList(): Promise<Issue[]> {\n // CodeCommit does not have issues\n return Promise.resolve([]);\n} /* v8 ignore stop */\n\n/* v8 ignore start */\nexport function ensureIssueClosing(title: string): Promise<void> {\n // CodeCommit does not have issues\n return Promise.resolve();\n} /* v8 ignore stop */\n\n/* v8 ignore start */\nexport function deleteLabel(prNumber: number, label: string): Promise<void> {\n return Promise.resolve();\n} /* v8 ignore stop */\n\n// Returns the combined status for a branch.\n/* v8 ignore start */\nexport function getBranchStatus(branchName: string): Promise<BranchStatus> {\n logger.debug(`getBranchStatus(${branchName})`);\n logger.debug(\n 'returning branch status yellow, because getBranchStatus isnt supported on aws yet',\n );\n return Promise.resolve('yellow');\n} /* v8 ignore stop */\n\n/* v8 ignore start */\nexport function getBranchStatusCheck(\n branchName: string,\n context: string,\n): Promise<BranchStatus | null> {\n logger.debug(`getBranchStatusCheck(${branchName}, context=${context})`);\n logger.debug(\n 'returning null, because getBranchStatusCheck is not supported on aws yet',\n );\n return Promise.resolve(null);\n} /* v8 ignore stop */\n\n/* v8 ignore start */\nexport function setBranchStatus({\n branchName,\n context,\n description,\n state,\n url: targetUrl,\n}: BranchStatusConfig): Promise<void> {\n return Promise.resolve();\n} /* v8 ignore stop */\n\nexport async function ensureComment({\n number,\n topic,\n content,\n}: EnsureCommentConfig): Promise<boolean> {\n logger.debug(`ensureComment(${number}, ${topic!}, content)`);\n const header = topic ? `### ${topic}\\n\\n` : '';\n const body = `${header}${sanitize(content)}`;\n let prCommentsResponse: GetCommentsForPullRequestOutput;\n try {\n prCommentsResponse = await client.getPrComments(`${number}`);\n } catch (err) {\n logger.debug({ err }, 'Unable to retrieve pr comments');\n return false;\n }\n\n let commentId: string | undefined = undefined;\n let commentNeedsUpdating = false;\n\n if (!prCommentsResponse?.commentsForPullRequestData) {\n return false;\n }\n\n for (const commentObj of prCommentsResponse.commentsForPullRequestData) {\n if (!commentObj?.comments) {\n continue;\n }\n const firstCommentContent = commentObj.comments[0].content;\n if (\n (topic && firstCommentContent?.startsWith(header)) === true ||\n (!topic && firstCommentContent === body)\n ) {\n commentId = commentObj.comments[0].commentId;\n commentNeedsUpdating = firstCommentContent !== body;\n break;\n }\n }\n\n if (!commentId) {\n const prs = await getPrList();\n const thisPr = prs.filter((item) => item.number === number);\n\n if (!thisPr[0].sourceCommit || !thisPr[0].destinationCommit) {\n return false;\n }\n\n await client.createPrComment(\n `${number}`,\n config.repository,\n body,\n thisPr[0].destinationCommit,\n thisPr[0].sourceCommit,\n );\n logger.info(\n { repository: config.repository, prNo: number, topic },\n 'Comment added',\n );\n } else if (commentNeedsUpdating && commentId) {\n await client.updateComment(commentId, body);\n\n logger.debug(\n { repository: config.repository, prNo: number, topic },\n 'Comment updated',\n );\n } else {\n logger.debug(\n { repository: config.repository, prNo: number, topic },\n 'Comment is already update-to-date',\n );\n }\n\n return true;\n}\n\nexport async function ensureCommentRemoval(\n removeConfig: EnsureCommentRemovalConfig,\n): Promise<void> {\n const { number: prNo } = removeConfig;\n const key =\n removeConfig.type === 'by-topic'\n ? removeConfig.topic\n : removeConfig.content;\n logger.debug(`Ensuring comment \"${key}\" in #${prNo} is removed`);\n\n let prCommentsResponse: GetCommentsForPullRequestOutput;\n try {\n prCommentsResponse = await client.getPrComments(`${prNo}`);\n } catch (err) {\n logger.debug({ err }, 'Unable to retrieve pr comments');\n return;\n }\n\n if (!prCommentsResponse?.commentsForPullRequestData) {\n logger.debug('commentsForPullRequestData not found');\n return;\n }\n\n let commentIdToRemove: string | undefined;\n for (const commentObj of prCommentsResponse.commentsForPullRequestData) {\n if (!commentObj?.comments) {\n logger.debug(\n 'comments object not found under commentsForPullRequestData',\n );\n continue;\n }\n\n for (const comment of commentObj.comments) {\n if (\n (removeConfig.type === 'by-topic' &&\n comment.content?.startsWith(`### ${removeConfig.topic}\\n\\n`)) ===\n true ||\n (removeConfig.type === 'by-content' &&\n removeConfig.content === comment.content?.trim())\n ) {\n commentIdToRemove = comment.commentId;\n break;\n }\n }\n if (commentIdToRemove) {\n await client.deleteComment(commentIdToRemove);\n logger.debug(`comment \"${key}\" in PR #${prNo} was removed`);\n break;\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/platform/codecommit/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { Buffer } from 'node:buffer';\nimport type {\n GetCommentsForPullRequestOutput,\n ListRepositoriesOutput,\n} from '@aws-sdk/client-codecommit';\nimport { PullRequestStatusEnum } from '@aws-sdk/client-codecommit';\nimport {\n PLATFORM_BAD_CREDENTIALS,\n REPOSITORY_EMPTY,\n REPOSITORY_NOT_FOUND,\n} from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport type { BranchStatus, PrState } from '../../../types';\nimport { coerceArray } from '../../../util/array';\nimport { parseJson } from '../../../util/common';\nimport { getEnv } from '../../../util/env';\nimport * as git from '../../../util/git';\nimport { regEx } from '../../../util/regex';\nimport { sanitize } from '../../../util/sanitize';\nimport type {\n BranchStatusConfig,\n CreatePRConfig,\n EnsureCommentConfig,\n EnsureCommentRemovalConfig,\n EnsureIssueConfig,\n EnsureIssueResult,\n FindPRConfig,\n Issue,\n MergePRConfig,\n PlatformParams,\n PlatformResult,\n Pr,\n RepoParams,\n RepoResult,\n UpdatePrConfig,\n} from '../types';\nimport { getNewBranchName, repoFingerprint } from '../util';\nimport { smartTruncate } from '../utils/pr-body';\nimport * as client from './codecommit-client';\n\nexport interface CodeCommitPr extends Pr {\n body: string;\n destinationCommit: string;\n sourceCommit: string;\n}\n\ninterface Config {\n repository?: string;\n defaultBranch?: string;\n region?: string;\n prList?: CodeCommitPr[];\n}\n\nexport const id = 'codecommit';\n\nlet config: Config = {} as any;\n\nexport async function initPlatform({\n endpoint,\n username,\n password,\n token: awsToken,\n}: PlatformParams): Promise<PlatformResult> {\n const accessKeyId = username;\n const secretAccessKey = password;\n const env = getEnv();\n let region: string | undefined;\n\n if (accessKeyId) {\n env.AWS_ACCESS_KEY_ID = accessKeyId;\n }\n if (secretAccessKey) {\n env.AWS_SECRET_ACCESS_KEY = secretAccessKey;\n }\n if (awsToken) {\n env.AWS_SESSION_TOKEN = awsToken;\n }\n\n if (endpoint) {\n const regionReg = regEx(/.*codecommit\\.(?<region>.+)\\.amazonaws\\.com/);\n const codeCommitMatch = regionReg.exec(endpoint);\n region = codeCommitMatch?.groups?.region;\n if (region) {\n env.AWS_REGION = region;\n } else {\n logger.warn(\"Can't parse region, make sure your endpoint is correct\");\n }\n }\n\n // If any of the below fails, it will throw an exception stopping the program.\n client.buildCodeCommitClient();\n // To check if we have permission to codecommit, throws exception if failed.\n await client.listRepositories();\n\n const platformConfig: PlatformResult = {\n endpoint:\n endpoint ??\n `https://git-codecommit.${env.AWS_REGION ?? 'us-east-1'}.amazonaws.com/`,\n };\n return Promise.resolve(platformConfig);\n}\n\nexport async function initRepo({\n repository,\n endpoint,\n}: RepoParams): Promise<RepoResult> {\n logger.debug(`initRepo(\"${repository}\")`);\n\n config = { repository } as Config;\n\n let repo;\n try {\n repo = await client.getRepositoryInfo(repository);\n } catch (err) {\n logger.error({ err }, 'Could not find repository');\n throw new Error(REPOSITORY_NOT_FOUND);\n }\n\n if (!repo?.repositoryMetadata) {\n logger.error({ repository }, 'Could not find repository');\n throw new Error(REPOSITORY_NOT_FOUND);\n }\n logger.debug({ repositoryDetails: repo }, 'Repository details');\n const metadata = repo.repositoryMetadata;\n\n const url = client.getCodeCommitUrl(metadata, repository);\n try {\n await git.initRepo({\n url,\n });\n } catch (err) {\n logger.debug({ err }, 'Failed to git init');\n throw new Error(PLATFORM_BAD_CREDENTIALS);\n }\n\n if (!metadata.defaultBranch || !metadata.repositoryId) {\n logger.debug('Repo is empty');\n throw new Error(REPOSITORY_EMPTY);\n }\n\n const defaultBranch = metadata.defaultBranch;\n config.defaultBranch = defaultBranch;\n logger.debug(`${repository} default branch = ${defaultBranch}`);\n\n return {\n repoFingerprint: repoFingerprint(metadata.repositoryId, endpoint),\n defaultBranch,\n isFork: false,\n };\n}\n\nexport async function getPrList(): Promise<CodeCommitPr[]> {\n logger.debug('getPrList()');\n\n if (config.prList) {\n return config.prList;\n }\n\n const listPrsResponse = await client.listPullRequests(config.repository!);\n const fetchedPrs: CodeCommitPr[] = [];\n\n if (listPrsResponse && !listPrsResponse.pullRequestIds) {\n return fetchedPrs;\n }\n\n const prIds = coerceArray(listPrsResponse.pullRequestIds);\n\n for (const prId of prIds) {\n const prRes = await client.getPr(prId);\n\n if (!prRes?.pullRequest) {\n continue;\n }\n const prInfo = prRes.pullRequest;\n const pr: CodeCommitPr = {\n targetBranch: prInfo.pullRequestTargets![0].destinationReference!,\n sourceBranch: prInfo.pullRequestTargets![0].sourceReference!,\n destinationCommit: prInfo.pullRequestTargets![0].destinationCommit!,\n sourceCommit: prInfo.pullRequestTargets![0].sourceCommit!,\n state:\n prInfo.pullRequestStatus === PullRequestStatusEnum.OPEN\n ? 'open'\n : 'closed',\n number: Number.parseInt(prId),\n title: prInfo.title!,\n body: prInfo.description!,\n };\n fetchedPrs.push(pr);\n }\n\n config.prList = fetchedPrs;\n\n logger.debug(`Retrieved Pull Requests, count: ${fetchedPrs.length}`);\n return fetchedPrs;\n}\n\nexport async function findPr({\n branchName,\n prTitle,\n state = 'all',\n}: FindPRConfig): Promise<CodeCommitPr | null> {\n let prsFiltered: CodeCommitPr[] = [];\n try {\n const prs = await getPrList();\n const refsHeadBranchName = getNewBranchName(branchName);\n prsFiltered = prs.filter(\n (item) => item.sourceBranch === refsHeadBranchName,\n );\n\n if (prTitle) {\n prsFiltered = prsFiltered.filter(\n (item) => item.title.toUpperCase() === prTitle.toUpperCase(),\n );\n }\n\n switch (state) {\n case 'all':\n break;\n case '!open':\n prsFiltered = prsFiltered.filter((item) => item.state !== 'open');\n break;\n default:\n prsFiltered = prsFiltered.filter((item) => item.state === 'open');\n break;\n }\n } catch (err) {\n logger.error({ err }, 'findPr error');\n }\n if (prsFiltered.length === 0) {\n return null;\n }\n return prsFiltered[0];\n}\n\nexport async function getBranchPr(\n branchName: string,\n): Promise<CodeCommitPr | null> {\n logger.debug(`getBranchPr(${branchName})`);\n const existingPr = await findPr({\n branchName,\n state: 'open',\n });\n return existingPr ? getPr(existingPr.number) : null;\n}\n\nexport async function getPr(\n pullRequestId: number,\n): Promise<CodeCommitPr | null> {\n logger.debug(`getPr(${pullRequestId})`);\n const prRes = await client.getPr(`${pullRequestId}`);\n\n if (!prRes?.pullRequest) {\n return null;\n }\n\n const prInfo = prRes.pullRequest;\n let prState: PrState;\n if (prInfo.pullRequestTargets![0].mergeMetadata?.isMerged) {\n prState = 'merged';\n } else {\n prState =\n prInfo.pullRequestStatus === PullRequestStatusEnum.OPEN\n ? 'open'\n : 'closed';\n }\n\n return {\n sourceBranch: prInfo.pullRequestTargets![0].sourceReference!,\n sourceCommit: prInfo.pullRequestTargets![0].sourceCommit!,\n state: prState,\n number: pullRequestId,\n title: prInfo.title!,\n targetBranch: prInfo.pullRequestTargets![0].destinationReference!,\n destinationCommit: prInfo.pullRequestTargets![0].destinationCommit!,\n body: prInfo.description!,\n };\n}\n\nexport async function getRepos(): Promise<string[]> {\n logger.debug('Autodiscovering AWS CodeCommit repositories');\n\n let reposRes: ListRepositoriesOutput;\n try {\n reposRes = await client.listRepositories();\n //todo do we need pagination? maximum number of repos is 1000 without pagination, also the same for free account\n } catch (error) {\n logger.error({ error }, 'Could not retrieve repositories');\n return [];\n }\n\n const res: string[] = [];\n\n const repoNames = coerceArray(reposRes?.repositories);\n\n for (const repo of repoNames) {\n if (repo.repositoryName) {\n res.push(repo.repositoryName);\n }\n }\n\n return res;\n}\n\nexport function massageMarkdown(input: string): string {\n // Remove any HTML we use\n return input\n .replace(\n 'you tick the rebase/retry checkbox',\n 'PR is renamed to start with \"rebase!\"',\n )\n .replace(\n 'checking the rebase/retry box above',\n 'renaming the PR to start with \"rebase!\"',\n )\n .replace(regEx(/<\\/?summary>/g), '**')\n .replace(regEx(/<\\/?details>/g), '')\n .replace(regEx(`\\n---\\n\\n.*?<!-- rebase-check -->.*?\\n`), '')\n .replace(regEx(/\\]\\(\\.\\.\\/pull\\//g), '](../../pull-requests/')\n .replace(\n regEx(/(?<hiddenComment><!--renovate-(?:debug|config-hash):.*?-->)/g),\n '[//]: # ($<hiddenComment>)',\n );\n}\n\n/**\n * Unsed, no Dashboard\n */\nexport function maxBodyLength(): number {\n return Infinity;\n}\n\nexport async function getJsonFile(\n fileName: string,\n repoName?: string,\n branchOrTag?: string,\n): Promise<any> {\n const raw = await getRawFile(fileName, repoName, branchOrTag);\n return parseJson(raw, fileName);\n}\n\nexport async function getRawFile(\n fileName: string,\n repoName?: string,\n branchOrTag?: string,\n): Promise<string | null> {\n const fileRes = await client.getFile(\n repoName ?? config.repository,\n fileName,\n branchOrTag,\n );\n if (!fileRes?.fileContent) {\n return null;\n }\n const buf = Buffer.from(fileRes.fileContent);\n return buf.toString();\n}\n\nconst AMAZON_MAX_BODY_LENGTH = 10239;\n\nexport async function createPr({\n sourceBranch,\n targetBranch,\n prTitle: title,\n prBody: body,\n}: CreatePRConfig): Promise<CodeCommitPr> {\n const description = smartTruncate(sanitize(body), AMAZON_MAX_BODY_LENGTH);\n\n const prCreateRes = await client.createPr(\n title,\n sanitize(description),\n sourceBranch,\n targetBranch,\n config.repository,\n );\n\n if (\n !prCreateRes.pullRequest?.title ||\n !prCreateRes.pullRequest?.pullRequestId ||\n !prCreateRes.pullRequest?.description ||\n !prCreateRes.pullRequest?.pullRequestTargets?.length\n ) {\n throw new Error('Could not create pr, missing PR info');\n }\n\n return {\n number: Number.parseInt(prCreateRes.pullRequest.pullRequestId),\n state: 'open',\n title: prCreateRes.pullRequest.title,\n sourceBranch,\n targetBranch,\n sourceCommit: prCreateRes.pullRequest.pullRequestTargets[0].sourceCommit!,\n destinationCommit:\n prCreateRes.pullRequest.pullRequestTargets[0].destinationCommit!,\n sourceRepo: config.repository,\n body: prCreateRes.pullRequest.description,\n };\n}\n\nexport async function updatePr({\n number: prNo,\n prTitle: title,\n prBody: body,\n state,\n}: UpdatePrConfig): Promise<void> {\n logger.debug(`updatePr(${prNo}, ${title}, body)`);\n\n let cachedPr: CodeCommitPr | undefined = undefined;\n const cachedPrs = config.prList ?? [];\n for (const p of cachedPrs) {\n if (p.number === prNo) {\n cachedPr = p;\n }\n }\n\n if (body && cachedPr?.body !== body) {\n await client.updatePrDescription(\n `${prNo}`,\n smartTruncate(sanitize(body), AMAZON_MAX_BODY_LENGTH),\n );\n }\n\n if (title && cachedPr?.title !== title) {\n await client.updatePrTitle(`${prNo}`, title);\n }\n\n const prStatusInput =\n state === 'closed'\n ? PullRequestStatusEnum.CLOSED\n : PullRequestStatusEnum.OPEN;\n if (cachedPr?.state !== prStatusInput) {\n try {\n await client.updatePrStatus(`${prNo}`, prStatusInput);\n } catch {\n // safety check\n // do nothing, it's ok to fail sometimes when trying to update from open to open or from closed to closed.\n }\n }\n}\n\n// Auto-Merge not supported currently.\n/* v8 ignore next */\nexport async function mergePr({\n branchName,\n id: prNo,\n strategy,\n}: MergePRConfig): Promise<boolean> {\n logger.debug(`mergePr(${prNo}, ${branchName!})`);\n await client.getPr(`${prNo}`);\n return Promise.resolve(false);\n //\n // /* v8 ignore next */\n // if (!prOut) {\n // return false;\n // }\n // const pReq = prOut.pullRequest;\n // const targets = pReq?.pullRequestTargets;\n //\n // /* v8 ignore next */\n // if (!targets) {\n // return false;\n // }\n //\n // if (strategy === 'rebase') {\n // logger.warn('CodeCommit does not support a \"rebase\" strategy.');\n // return false;\n // }\n //\n // try {\n // if (strategy === 'auto' || strategy === 'squash') {\n // await client.squashMerge(\n // targets[0].repositoryName!,\n // targets[0].sourceReference!,\n // targets[0].destinationReference!,\n // pReq?.title\n // );\n // } else if (strategy === 'fast-forward') {\n // await client.fastForwardMerge(\n // targets[0].repositoryName!,\n // targets[0].sourceReference!,\n // targets[0].destinationReference!\n // );\n // } else {\n // logger.debug(`unsupported strategy`);\n // return false;\n // }\n // } catch (err) {\n // logger.debug({ err }, `PR merge error`);\n // logger.info({ pr: prNo }, 'PR automerge failed');\n // return false;\n // }\n //\n // logger.trace(`Updating PR ${prNo} to status ${PullRequestStatusEnum.CLOSED}`);\n //\n // try {\n // const response = await client.updatePrStatus(\n // `${prNo}`,\n // PullRequestStatusEnum.CLOSED\n // );\n // const isClosed =\n // response.pullRequest?.pullRequestStatus === PullRequestStatusEnum.CLOSED;\n //\n // if (!isClosed) {\n // logger.warn(\n // {\n // pullRequestId: prNo,\n // status: response.pullRequest?.pullRequestStatus,\n // },\n // `Expected PR to have status`\n // );\n // }\n // return true;\n // } catch (err) {\n // logger.debug({ err }, 'Failed to set the PR as Closed.');\n // return false;\n // }\n}\n\nexport async function addReviewers(\n prNo: number,\n reviewers: string[],\n): Promise<void> {\n const numberOfApprovers = reviewers.length;\n const approvalRuleContents = `{\"Version\":\"2018-11-08\",\"Statements\": [{\"Type\": \"Approvers\",\"NumberOfApprovalsNeeded\":${numberOfApprovers},\"ApprovalPoolMembers\": ${JSON.stringify(\n reviewers,\n )}}]}`;\n const res = await client.createPrApprovalRule(\n `${prNo}`,\n approvalRuleContents,\n );\n if (res) {\n const approvalRule = res.approvalRule;\n logger.debug({ approvalRule }, `Approval Rule Added to PR #${prNo}:`);\n }\n}\n\n/* v8 ignore next */\nexport function addAssignees(iid: number, assignees: string[]): Promise<void> {\n // CodeCommit does not support adding reviewers\n return Promise.resolve();\n}\n\n/* v8 ignore next */\nexport function findIssue(title: string): Promise<Issue | null> {\n // CodeCommit does not have issues\n return Promise.resolve(null);\n}\n\n/* v8 ignore next */\nexport function ensureIssue({\n title,\n}: EnsureIssueConfig): Promise<EnsureIssueResult | null> {\n // CodeCommit does not have issues\n return Promise.resolve(null);\n}\n\n/* v8 ignore next */\nexport function getIssueList(): Promise<Issue[]> {\n // CodeCommit does not have issues\n return Promise.resolve([]);\n}\n\n/* v8 ignore next */\nexport function ensureIssueClosing(title: string): Promise<void> {\n // CodeCommit does not have issues\n return Promise.resolve();\n}\n\n/* v8 ignore next */\nexport function deleteLabel(prNumber: number, label: string): Promise<void> {\n return Promise.resolve();\n}\n\n// Returns the combined status for a branch.\n/* v8 ignore next */\nexport function getBranchStatus(branchName: string): Promise<BranchStatus> {\n logger.debug(`getBranchStatus(${branchName})`);\n logger.debug(\n 'returning branch status yellow, because getBranchStatus isnt supported on aws yet',\n );\n return Promise.resolve('yellow');\n}\n\n/* v8 ignore next */\nexport function getBranchStatusCheck(\n branchName: string,\n context: string,\n): Promise<BranchStatus | null> {\n logger.debug(`getBranchStatusCheck(${branchName}, context=${context})`);\n logger.debug(\n 'returning null, because getBranchStatusCheck is not supported on aws yet',\n );\n return Promise.resolve(null);\n}\n\n/* v8 ignore next */\nexport function setBranchStatus({\n branchName,\n context,\n description,\n state,\n url: targetUrl,\n}: BranchStatusConfig): Promise<void> {\n return Promise.resolve();\n}\n\nexport async function ensureComment({\n number,\n topic,\n content,\n}: EnsureCommentConfig): Promise<boolean> {\n logger.debug(`ensureComment(${number}, ${topic!}, content)`);\n const header = topic ? `### ${topic}\\n\\n` : '';\n const body = `${header}${sanitize(content)}`;\n let prCommentsResponse: GetCommentsForPullRequestOutput;\n try {\n prCommentsResponse = await client.getPrComments(`${number}`);\n } catch (err) {\n logger.debug({ err }, 'Unable to retrieve pr comments');\n return false;\n }\n\n let commentId: string | undefined = undefined;\n let commentNeedsUpdating = false;\n\n if (!prCommentsResponse?.commentsForPullRequestData) {\n return false;\n }\n\n for (const commentObj of prCommentsResponse.commentsForPullRequestData) {\n if (!commentObj?.comments) {\n continue;\n }\n const firstCommentContent = commentObj.comments[0].content;\n if (\n (topic && firstCommentContent?.startsWith(header)) === true ||\n (!topic && firstCommentContent === body)\n ) {\n commentId = commentObj.comments[0].commentId;\n commentNeedsUpdating = firstCommentContent !== body;\n break;\n }\n }\n\n if (!commentId) {\n const prs = await getPrList();\n const thisPr = prs.filter((item) => item.number === number);\n\n if (!thisPr[0].sourceCommit || !thisPr[0].destinationCommit) {\n return false;\n }\n\n await client.createPrComment(\n `${number}`,\n config.repository,\n body,\n thisPr[0].destinationCommit,\n thisPr[0].sourceCommit,\n );\n logger.info(\n { repository: config.repository, prNo: number, topic },\n 'Comment added',\n );\n } else if (commentNeedsUpdating && commentId) {\n await client.updateComment(commentId, body);\n\n logger.debug(\n { repository: config.repository, prNo: number, topic },\n 'Comment updated',\n );\n } else {\n logger.debug(\n { repository: config.repository, prNo: number, topic },\n 'Comment is already update-to-date',\n );\n }\n\n return true;\n}\n\nexport async function ensureCommentRemoval(\n removeConfig: EnsureCommentRemovalConfig,\n): Promise<void> {\n const { number: prNo } = removeConfig;\n const key =\n removeConfig.type === 'by-topic'\n ? removeConfig.topic\n : removeConfig.content;\n logger.debug(`Ensuring comment \"${key}\" in #${prNo} is removed`);\n\n let prCommentsResponse: GetCommentsForPullRequestOutput;\n try {\n prCommentsResponse = await client.getPrComments(`${prNo}`);\n } catch (err) {\n logger.debug({ err }, 'Unable to retrieve pr comments');\n return;\n }\n\n if (!prCommentsResponse?.commentsForPullRequestData) {\n logger.debug('commentsForPullRequestData not found');\n return;\n }\n\n let commentIdToRemove: string | undefined;\n for (const commentObj of prCommentsResponse.commentsForPullRequestData) {\n if (!commentObj?.comments) {\n logger.debug(\n 'comments object not found under commentsForPullRequestData',\n );\n continue;\n }\n\n for (const comment of commentObj.comments) {\n if (\n (removeConfig.type === 'by-topic' &&\n comment.content?.startsWith(`### ${removeConfig.topic}\\n\\n`)) ===\n true ||\n (removeConfig.type === 'by-content' &&\n removeConfig.content === comment.content?.trim())\n ) {\n commentIdToRemove = comment.commentId;\n break;\n }\n }\n if (commentIdToRemove) {\n await client.deleteComment(commentIdToRemove);\n logger.debug(`comment \"${key}\" in PR #${prNo} was removed`);\n break;\n }\n }\n}\n"]}
|
|
@@ -136,10 +136,10 @@ const platform = {
|
|
|
136
136
|
botUserID = user.id;
|
|
137
137
|
botUserName = user.username;
|
|
138
138
|
const env = (0, env_1.getEnv)();
|
|
139
|
-
/* v8 ignore
|
|
139
|
+
/* v8 ignore next: experimental feature */
|
|
140
140
|
if (semver_1.default.valid(env.RENOVATE_X_PLATFORM_VERSION)) {
|
|
141
141
|
defaults.version = env.RENOVATE_X_PLATFORM_VERSION;
|
|
142
|
-
}
|
|
142
|
+
}
|
|
143
143
|
else {
|
|
144
144
|
defaults.version = await helper.getVersion({ token });
|
|
145
145
|
}
|
|
@@ -530,10 +530,10 @@ const platform = {
|
|
|
530
530
|
body,
|
|
531
531
|
};
|
|
532
532
|
}
|
|
533
|
-
catch (err) /* v8 ignore
|
|
533
|
+
catch (err) /* v8 ignore next */ {
|
|
534
534
|
logger_1.logger.debug({ err, number }, 'Error getting issue');
|
|
535
535
|
return null;
|
|
536
|
-
}
|
|
536
|
+
}
|
|
537
537
|
},
|
|
538
538
|
async findIssue(title) {
|
|
539
539
|
const issueList = await platform.getIssueList();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/platform/gitea/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { isNumber, isString } from '@sindresorhus/is';\nimport semver from 'semver';\nimport {\n REPOSITORY_ACCESS_FORBIDDEN,\n REPOSITORY_ARCHIVED,\n REPOSITORY_BLOCKED,\n REPOSITORY_CHANGED,\n REPOSITORY_EMPTY,\n REPOSITORY_MIRRORED,\n} from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport type { BranchStatus } from '../../../types';\nimport { deduplicateArray } from '../../../util/array';\nimport { parseJson } from '../../../util/common';\nimport { getEnv } from '../../../util/env';\nimport * as git from '../../../util/git';\nimport { setBaseUrl } from '../../../util/http/gitea';\nimport { map } from '../../../util/promises';\nimport { sanitize } from '../../../util/sanitize';\nimport { ensureTrailingSlash } from '../../../util/url';\nimport { getPrBodyStruct, hashBody } from '../pr-body';\nimport type {\n AutodiscoverConfig,\n BranchStatusConfig,\n CreatePRConfig,\n EnsureCommentConfig,\n EnsureCommentRemovalConfig,\n EnsureIssueConfig,\n FindPRConfig,\n Issue,\n MergePRConfig,\n Platform,\n PlatformParams,\n PlatformResult,\n Pr,\n RepoParams,\n RepoResult,\n RepoSortMethod,\n SortMethod,\n UpdatePrConfig,\n} from '../types';\nimport { repoFingerprint } from '../util';\nimport { smartTruncate } from '../utils/pr-body';\nimport * as helper from './gitea-helper';\nimport { giteaHttp } from './gitea-helper';\nimport { GiteaPrCache } from './pr-cache';\nimport type {\n CombinedCommitStatus,\n Comment,\n Label,\n PRMergeMethod,\n PRUpdateParams,\n Repo,\n} from './types';\nimport {\n DRAFT_PREFIX,\n getMergeMethod,\n getRepoUrl,\n isAllowed,\n smartLinks,\n toRenovatePR,\n trimTrailingApiPath,\n usableRepo,\n} from './utils';\n\ninterface GiteaRepoConfig {\n ignorePrAuthor: boolean;\n repository: string;\n mergeMethod: PRMergeMethod;\n\n issueList: Promise<Issue[]> | null;\n labelList: Promise<Label[]> | null;\n defaultBranch: string;\n cloneSubmodules: boolean;\n cloneSubmodulesFilter: string[] | undefined;\n hasIssuesEnabled: boolean;\n}\n\nexport const id = 'gitea';\n\nconst defaults = {\n hostType: 'gitea',\n endpoint: 'https://gitea.com/',\n version: '0.0.0',\n isForgejo: false,\n};\n\nlet config: GiteaRepoConfig = {} as any;\nlet botUserID: number;\nlet botUserName: string;\n\nexport function resetPlatform(): void {\n config = {} as any;\n botUserID = undefined as never;\n botUserName = undefined as never;\n defaults.hostType = 'gitea';\n defaults.endpoint = 'https://gitea.com/';\n defaults.version = '0.0.0';\n defaults.isForgejo = false;\n setBaseUrl(defaults.endpoint);\n}\n\nfunction toRenovateIssue(data: Issue): Issue {\n return {\n number: data.number,\n state: data.state,\n title: data.title,\n body: data.body,\n };\n}\n\nfunction matchesState(actual: string, expected: string): boolean {\n if (expected === 'all') {\n return true;\n }\n if (expected.startsWith('!')) {\n return actual !== expected.substring(1);\n }\n\n return actual === expected;\n}\n\nfunction findCommentByTopic(\n comments: Comment[],\n topic: string,\n): Comment | null {\n return comments.find((c) => c.body.startsWith(`### ${topic}\\n\\n`)) ?? null;\n}\n\nfunction findCommentByContent(\n comments: Comment[],\n content: string,\n): Comment | null {\n return comments.find((c) => c.body.trim() === content) ?? null;\n}\n\nfunction getLabelList(): Promise<Label[]> {\n if (config.labelList === null) {\n const repoLabels = helper\n .getRepoLabels(config.repository, {\n memCache: false,\n })\n .then((labels) => {\n logger.debug(`Retrieved ${labels.length} repo labels`);\n return labels;\n });\n\n const orgLabels = helper\n .getOrgLabels(config.repository.split('/')[0], {\n memCache: false,\n })\n .then((labels) => {\n logger.debug(`Retrieved ${labels.length} org labels`);\n return labels;\n })\n .catch((err) => {\n // Will fail if owner of repo is not org or Gitea version < 1.12\n logger.debug(`Unable to fetch organization labels`);\n return [] as Label[];\n });\n\n config.labelList = Promise.all([repoLabels, orgLabels]).then((labels) =>\n ([] as Label[]).concat(...labels),\n );\n }\n\n return config.labelList;\n}\n\nasync function lookupLabelByName(name: string): Promise<number | null> {\n logger.debug(`lookupLabelByName(${name})`);\n const labelList = await getLabelList();\n return labelList.find((l) => l.name === name)?.id ?? null;\n}\n\ninterface FetchRepositoriesArgs {\n topic?: string;\n sort?: RepoSortMethod;\n order?: SortMethod;\n}\n\nasync function fetchRepositories({\n topic,\n sort,\n order,\n}: FetchRepositoriesArgs): Promise<string[]> {\n const repos = await helper.searchRepos({\n uid: botUserID,\n archived: false,\n ...(topic && {\n topic: true,\n q: topic,\n }),\n ...(sort && {\n sort,\n }),\n ...(order && {\n order,\n }),\n });\n return repos.filter(usableRepo).map((r) => r.full_name);\n}\n\nconst platform: Platform = {\n async initPlatform({\n endpoint,\n token,\n }: PlatformParams): Promise<PlatformResult> {\n if (!token) {\n throw new Error('Init: You must configure a Gitea personal access token');\n }\n\n if (endpoint) {\n let baseEndpoint = trimTrailingApiPath(endpoint);\n baseEndpoint = ensureTrailingSlash(baseEndpoint);\n defaults.endpoint = baseEndpoint;\n } else {\n logger.debug('Using default Gitea endpoint: ' + defaults.endpoint);\n }\n setBaseUrl(defaults.endpoint);\n\n let gitAuthor: string;\n try {\n const user = await helper.getCurrentUser({ token });\n gitAuthor = `${user.full_name ?? user.username} <${user.email}>`;\n botUserID = user.id;\n botUserName = user.username;\n const env = getEnv();\n /* v8 ignore start: experimental feature */\n if (semver.valid(env.RENOVATE_X_PLATFORM_VERSION)) {\n defaults.version = env.RENOVATE_X_PLATFORM_VERSION!;\n } /* v8 ignore stop */ else {\n defaults.version = await helper.getVersion({ token });\n }\n if (defaults.version?.includes('gitea-')) {\n defaults.isForgejo = true;\n logger.info(\n `Detected Forgejo instance, please use 'forgejo' platform instead`,\n );\n }\n logger.debug(\n `${defaults.isForgejo ? 'Forgejo' : 'Gitea'} version: ${defaults.version}`,\n );\n } catch (err) {\n logger.debug(\n { err },\n 'Error authenticating with Gitea. Check your token',\n );\n throw new Error('Init: Authentication failure');\n }\n\n return {\n endpoint: defaults.endpoint,\n gitAuthor,\n };\n },\n\n async getRawFile(\n fileName: string,\n repoName?: string,\n branchOrTag?: string,\n ): Promise<string | null> {\n const repo = repoName ?? config.repository;\n const contents = await helper.getRepoContents(repo, fileName, branchOrTag);\n return contents.contentString ?? null;\n },\n\n async getJsonFile(\n fileName: string,\n repoName?: string,\n branchOrTag?: string,\n ): Promise<any> {\n // TODO #22198\n const raw = await platform.getRawFile(fileName, repoName, branchOrTag);\n return parseJson(raw, fileName);\n },\n\n async initRepo({\n repository,\n cloneSubmodules,\n cloneSubmodulesFilter,\n gitUrl,\n ignorePrAuthor,\n }: RepoParams): Promise<RepoResult> {\n let repo: Repo;\n\n config = {} as any;\n config.repository = repository;\n config.cloneSubmodules = !!cloneSubmodules;\n config.cloneSubmodulesFilter = cloneSubmodulesFilter;\n config.ignorePrAuthor = !!ignorePrAuthor;\n\n // Try to fetch information about repository\n try {\n repo = await helper.getRepo(repository);\n } catch (err) {\n logger.debug({ err }, 'Unknown Gitea initRepo error');\n throw err;\n }\n\n // Ensure appropriate repository state and permissions\n if (repo.archived) {\n logger.debug('Repository is archived - aborting renovation');\n throw new Error(REPOSITORY_ARCHIVED);\n }\n if (repo.mirror) {\n logger.debug('Repository is a mirror - aborting renovation');\n throw new Error(REPOSITORY_MIRRORED);\n }\n if (repo.permissions.pull === false || repo.permissions.push === false) {\n logger.debug(\n 'Repository does not permit pull or push - aborting renovation',\n );\n throw new Error(REPOSITORY_ACCESS_FORBIDDEN);\n }\n if (repo.empty) {\n logger.debug('Repository is empty - aborting renovation');\n throw new Error(REPOSITORY_EMPTY);\n }\n\n if (repo.has_pull_requests === false) {\n logger.debug('Repo has disabled pull requests - aborting renovation');\n throw new Error(REPOSITORY_BLOCKED);\n }\n\n // similar to gitea behaviour- if default merge style is allowed, use this;\n // else fall back to predefined order. Order chosen to minimize commits - see\n // https://github.com/renovatebot/renovate/pull/37768 for discussion.\n const preferredOrder: PRMergeMethod[] = [\n repo.default_merge_style,\n 'fast-forward-only',\n 'squash',\n 'merge',\n 'rebase',\n 'rebase-merge',\n ];\n\n const mergeStyle = preferredOrder.find((style) => isAllowed(style, repo));\n\n if (mergeStyle) {\n config.mergeMethod = mergeStyle;\n } else {\n logger.debug(\n 'Repository has no allowed merge methods - aborting renovation',\n );\n throw new Error(REPOSITORY_BLOCKED);\n }\n\n // Determine author email and branches\n config.defaultBranch = repo.default_branch;\n logger.debug(`${repository} default branch = ${config.defaultBranch}`);\n\n const url = getRepoUrl(repo, gitUrl, defaults.endpoint);\n\n // Initialize Git storage\n await git.initRepo({\n ...config,\n url,\n });\n\n // Reset cached resources\n config.issueList = null;\n config.labelList = null;\n config.hasIssuesEnabled = !repo.external_tracker && repo.has_issues;\n\n return {\n defaultBranch: config.defaultBranch,\n isFork: !!repo.fork,\n repoFingerprint: repoFingerprint(repo.id, defaults.endpoint),\n };\n },\n\n async getRepos(config?: AutodiscoverConfig): Promise<string[]> {\n logger.debug('Auto-discovering Gitea repositories');\n try {\n if (config?.topics) {\n logger.debug({ topics: config.topics }, 'Auto-discovering by topics');\n const fetchRepoArgs: FetchRepositoriesArgs[] = config.topics.map(\n (topic) => {\n return {\n topic,\n sort: config.sort,\n order: config.order,\n };\n },\n );\n const repos = await map(fetchRepoArgs, fetchRepositories);\n return deduplicateArray(repos.flat());\n } else if (config?.namespaces) {\n logger.debug(\n { namespaces: config.namespaces },\n 'Auto-discovering by organization',\n );\n const repos = await map(\n config.namespaces,\n async (organization: string) => {\n const orgRepos = await helper.orgListRepos(organization);\n return orgRepos\n .filter((r) => !r.mirror && !r.archived)\n .map((r) => r.full_name);\n },\n );\n return deduplicateArray(repos.flat());\n } else {\n return await fetchRepositories({\n sort: config?.sort,\n order: config?.order,\n });\n }\n } catch (err) {\n logger.error({ err }, 'Gitea getRepos() error');\n throw err;\n }\n },\n\n async setBranchStatus({\n branchName,\n context,\n description,\n state,\n url: target_url,\n }: BranchStatusConfig): Promise<void> {\n try {\n // Create new status for branch commit\n const branchCommit = git.getBranchCommit(branchName);\n // TODO: check branchCommit\n\n await helper.createCommitStatus(config.repository, branchCommit!, {\n state: helper.renovateToGiteaStatusMapping[state] || 'pending',\n context,\n description,\n ...(target_url && { target_url }),\n });\n\n // Refresh caches by re-fetching commit status for branch\n await helper.getCombinedCommitStatus(config.repository, branchName, {\n memCache: false,\n });\n } catch (err) {\n logger.warn({ err }, 'Failed to set branch status');\n }\n },\n\n async getBranchStatus(\n branchName: string,\n internalChecksAsSuccess: boolean,\n ): Promise<BranchStatus> {\n let ccs: CombinedCommitStatus;\n try {\n ccs = await helper.getCombinedCommitStatus(config.repository, branchName);\n } catch (err) {\n if (err.statusCode === 404) {\n logger.debug(\n 'Received 404 when checking branch status, assuming branch deletion',\n );\n throw new Error(REPOSITORY_CHANGED);\n }\n\n logger.debug('Unknown error when checking branch status');\n throw err;\n }\n\n logger.debug({ ccs }, 'Branch status check result');\n if (\n !internalChecksAsSuccess &&\n ccs.worstStatus === 'success' &&\n ccs.statuses.every((status) => status.context?.startsWith('renovate/'))\n ) {\n logger.debug(\n 'Successful checks are all internal renovate/ checks, so returning \"pending\" branch status',\n );\n return 'yellow';\n }\n\n /* v8 ignore next */\n return helper.giteaToRenovateStatusMapping[ccs.worstStatus] ?? 'yellow';\n },\n\n async getBranchStatusCheck(\n branchName: string,\n context: string,\n ): Promise<BranchStatus | null> {\n const ccs = await helper.getCombinedCommitStatus(\n config.repository,\n branchName,\n );\n const cs = ccs.statuses.find((s) => s.context === context);\n if (!cs) {\n return null;\n } // no status check exists\n const status = helper.giteaToRenovateStatusMapping[cs.status];\n if (status) {\n return status;\n }\n logger.warn(\n { check: cs },\n 'Could not map Gitea status value to Renovate status',\n );\n return 'yellow';\n },\n\n getPrList(): Promise<Pr[]> {\n return GiteaPrCache.getPrs(\n giteaHttp,\n config.repository,\n config.ignorePrAuthor,\n botUserName,\n );\n },\n\n async getPr(number: number): Promise<Pr | null> {\n // Search for pull request in cached list or attempt to query directly\n const prList = await platform.getPrList();\n let pr = prList.find((p) => p.number === number) ?? null;\n if (pr) {\n logger.debug('Returning from cached PRs');\n } else {\n logger.debug('PR not found in cached PRs - trying to fetch directly');\n const gpr = await helper.getPR(config.repository, number);\n pr = toRenovatePR(gpr, botUserName);\n\n // Add pull request to cache for further lookups / queries\n if (pr) {\n await GiteaPrCache.setPr(\n giteaHttp,\n config.repository,\n config.ignorePrAuthor,\n botUserName,\n pr,\n );\n }\n }\n\n // Abort and return null if no match was found\n if (!pr) {\n return null;\n }\n\n return pr;\n },\n\n async findPr({\n branchName,\n prTitle: title,\n state = 'all',\n includeOtherAuthors,\n targetBranch,\n }: FindPRConfig): Promise<Pr | null> {\n logger.debug(`findPr(${branchName}, ${title!}, ${state})`);\n if (includeOtherAuthors && isString(targetBranch)) {\n // do not use pr cache as it only fetches prs created by the bot account\n const pr = await helper.getPRByBranch(\n config.repository,\n targetBranch,\n branchName,\n );\n if (!pr) {\n return null;\n }\n\n return toRenovatePR(pr, null);\n }\n const prList = await platform.getPrList();\n const pr = prList.find(\n (p) =>\n p.sourceRepo === config.repository &&\n p.sourceBranch === branchName &&\n matchesState(p.state, state) &&\n (!title || p.title === title),\n );\n\n if (pr) {\n logger.debug(`Found PR #${pr.number}`);\n }\n return pr ?? null;\n },\n\n async createPr({\n sourceBranch,\n targetBranch,\n prTitle,\n prBody: rawBody,\n labels: labelNames,\n platformPrOptions,\n draftPR,\n }: CreatePRConfig): Promise<Pr> {\n let title = prTitle;\n const base = targetBranch;\n const head = sourceBranch;\n const body = sanitize(rawBody);\n if (draftPR) {\n title = DRAFT_PREFIX + title;\n }\n\n logger.debug(`Creating pull request: ${title} (${head} => ${base})`);\n try {\n const labels = Array.isArray(labelNames)\n ? await map(labelNames, lookupLabelByName)\n : [];\n const gpr = await helper.createPR(config.repository, {\n base,\n head,\n title,\n body,\n labels: labels.filter(isNumber),\n });\n\n if (platformPrOptions?.usePlatformAutomerge) {\n // Only Gitea v1.24.0+ and Forgejo v10.0.0+ support delete_branch_after_merge.\n // This is required to not have undesired behavior when renovate finds existing branches on next run.\n if (\n semver.gte(defaults.version, defaults.isForgejo ? '10.0.0' : '1.24.0')\n ) {\n try {\n await helper.mergePR(config.repository, gpr.number, {\n Do:\n getMergeMethod(platformPrOptions?.automergeStrategy) ??\n config.mergeMethod,\n merge_when_checks_succeed: true,\n delete_branch_after_merge: true,\n });\n\n logger.debug(\n { prNumber: gpr.number },\n 'Gitea-native automerge: success',\n );\n } catch (err) {\n logger.warn(\n { err, prNumber: gpr.number },\n 'Gitea-native automerge: fail',\n );\n }\n } else {\n logger.debug(\n { prNumber: gpr.number },\n `Gitea-native automerge: not supported on this version of ${defaults.isForgejo ? 'Forgejo' : 'Gitea'}. Use ${defaults.isForgejo ? '10.0.0' : '1.24.0'} or newer.`,\n );\n }\n }\n\n const pr = toRenovatePR(gpr, botUserName);\n if (!pr) {\n throw new Error('Can not parse newly created Pull Request');\n }\n\n await GiteaPrCache.setPr(\n giteaHttp,\n config.repository,\n config.ignorePrAuthor,\n botUserName,\n pr,\n );\n return pr;\n } catch (err) {\n // When the user manually deletes a branch from Renovate, the PR remains but is no longer linked to any branch. In\n // the most recent versions of Gitea, the PR gets automatically closed when that happens, but older versions do\n // not handle this properly and keep the PR open. As pushing a branch with the same name resurrects the PR, this\n // would cause a HTTP 409 conflict error, which we hereby gracefully handle.\n if (err.statusCode === 409) {\n logger.warn(\n { prTitle: title, sourceBranch },\n 'Attempting to gracefully recover from 409 Conflict response in createPr()',\n );\n\n // Refresh cached PR list and search for pull request with matching information\n GiteaPrCache.forceSync();\n const pr = await platform.findPr({\n branchName: sourceBranch,\n state: 'open',\n });\n\n // If a valid PR was found, return and gracefully recover from the error. Otherwise, abort and throw error.\n if (pr?.bodyStruct) {\n if (pr.title !== title || pr.bodyStruct.hash !== hashBody(body)) {\n logger.debug(\n `Recovered from 409 Conflict, but PR for ${sourceBranch} is outdated. Updating...`,\n );\n await platform.updatePr({\n number: pr.number,\n prTitle: title,\n prBody: body,\n });\n pr.title = title;\n pr.bodyStruct = getPrBodyStruct(body);\n } else {\n logger.debug(\n `Recovered from 409 Conflict and PR for ${sourceBranch} is up-to-date`,\n );\n }\n\n return pr;\n }\n }\n\n throw err;\n }\n },\n\n async updatePr({\n number,\n prTitle,\n prBody: body,\n labels,\n state,\n targetBranch,\n }: UpdatePrConfig): Promise<void> {\n let title = prTitle;\n if ((await getPrList()).find((pr) => pr.number === number)?.isDraft) {\n title = DRAFT_PREFIX + title;\n }\n\n const prUpdateParams: PRUpdateParams = {\n title,\n ...(body && { body }),\n ...(state && { state }),\n };\n if (targetBranch) {\n prUpdateParams.base = targetBranch;\n }\n\n /**\n * Update PR labels.\n * In the Gitea API, labels are replaced on each update if the field is present.\n * If the field is not present (i.e., undefined), labels aren't updated.\n * However, the labels array must contain label IDs instead of names,\n * so a lookup is performed to fetch the details (including the ID) of each label.\n */\n if (Array.isArray(labels)) {\n prUpdateParams.labels = (await map(labels, lookupLabelByName)).filter(\n isNumber,\n );\n if (labels.length !== prUpdateParams.labels.length) {\n logger.warn(\n 'Some labels could not be looked up. Renovate may halt label updates assuming changes by others.',\n );\n }\n }\n\n const gpr = await helper.updatePR(\n config.repository,\n number,\n prUpdateParams,\n );\n const pr = toRenovatePR(gpr, botUserName);\n if (pr) {\n await GiteaPrCache.setPr(\n giteaHttp,\n config.repository,\n config.ignorePrAuthor,\n botUserName,\n pr,\n );\n }\n },\n\n async mergePr({ id, strategy }: MergePRConfig): Promise<boolean> {\n try {\n await helper.mergePR(config.repository, id, {\n Do: getMergeMethod(strategy) ?? config.mergeMethod,\n });\n return true;\n } catch (err) {\n logger.warn({ err, id }, 'Merging of PR failed');\n return false;\n }\n },\n\n getIssueList(): Promise<Issue[]> {\n if (config.hasIssuesEnabled === false) {\n return Promise.resolve([]);\n }\n config.issueList ??= helper\n .searchIssues(config.repository, { state: 'all' }, { memCache: false })\n .then((issues) => {\n const issueList = issues.map(toRenovateIssue);\n logger.debug(`Retrieved ${issueList.length} Issues`);\n return issueList;\n });\n\n return config.issueList;\n },\n\n async getIssue(number: number, memCache = true): Promise<Issue | null> {\n if (config.hasIssuesEnabled === false) {\n return null;\n }\n try {\n const body = (\n await helper.getIssue(config.repository, number, { memCache })\n ).body;\n return {\n number,\n body,\n };\n } catch (err) /* v8 ignore start */ {\n logger.debug({ err, number }, 'Error getting issue');\n return null;\n } /* v8 ignore stop */\n },\n\n async findIssue(title: string): Promise<Issue | null> {\n const issueList = await platform.getIssueList();\n const issue = issueList.find(\n (i) => i.state === 'open' && i.title === title,\n );\n\n if (!issue) {\n return null;\n }\n // TODO: types (#22198)\n logger.debug(`Found Issue #${issue.number!}`);\n // TODO #22198\n return getIssue!(issue.number!);\n },\n\n async ensureIssue({\n title,\n reuseTitle,\n body: content,\n labels: labelNames,\n shouldReOpen,\n once,\n }: EnsureIssueConfig): Promise<'updated' | 'created' | null> {\n logger.debug(`ensureIssue(${title})`);\n if (config.hasIssuesEnabled === false) {\n logger.info(\n 'Cannot ensure issue because issues are disabled in this repository',\n );\n return null;\n }\n try {\n const body = smartLinks(content);\n\n const issueList = await platform.getIssueList();\n let issues = issueList.filter((i) => i.title === title);\n if (!issues.length) {\n issues = issueList.filter((i) => i.title === reuseTitle);\n }\n\n const labels = Array.isArray(labelNames)\n ? (await Promise.all(labelNames.map(lookupLabelByName))).filter(\n isNumber,\n )\n : undefined;\n\n // Update any matching issues which currently exist\n if (issues.length) {\n let activeIssue = issues.find((i) => i.state === 'open');\n\n // If no active issue was found, decide if it shall be skipped, re-opened or updated without state change\n if (!activeIssue) {\n if (once) {\n logger.debug('Issue already closed - skipping update');\n return null;\n }\n if (shouldReOpen) {\n logger.debug('Reopening previously closed Issue');\n }\n\n // Pick the last issue in the list as the active one\n activeIssue = issues[issues.length - 1];\n }\n\n // Close any duplicate issues\n for (const issue of issues) {\n if (issue.state === 'open' && issue.number !== activeIssue.number) {\n // TODO: types (#22198)\n logger.warn({ issueNo: issue.number! }, 'Closing duplicate issue');\n // TODO #22198\n await helper.closeIssue(config.repository, issue.number!);\n }\n }\n\n // Check if issue has already correct state\n if (\n activeIssue.title === title &&\n activeIssue.body === body &&\n activeIssue.state === 'open'\n ) {\n logger.debug(\n // TODO: types (#22198)\n `Issue #${activeIssue.number!} is open and up to date - nothing to do`,\n );\n return null;\n }\n\n if (shouldReOpen || activeIssue.state === 'open') {\n // Update issue body and re-open\n logger.debug(`Updating Issue #${activeIssue.number}`);\n const existingIssue = await helper.updateIssue(\n config.repository,\n // TODO #22198\n activeIssue.number!,\n {\n body,\n title,\n state: 'open',\n },\n );\n\n // Test whether the issues need to be updated\n const existingLabelIds = (existingIssue.labels ?? []).map(\n (label) => label.id,\n );\n if (\n labels &&\n (labels.length !== existingLabelIds.length ||\n labels.filter((labelId) => !existingLabelIds.includes(labelId))\n .length !== 0)\n ) {\n await helper.updateIssueLabels(\n config.repository,\n // TODO #22198\n activeIssue.number!,\n {\n labels,\n },\n );\n }\n\n return 'updated';\n }\n }\n\n // Create new issue and reset cache\n const issue = await helper.createIssue(config.repository, {\n body,\n title,\n labels,\n });\n logger.debug(`Created new Issue #${issue.number}`);\n config.issueList = null;\n\n return 'created';\n } catch (err) {\n logger.warn({ err }, 'Could not ensure issue');\n }\n\n return null;\n },\n\n async ensureIssueClosing(title: string): Promise<void> {\n logger.debug(`ensureIssueClosing(${title})`);\n if (config.hasIssuesEnabled === false) {\n return;\n }\n const issueList = await platform.getIssueList();\n for (const issue of issueList) {\n if (issue.state === 'open' && issue.title === title) {\n logger.debug(`Closing issue...issueNo: ${issue.number!}`);\n // TODO #22198\n await helper.closeIssue(config.repository, issue.number!);\n }\n }\n },\n\n async deleteLabel(issue: number, labelName: string): Promise<void> {\n logger.debug(`Deleting label ${labelName} from Issue #${issue}`);\n const label = await lookupLabelByName(labelName);\n if (label) {\n await helper.unassignLabel(config.repository, issue, label);\n } else {\n logger.warn({ issue, labelName }, 'Failed to lookup label for deletion');\n }\n },\n\n async ensureComment({\n number: issue,\n topic,\n content,\n }: EnsureCommentConfig): Promise<boolean> {\n try {\n let body = sanitize(content);\n const commentList = await helper.getComments(config.repository, issue);\n\n // Search comment by either topic or exact body\n let comment: Comment | null = null;\n if (topic) {\n comment = findCommentByTopic(commentList, topic);\n body = `### ${topic}\\n\\n${body}`;\n } else {\n comment = findCommentByContent(commentList, body);\n }\n\n // Create a new comment if no match has been found, otherwise update if necessary\n if (!comment) {\n comment = await helper.createComment(config.repository, issue, body);\n logger.info(\n { repository: config.repository, issue, comment: comment.id },\n 'Comment added',\n );\n } else if (comment.body === body) {\n logger.debug(`Comment #${comment.id} is already up-to-date`);\n } else {\n await helper.updateComment(config.repository, comment.id, body);\n logger.debug(\n { repository: config.repository, issue, comment: comment.id },\n 'Comment updated',\n );\n }\n\n return true;\n } catch (err) {\n logger.warn({ err, issue, subject: topic }, 'Error ensuring comment');\n return false;\n }\n },\n\n async ensureCommentRemoval(\n deleteConfig: EnsureCommentRemovalConfig,\n ): Promise<void> {\n const { number: issue } = deleteConfig;\n const key =\n deleteConfig.type === 'by-topic'\n ? deleteConfig.topic\n : deleteConfig.content;\n logger.debug(`Ensuring comment \"${key}\" in #${issue} is removed`);\n const commentList = await helper.getComments(config.repository, issue);\n\n let comment: Comment | null = null;\n if (deleteConfig.type === 'by-topic') {\n comment = findCommentByTopic(commentList, deleteConfig.topic);\n } else if (deleteConfig.type === 'by-content') {\n const body = sanitize(deleteConfig.content);\n comment = findCommentByContent(commentList, body);\n }\n\n // Abort and do nothing if no matching comment was found\n if (!comment) {\n return;\n }\n\n // Try to delete comment\n try {\n await helper.deleteComment(config.repository, comment.id);\n } catch (err) {\n logger.warn(\n { err, issue, config: deleteConfig },\n 'Error deleting comment',\n );\n }\n },\n\n async getBranchPr(branchName: string): Promise<Pr | null> {\n logger.debug(`getBranchPr(${branchName})`);\n const pr = await platform.findPr({ branchName, state: 'open' });\n return pr ? platform.getPr(pr.number) : null;\n },\n\n async addAssignees(number: number, assignees: string[]): Promise<void> {\n logger.debug(\n `Updating assignees '${assignees?.join(', ')}' on Issue #${number}`,\n );\n await helper.updateIssue(config.repository, number, {\n assignees,\n });\n },\n\n async addReviewers(number: number, reviewers: string[]): Promise<void> {\n logger.debug(`Adding reviewers '${reviewers?.join(', ')}' to #${number}`);\n if (semver.lt(defaults.version, '1.14.0')) {\n logger.debug(\n { version: defaults.version },\n 'Adding reviewer not yet supported.',\n );\n return;\n }\n try {\n await helper.requestPrReviewers(config.repository, number, { reviewers });\n } catch (err) {\n logger.warn({ err, number, reviewers }, 'Failed to assign reviewer');\n }\n },\n\n massageMarkdown(prBody: string): string {\n return smartTruncate(smartLinks(prBody), maxBodyLength());\n },\n\n maxBodyLength,\n};\n\nexport function maxBodyLength(): number {\n return 1000000;\n}\n\n/* eslint-disable @typescript-eslint/unbound-method */\nexport const {\n addAssignees,\n addReviewers,\n createPr,\n deleteLabel,\n ensureComment,\n ensureCommentRemoval,\n ensureIssue,\n ensureIssueClosing,\n findIssue,\n findPr,\n getBranchPr,\n getBranchStatus,\n getBranchStatusCheck,\n getIssue,\n getRawFile,\n getJsonFile,\n getIssueList,\n getPr,\n massageMarkdown,\n getPrList,\n getRepos,\n initPlatform,\n initRepo,\n mergePr,\n setBranchStatus,\n updatePr,\n} = platform;\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/platform/gitea/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { isNumber, isString } from '@sindresorhus/is';\nimport semver from 'semver';\nimport {\n REPOSITORY_ACCESS_FORBIDDEN,\n REPOSITORY_ARCHIVED,\n REPOSITORY_BLOCKED,\n REPOSITORY_CHANGED,\n REPOSITORY_EMPTY,\n REPOSITORY_MIRRORED,\n} from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport type { BranchStatus } from '../../../types';\nimport { deduplicateArray } from '../../../util/array';\nimport { parseJson } from '../../../util/common';\nimport { getEnv } from '../../../util/env';\nimport * as git from '../../../util/git';\nimport { setBaseUrl } from '../../../util/http/gitea';\nimport { map } from '../../../util/promises';\nimport { sanitize } from '../../../util/sanitize';\nimport { ensureTrailingSlash } from '../../../util/url';\nimport { getPrBodyStruct, hashBody } from '../pr-body';\nimport type {\n AutodiscoverConfig,\n BranchStatusConfig,\n CreatePRConfig,\n EnsureCommentConfig,\n EnsureCommentRemovalConfig,\n EnsureIssueConfig,\n FindPRConfig,\n Issue,\n MergePRConfig,\n Platform,\n PlatformParams,\n PlatformResult,\n Pr,\n RepoParams,\n RepoResult,\n RepoSortMethod,\n SortMethod,\n UpdatePrConfig,\n} from '../types';\nimport { repoFingerprint } from '../util';\nimport { smartTruncate } from '../utils/pr-body';\nimport * as helper from './gitea-helper';\nimport { giteaHttp } from './gitea-helper';\nimport { GiteaPrCache } from './pr-cache';\nimport type {\n CombinedCommitStatus,\n Comment,\n Label,\n PRMergeMethod,\n PRUpdateParams,\n Repo,\n} from './types';\nimport {\n DRAFT_PREFIX,\n getMergeMethod,\n getRepoUrl,\n isAllowed,\n smartLinks,\n toRenovatePR,\n trimTrailingApiPath,\n usableRepo,\n} from './utils';\n\ninterface GiteaRepoConfig {\n ignorePrAuthor: boolean;\n repository: string;\n mergeMethod: PRMergeMethod;\n\n issueList: Promise<Issue[]> | null;\n labelList: Promise<Label[]> | null;\n defaultBranch: string;\n cloneSubmodules: boolean;\n cloneSubmodulesFilter: string[] | undefined;\n hasIssuesEnabled: boolean;\n}\n\nexport const id = 'gitea';\n\nconst defaults = {\n hostType: 'gitea',\n endpoint: 'https://gitea.com/',\n version: '0.0.0',\n isForgejo: false,\n};\n\nlet config: GiteaRepoConfig = {} as any;\nlet botUserID: number;\nlet botUserName: string;\n\nexport function resetPlatform(): void {\n config = {} as any;\n botUserID = undefined as never;\n botUserName = undefined as never;\n defaults.hostType = 'gitea';\n defaults.endpoint = 'https://gitea.com/';\n defaults.version = '0.0.0';\n defaults.isForgejo = false;\n setBaseUrl(defaults.endpoint);\n}\n\nfunction toRenovateIssue(data: Issue): Issue {\n return {\n number: data.number,\n state: data.state,\n title: data.title,\n body: data.body,\n };\n}\n\nfunction matchesState(actual: string, expected: string): boolean {\n if (expected === 'all') {\n return true;\n }\n if (expected.startsWith('!')) {\n return actual !== expected.substring(1);\n }\n\n return actual === expected;\n}\n\nfunction findCommentByTopic(\n comments: Comment[],\n topic: string,\n): Comment | null {\n return comments.find((c) => c.body.startsWith(`### ${topic}\\n\\n`)) ?? null;\n}\n\nfunction findCommentByContent(\n comments: Comment[],\n content: string,\n): Comment | null {\n return comments.find((c) => c.body.trim() === content) ?? null;\n}\n\nfunction getLabelList(): Promise<Label[]> {\n if (config.labelList === null) {\n const repoLabels = helper\n .getRepoLabels(config.repository, {\n memCache: false,\n })\n .then((labels) => {\n logger.debug(`Retrieved ${labels.length} repo labels`);\n return labels;\n });\n\n const orgLabels = helper\n .getOrgLabels(config.repository.split('/')[0], {\n memCache: false,\n })\n .then((labels) => {\n logger.debug(`Retrieved ${labels.length} org labels`);\n return labels;\n })\n .catch((err) => {\n // Will fail if owner of repo is not org or Gitea version < 1.12\n logger.debug(`Unable to fetch organization labels`);\n return [] as Label[];\n });\n\n config.labelList = Promise.all([repoLabels, orgLabels]).then((labels) =>\n ([] as Label[]).concat(...labels),\n );\n }\n\n return config.labelList;\n}\n\nasync function lookupLabelByName(name: string): Promise<number | null> {\n logger.debug(`lookupLabelByName(${name})`);\n const labelList = await getLabelList();\n return labelList.find((l) => l.name === name)?.id ?? null;\n}\n\ninterface FetchRepositoriesArgs {\n topic?: string;\n sort?: RepoSortMethod;\n order?: SortMethod;\n}\n\nasync function fetchRepositories({\n topic,\n sort,\n order,\n}: FetchRepositoriesArgs): Promise<string[]> {\n const repos = await helper.searchRepos({\n uid: botUserID,\n archived: false,\n ...(topic && {\n topic: true,\n q: topic,\n }),\n ...(sort && {\n sort,\n }),\n ...(order && {\n order,\n }),\n });\n return repos.filter(usableRepo).map((r) => r.full_name);\n}\n\nconst platform: Platform = {\n async initPlatform({\n endpoint,\n token,\n }: PlatformParams): Promise<PlatformResult> {\n if (!token) {\n throw new Error('Init: You must configure a Gitea personal access token');\n }\n\n if (endpoint) {\n let baseEndpoint = trimTrailingApiPath(endpoint);\n baseEndpoint = ensureTrailingSlash(baseEndpoint);\n defaults.endpoint = baseEndpoint;\n } else {\n logger.debug('Using default Gitea endpoint: ' + defaults.endpoint);\n }\n setBaseUrl(defaults.endpoint);\n\n let gitAuthor: string;\n try {\n const user = await helper.getCurrentUser({ token });\n gitAuthor = `${user.full_name ?? user.username} <${user.email}>`;\n botUserID = user.id;\n botUserName = user.username;\n const env = getEnv();\n /* v8 ignore next: experimental feature */\n if (semver.valid(env.RENOVATE_X_PLATFORM_VERSION)) {\n defaults.version = env.RENOVATE_X_PLATFORM_VERSION!;\n } else {\n defaults.version = await helper.getVersion({ token });\n }\n if (defaults.version?.includes('gitea-')) {\n defaults.isForgejo = true;\n logger.info(\n `Detected Forgejo instance, please use 'forgejo' platform instead`,\n );\n }\n logger.debug(\n `${defaults.isForgejo ? 'Forgejo' : 'Gitea'} version: ${defaults.version}`,\n );\n } catch (err) {\n logger.debug(\n { err },\n 'Error authenticating with Gitea. Check your token',\n );\n throw new Error('Init: Authentication failure');\n }\n\n return {\n endpoint: defaults.endpoint,\n gitAuthor,\n };\n },\n\n async getRawFile(\n fileName: string,\n repoName?: string,\n branchOrTag?: string,\n ): Promise<string | null> {\n const repo = repoName ?? config.repository;\n const contents = await helper.getRepoContents(repo, fileName, branchOrTag);\n return contents.contentString ?? null;\n },\n\n async getJsonFile(\n fileName: string,\n repoName?: string,\n branchOrTag?: string,\n ): Promise<any> {\n // TODO #22198\n const raw = await platform.getRawFile(fileName, repoName, branchOrTag);\n return parseJson(raw, fileName);\n },\n\n async initRepo({\n repository,\n cloneSubmodules,\n cloneSubmodulesFilter,\n gitUrl,\n ignorePrAuthor,\n }: RepoParams): Promise<RepoResult> {\n let repo: Repo;\n\n config = {} as any;\n config.repository = repository;\n config.cloneSubmodules = !!cloneSubmodules;\n config.cloneSubmodulesFilter = cloneSubmodulesFilter;\n config.ignorePrAuthor = !!ignorePrAuthor;\n\n // Try to fetch information about repository\n try {\n repo = await helper.getRepo(repository);\n } catch (err) {\n logger.debug({ err }, 'Unknown Gitea initRepo error');\n throw err;\n }\n\n // Ensure appropriate repository state and permissions\n if (repo.archived) {\n logger.debug('Repository is archived - aborting renovation');\n throw new Error(REPOSITORY_ARCHIVED);\n }\n if (repo.mirror) {\n logger.debug('Repository is a mirror - aborting renovation');\n throw new Error(REPOSITORY_MIRRORED);\n }\n if (repo.permissions.pull === false || repo.permissions.push === false) {\n logger.debug(\n 'Repository does not permit pull or push - aborting renovation',\n );\n throw new Error(REPOSITORY_ACCESS_FORBIDDEN);\n }\n if (repo.empty) {\n logger.debug('Repository is empty - aborting renovation');\n throw new Error(REPOSITORY_EMPTY);\n }\n\n if (repo.has_pull_requests === false) {\n logger.debug('Repo has disabled pull requests - aborting renovation');\n throw new Error(REPOSITORY_BLOCKED);\n }\n\n // similar to gitea behaviour- if default merge style is allowed, use this;\n // else fall back to predefined order. Order chosen to minimize commits - see\n // https://github.com/renovatebot/renovate/pull/37768 for discussion.\n const preferredOrder: PRMergeMethod[] = [\n repo.default_merge_style,\n 'fast-forward-only',\n 'squash',\n 'merge',\n 'rebase',\n 'rebase-merge',\n ];\n\n const mergeStyle = preferredOrder.find((style) => isAllowed(style, repo));\n\n if (mergeStyle) {\n config.mergeMethod = mergeStyle;\n } else {\n logger.debug(\n 'Repository has no allowed merge methods - aborting renovation',\n );\n throw new Error(REPOSITORY_BLOCKED);\n }\n\n // Determine author email and branches\n config.defaultBranch = repo.default_branch;\n logger.debug(`${repository} default branch = ${config.defaultBranch}`);\n\n const url = getRepoUrl(repo, gitUrl, defaults.endpoint);\n\n // Initialize Git storage\n await git.initRepo({\n ...config,\n url,\n });\n\n // Reset cached resources\n config.issueList = null;\n config.labelList = null;\n config.hasIssuesEnabled = !repo.external_tracker && repo.has_issues;\n\n return {\n defaultBranch: config.defaultBranch,\n isFork: !!repo.fork,\n repoFingerprint: repoFingerprint(repo.id, defaults.endpoint),\n };\n },\n\n async getRepos(config?: AutodiscoverConfig): Promise<string[]> {\n logger.debug('Auto-discovering Gitea repositories');\n try {\n if (config?.topics) {\n logger.debug({ topics: config.topics }, 'Auto-discovering by topics');\n const fetchRepoArgs: FetchRepositoriesArgs[] = config.topics.map(\n (topic) => {\n return {\n topic,\n sort: config.sort,\n order: config.order,\n };\n },\n );\n const repos = await map(fetchRepoArgs, fetchRepositories);\n return deduplicateArray(repos.flat());\n } else if (config?.namespaces) {\n logger.debug(\n { namespaces: config.namespaces },\n 'Auto-discovering by organization',\n );\n const repos = await map(\n config.namespaces,\n async (organization: string) => {\n const orgRepos = await helper.orgListRepos(organization);\n return orgRepos\n .filter((r) => !r.mirror && !r.archived)\n .map((r) => r.full_name);\n },\n );\n return deduplicateArray(repos.flat());\n } else {\n return await fetchRepositories({\n sort: config?.sort,\n order: config?.order,\n });\n }\n } catch (err) {\n logger.error({ err }, 'Gitea getRepos() error');\n throw err;\n }\n },\n\n async setBranchStatus({\n branchName,\n context,\n description,\n state,\n url: target_url,\n }: BranchStatusConfig): Promise<void> {\n try {\n // Create new status for branch commit\n const branchCommit = git.getBranchCommit(branchName);\n // TODO: check branchCommit\n\n await helper.createCommitStatus(config.repository, branchCommit!, {\n state: helper.renovateToGiteaStatusMapping[state] || 'pending',\n context,\n description,\n ...(target_url && { target_url }),\n });\n\n // Refresh caches by re-fetching commit status for branch\n await helper.getCombinedCommitStatus(config.repository, branchName, {\n memCache: false,\n });\n } catch (err) {\n logger.warn({ err }, 'Failed to set branch status');\n }\n },\n\n async getBranchStatus(\n branchName: string,\n internalChecksAsSuccess: boolean,\n ): Promise<BranchStatus> {\n let ccs: CombinedCommitStatus;\n try {\n ccs = await helper.getCombinedCommitStatus(config.repository, branchName);\n } catch (err) {\n if (err.statusCode === 404) {\n logger.debug(\n 'Received 404 when checking branch status, assuming branch deletion',\n );\n throw new Error(REPOSITORY_CHANGED);\n }\n\n logger.debug('Unknown error when checking branch status');\n throw err;\n }\n\n logger.debug({ ccs }, 'Branch status check result');\n if (\n !internalChecksAsSuccess &&\n ccs.worstStatus === 'success' &&\n ccs.statuses.every((status) => status.context?.startsWith('renovate/'))\n ) {\n logger.debug(\n 'Successful checks are all internal renovate/ checks, so returning \"pending\" branch status',\n );\n return 'yellow';\n }\n\n /* v8 ignore next */\n return helper.giteaToRenovateStatusMapping[ccs.worstStatus] ?? 'yellow';\n },\n\n async getBranchStatusCheck(\n branchName: string,\n context: string,\n ): Promise<BranchStatus | null> {\n const ccs = await helper.getCombinedCommitStatus(\n config.repository,\n branchName,\n );\n const cs = ccs.statuses.find((s) => s.context === context);\n if (!cs) {\n return null;\n } // no status check exists\n const status = helper.giteaToRenovateStatusMapping[cs.status];\n if (status) {\n return status;\n }\n logger.warn(\n { check: cs },\n 'Could not map Gitea status value to Renovate status',\n );\n return 'yellow';\n },\n\n getPrList(): Promise<Pr[]> {\n return GiteaPrCache.getPrs(\n giteaHttp,\n config.repository,\n config.ignorePrAuthor,\n botUserName,\n );\n },\n\n async getPr(number: number): Promise<Pr | null> {\n // Search for pull request in cached list or attempt to query directly\n const prList = await platform.getPrList();\n let pr = prList.find((p) => p.number === number) ?? null;\n if (pr) {\n logger.debug('Returning from cached PRs');\n } else {\n logger.debug('PR not found in cached PRs - trying to fetch directly');\n const gpr = await helper.getPR(config.repository, number);\n pr = toRenovatePR(gpr, botUserName);\n\n // Add pull request to cache for further lookups / queries\n if (pr) {\n await GiteaPrCache.setPr(\n giteaHttp,\n config.repository,\n config.ignorePrAuthor,\n botUserName,\n pr,\n );\n }\n }\n\n // Abort and return null if no match was found\n if (!pr) {\n return null;\n }\n\n return pr;\n },\n\n async findPr({\n branchName,\n prTitle: title,\n state = 'all',\n includeOtherAuthors,\n targetBranch,\n }: FindPRConfig): Promise<Pr | null> {\n logger.debug(`findPr(${branchName}, ${title!}, ${state})`);\n if (includeOtherAuthors && isString(targetBranch)) {\n // do not use pr cache as it only fetches prs created by the bot account\n const pr = await helper.getPRByBranch(\n config.repository,\n targetBranch,\n branchName,\n );\n if (!pr) {\n return null;\n }\n\n return toRenovatePR(pr, null);\n }\n const prList = await platform.getPrList();\n const pr = prList.find(\n (p) =>\n p.sourceRepo === config.repository &&\n p.sourceBranch === branchName &&\n matchesState(p.state, state) &&\n (!title || p.title === title),\n );\n\n if (pr) {\n logger.debug(`Found PR #${pr.number}`);\n }\n return pr ?? null;\n },\n\n async createPr({\n sourceBranch,\n targetBranch,\n prTitle,\n prBody: rawBody,\n labels: labelNames,\n platformPrOptions,\n draftPR,\n }: CreatePRConfig): Promise<Pr> {\n let title = prTitle;\n const base = targetBranch;\n const head = sourceBranch;\n const body = sanitize(rawBody);\n if (draftPR) {\n title = DRAFT_PREFIX + title;\n }\n\n logger.debug(`Creating pull request: ${title} (${head} => ${base})`);\n try {\n const labels = Array.isArray(labelNames)\n ? await map(labelNames, lookupLabelByName)\n : [];\n const gpr = await helper.createPR(config.repository, {\n base,\n head,\n title,\n body,\n labels: labels.filter(isNumber),\n });\n\n if (platformPrOptions?.usePlatformAutomerge) {\n // Only Gitea v1.24.0+ and Forgejo v10.0.0+ support delete_branch_after_merge.\n // This is required to not have undesired behavior when renovate finds existing branches on next run.\n if (\n semver.gte(defaults.version, defaults.isForgejo ? '10.0.0' : '1.24.0')\n ) {\n try {\n await helper.mergePR(config.repository, gpr.number, {\n Do:\n getMergeMethod(platformPrOptions?.automergeStrategy) ??\n config.mergeMethod,\n merge_when_checks_succeed: true,\n delete_branch_after_merge: true,\n });\n\n logger.debug(\n { prNumber: gpr.number },\n 'Gitea-native automerge: success',\n );\n } catch (err) {\n logger.warn(\n { err, prNumber: gpr.number },\n 'Gitea-native automerge: fail',\n );\n }\n } else {\n logger.debug(\n { prNumber: gpr.number },\n `Gitea-native automerge: not supported on this version of ${defaults.isForgejo ? 'Forgejo' : 'Gitea'}. Use ${defaults.isForgejo ? '10.0.0' : '1.24.0'} or newer.`,\n );\n }\n }\n\n const pr = toRenovatePR(gpr, botUserName);\n if (!pr) {\n throw new Error('Can not parse newly created Pull Request');\n }\n\n await GiteaPrCache.setPr(\n giteaHttp,\n config.repository,\n config.ignorePrAuthor,\n botUserName,\n pr,\n );\n return pr;\n } catch (err) {\n // When the user manually deletes a branch from Renovate, the PR remains but is no longer linked to any branch. In\n // the most recent versions of Gitea, the PR gets automatically closed when that happens, but older versions do\n // not handle this properly and keep the PR open. As pushing a branch with the same name resurrects the PR, this\n // would cause a HTTP 409 conflict error, which we hereby gracefully handle.\n if (err.statusCode === 409) {\n logger.warn(\n { prTitle: title, sourceBranch },\n 'Attempting to gracefully recover from 409 Conflict response in createPr()',\n );\n\n // Refresh cached PR list and search for pull request with matching information\n GiteaPrCache.forceSync();\n const pr = await platform.findPr({\n branchName: sourceBranch,\n state: 'open',\n });\n\n // If a valid PR was found, return and gracefully recover from the error. Otherwise, abort and throw error.\n if (pr?.bodyStruct) {\n if (pr.title !== title || pr.bodyStruct.hash !== hashBody(body)) {\n logger.debug(\n `Recovered from 409 Conflict, but PR for ${sourceBranch} is outdated. Updating...`,\n );\n await platform.updatePr({\n number: pr.number,\n prTitle: title,\n prBody: body,\n });\n pr.title = title;\n pr.bodyStruct = getPrBodyStruct(body);\n } else {\n logger.debug(\n `Recovered from 409 Conflict and PR for ${sourceBranch} is up-to-date`,\n );\n }\n\n return pr;\n }\n }\n\n throw err;\n }\n },\n\n async updatePr({\n number,\n prTitle,\n prBody: body,\n labels,\n state,\n targetBranch,\n }: UpdatePrConfig): Promise<void> {\n let title = prTitle;\n if ((await getPrList()).find((pr) => pr.number === number)?.isDraft) {\n title = DRAFT_PREFIX + title;\n }\n\n const prUpdateParams: PRUpdateParams = {\n title,\n ...(body && { body }),\n ...(state && { state }),\n };\n if (targetBranch) {\n prUpdateParams.base = targetBranch;\n }\n\n /**\n * Update PR labels.\n * In the Gitea API, labels are replaced on each update if the field is present.\n * If the field is not present (i.e., undefined), labels aren't updated.\n * However, the labels array must contain label IDs instead of names,\n * so a lookup is performed to fetch the details (including the ID) of each label.\n */\n if (Array.isArray(labels)) {\n prUpdateParams.labels = (await map(labels, lookupLabelByName)).filter(\n isNumber,\n );\n if (labels.length !== prUpdateParams.labels.length) {\n logger.warn(\n 'Some labels could not be looked up. Renovate may halt label updates assuming changes by others.',\n );\n }\n }\n\n const gpr = await helper.updatePR(\n config.repository,\n number,\n prUpdateParams,\n );\n const pr = toRenovatePR(gpr, botUserName);\n if (pr) {\n await GiteaPrCache.setPr(\n giteaHttp,\n config.repository,\n config.ignorePrAuthor,\n botUserName,\n pr,\n );\n }\n },\n\n async mergePr({ id, strategy }: MergePRConfig): Promise<boolean> {\n try {\n await helper.mergePR(config.repository, id, {\n Do: getMergeMethod(strategy) ?? config.mergeMethod,\n });\n return true;\n } catch (err) {\n logger.warn({ err, id }, 'Merging of PR failed');\n return false;\n }\n },\n\n getIssueList(): Promise<Issue[]> {\n if (config.hasIssuesEnabled === false) {\n return Promise.resolve([]);\n }\n config.issueList ??= helper\n .searchIssues(config.repository, { state: 'all' }, { memCache: false })\n .then((issues) => {\n const issueList = issues.map(toRenovateIssue);\n logger.debug(`Retrieved ${issueList.length} Issues`);\n return issueList;\n });\n\n return config.issueList;\n },\n\n async getIssue(number: number, memCache = true): Promise<Issue | null> {\n if (config.hasIssuesEnabled === false) {\n return null;\n }\n try {\n const body = (\n await helper.getIssue(config.repository, number, { memCache })\n ).body;\n return {\n number,\n body,\n };\n } catch (err) /* v8 ignore next */ {\n logger.debug({ err, number }, 'Error getting issue');\n return null;\n }\n },\n\n async findIssue(title: string): Promise<Issue | null> {\n const issueList = await platform.getIssueList();\n const issue = issueList.find(\n (i) => i.state === 'open' && i.title === title,\n );\n\n if (!issue) {\n return null;\n }\n // TODO: types (#22198)\n logger.debug(`Found Issue #${issue.number!}`);\n // TODO #22198\n return getIssue!(issue.number!);\n },\n\n async ensureIssue({\n title,\n reuseTitle,\n body: content,\n labels: labelNames,\n shouldReOpen,\n once,\n }: EnsureIssueConfig): Promise<'updated' | 'created' | null> {\n logger.debug(`ensureIssue(${title})`);\n if (config.hasIssuesEnabled === false) {\n logger.info(\n 'Cannot ensure issue because issues are disabled in this repository',\n );\n return null;\n }\n try {\n const body = smartLinks(content);\n\n const issueList = await platform.getIssueList();\n let issues = issueList.filter((i) => i.title === title);\n if (!issues.length) {\n issues = issueList.filter((i) => i.title === reuseTitle);\n }\n\n const labels = Array.isArray(labelNames)\n ? (await Promise.all(labelNames.map(lookupLabelByName))).filter(\n isNumber,\n )\n : undefined;\n\n // Update any matching issues which currently exist\n if (issues.length) {\n let activeIssue = issues.find((i) => i.state === 'open');\n\n // If no active issue was found, decide if it shall be skipped, re-opened or updated without state change\n if (!activeIssue) {\n if (once) {\n logger.debug('Issue already closed - skipping update');\n return null;\n }\n if (shouldReOpen) {\n logger.debug('Reopening previously closed Issue');\n }\n\n // Pick the last issue in the list as the active one\n activeIssue = issues[issues.length - 1];\n }\n\n // Close any duplicate issues\n for (const issue of issues) {\n if (issue.state === 'open' && issue.number !== activeIssue.number) {\n // TODO: types (#22198)\n logger.warn({ issueNo: issue.number! }, 'Closing duplicate issue');\n // TODO #22198\n await helper.closeIssue(config.repository, issue.number!);\n }\n }\n\n // Check if issue has already correct state\n if (\n activeIssue.title === title &&\n activeIssue.body === body &&\n activeIssue.state === 'open'\n ) {\n logger.debug(\n // TODO: types (#22198)\n `Issue #${activeIssue.number!} is open and up to date - nothing to do`,\n );\n return null;\n }\n\n if (shouldReOpen || activeIssue.state === 'open') {\n // Update issue body and re-open\n logger.debug(`Updating Issue #${activeIssue.number}`);\n const existingIssue = await helper.updateIssue(\n config.repository,\n // TODO #22198\n activeIssue.number!,\n {\n body,\n title,\n state: 'open',\n },\n );\n\n // Test whether the issues need to be updated\n const existingLabelIds = (existingIssue.labels ?? []).map(\n (label) => label.id,\n );\n if (\n labels &&\n (labels.length !== existingLabelIds.length ||\n labels.filter((labelId) => !existingLabelIds.includes(labelId))\n .length !== 0)\n ) {\n await helper.updateIssueLabels(\n config.repository,\n // TODO #22198\n activeIssue.number!,\n {\n labels,\n },\n );\n }\n\n return 'updated';\n }\n }\n\n // Create new issue and reset cache\n const issue = await helper.createIssue(config.repository, {\n body,\n title,\n labels,\n });\n logger.debug(`Created new Issue #${issue.number}`);\n config.issueList = null;\n\n return 'created';\n } catch (err) {\n logger.warn({ err }, 'Could not ensure issue');\n }\n\n return null;\n },\n\n async ensureIssueClosing(title: string): Promise<void> {\n logger.debug(`ensureIssueClosing(${title})`);\n if (config.hasIssuesEnabled === false) {\n return;\n }\n const issueList = await platform.getIssueList();\n for (const issue of issueList) {\n if (issue.state === 'open' && issue.title === title) {\n logger.debug(`Closing issue...issueNo: ${issue.number!}`);\n // TODO #22198\n await helper.closeIssue(config.repository, issue.number!);\n }\n }\n },\n\n async deleteLabel(issue: number, labelName: string): Promise<void> {\n logger.debug(`Deleting label ${labelName} from Issue #${issue}`);\n const label = await lookupLabelByName(labelName);\n if (label) {\n await helper.unassignLabel(config.repository, issue, label);\n } else {\n logger.warn({ issue, labelName }, 'Failed to lookup label for deletion');\n }\n },\n\n async ensureComment({\n number: issue,\n topic,\n content,\n }: EnsureCommentConfig): Promise<boolean> {\n try {\n let body = sanitize(content);\n const commentList = await helper.getComments(config.repository, issue);\n\n // Search comment by either topic or exact body\n let comment: Comment | null = null;\n if (topic) {\n comment = findCommentByTopic(commentList, topic);\n body = `### ${topic}\\n\\n${body}`;\n } else {\n comment = findCommentByContent(commentList, body);\n }\n\n // Create a new comment if no match has been found, otherwise update if necessary\n if (!comment) {\n comment = await helper.createComment(config.repository, issue, body);\n logger.info(\n { repository: config.repository, issue, comment: comment.id },\n 'Comment added',\n );\n } else if (comment.body === body) {\n logger.debug(`Comment #${comment.id} is already up-to-date`);\n } else {\n await helper.updateComment(config.repository, comment.id, body);\n logger.debug(\n { repository: config.repository, issue, comment: comment.id },\n 'Comment updated',\n );\n }\n\n return true;\n } catch (err) {\n logger.warn({ err, issue, subject: topic }, 'Error ensuring comment');\n return false;\n }\n },\n\n async ensureCommentRemoval(\n deleteConfig: EnsureCommentRemovalConfig,\n ): Promise<void> {\n const { number: issue } = deleteConfig;\n const key =\n deleteConfig.type === 'by-topic'\n ? deleteConfig.topic\n : deleteConfig.content;\n logger.debug(`Ensuring comment \"${key}\" in #${issue} is removed`);\n const commentList = await helper.getComments(config.repository, issue);\n\n let comment: Comment | null = null;\n if (deleteConfig.type === 'by-topic') {\n comment = findCommentByTopic(commentList, deleteConfig.topic);\n } else if (deleteConfig.type === 'by-content') {\n const body = sanitize(deleteConfig.content);\n comment = findCommentByContent(commentList, body);\n }\n\n // Abort and do nothing if no matching comment was found\n if (!comment) {\n return;\n }\n\n // Try to delete comment\n try {\n await helper.deleteComment(config.repository, comment.id);\n } catch (err) {\n logger.warn(\n { err, issue, config: deleteConfig },\n 'Error deleting comment',\n );\n }\n },\n\n async getBranchPr(branchName: string): Promise<Pr | null> {\n logger.debug(`getBranchPr(${branchName})`);\n const pr = await platform.findPr({ branchName, state: 'open' });\n return pr ? platform.getPr(pr.number) : null;\n },\n\n async addAssignees(number: number, assignees: string[]): Promise<void> {\n logger.debug(\n `Updating assignees '${assignees?.join(', ')}' on Issue #${number}`,\n );\n await helper.updateIssue(config.repository, number, {\n assignees,\n });\n },\n\n async addReviewers(number: number, reviewers: string[]): Promise<void> {\n logger.debug(`Adding reviewers '${reviewers?.join(', ')}' to #${number}`);\n if (semver.lt(defaults.version, '1.14.0')) {\n logger.debug(\n { version: defaults.version },\n 'Adding reviewer not yet supported.',\n );\n return;\n }\n try {\n await helper.requestPrReviewers(config.repository, number, { reviewers });\n } catch (err) {\n logger.warn({ err, number, reviewers }, 'Failed to assign reviewer');\n }\n },\n\n massageMarkdown(prBody: string): string {\n return smartTruncate(smartLinks(prBody), maxBodyLength());\n },\n\n maxBodyLength,\n};\n\nexport function maxBodyLength(): number {\n return 1000000;\n}\n\n/* eslint-disable @typescript-eslint/unbound-method */\nexport const {\n addAssignees,\n addReviewers,\n createPr,\n deleteLabel,\n ensureComment,\n ensureCommentRemoval,\n ensureIssue,\n ensureIssueClosing,\n findIssue,\n findPr,\n getBranchPr,\n getBranchStatus,\n getBranchStatusCheck,\n getIssue,\n getRawFile,\n getJsonFile,\n getIssueList,\n getPr,\n massageMarkdown,\n getPrList,\n getRepos,\n initPlatform,\n initRepo,\n mergePr,\n setBranchStatus,\n updatePr,\n} = platform;\n"]}
|