UNPKG

renovate

Version:

Automated dependency updates. Flexible so you don't need to be.

220 lines • 7.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildCodeCommitClient = buildCodeCommitClient; exports.deleteComment = deleteComment; exports.getPrComments = getPrComments; exports.updateComment = updateComment; exports.createPrComment = createPrComment; exports.updatePrStatus = updatePrStatus; exports.updatePrTitle = updatePrTitle; exports.updatePrDescription = updatePrDescription; exports.createPr = createPr; exports.getFile = getFile; exports.listPullRequests = listPullRequests; exports.getRepositoryInfo = getRepositoryInfo; exports.getPr = getPr; exports.listRepositories = listRepositories; exports.createPrApprovalRule = createPrApprovalRule; exports.getCodeCommitUrl = getCodeCommitUrl; const tslib_1 = require("tslib"); const client_codecommit_1 = require("@aws-sdk/client-codecommit"); const is_1 = tslib_1.__importDefault(require("@sindresorhus/is")); const aws4 = tslib_1.__importStar(require("aws4")); const error_messages_1 = require("../../../constants/error-messages"); const logger_1 = require("../../../logger"); const env_1 = require("../../../util/env"); let codeCommitClient; function buildCodeCommitClient() { if (!codeCommitClient) { codeCommitClient = new client_codecommit_1.CodeCommitClient({}); } /* v8 ignore start */ if (!codeCommitClient) { throw new Error('Failed to initialize codecommit client'); } /* v8 ignore stop */ } async function deleteComment(commentId) { const input = { commentId, }; const cmd = new client_codecommit_1.DeleteCommentContentCommand(input); return await codeCommitClient.send(cmd); } async function getPrComments(pullRequestId) { const input = { pullRequestId, }; const cmd = new client_codecommit_1.GetCommentsForPullRequestCommand(input); return await codeCommitClient.send(cmd); } async function updateComment(commentId, content) { const input = { commentId, content, }; const cmd = new client_codecommit_1.UpdateCommentCommand(input); return await codeCommitClient.send(cmd); } async function createPrComment(pullRequestId, repositoryName, content, beforeCommitId, afterCommitId) { const input = { pullRequestId, repositoryName, content, afterCommitId, beforeCommitId, }; const cmd = new client_codecommit_1.PostCommentForPullRequestCommand(input); return await codeCommitClient.send(cmd); } // export async function fastForwardMerge( // repositoryName: string, // sourceCommitSpecifier: string, // destinationReference: string // ): Promise<MergeBranchesByFastForwardOutput> { // const input: MergeBranchesByFastForwardInput = { // repositoryName, // sourceCommitSpecifier, // destinationCommitSpecifier: destinationReference, // targetBranch: destinationReference, // }; // const cmd = new MergeBranchesByFastForwardCommand(input); // return await codeCommitClient.send(cmd); // } // export async function squashMerge( // repositoryName: string, // sourceCommitSpecifier: string, // destinationReference: string, // commitMessage: string | undefined // ): Promise<MergeBranchesBySquashOutput> { // const input: MergeBranchesBySquashInput = { // repositoryName, // sourceCommitSpecifier, // destinationCommitSpecifier: destinationReference, // targetBranch: destinationReference, // commitMessage, // }; // const cmd = new MergeBranchesBySquashCommand(input); // return await codeCommitClient.send(cmd); // } async function updatePrStatus(pullRequestId, pullRequestStatus) { const input = { pullRequestId, pullRequestStatus, }; const cmd = new client_codecommit_1.UpdatePullRequestStatusCommand(input); return await codeCommitClient.send(cmd); } async function updatePrTitle(prNo, title) { const input = { pullRequestId: `${prNo}`, title, }; const cmd = new client_codecommit_1.UpdatePullRequestTitleCommand(input); return await codeCommitClient.send(cmd); } async function updatePrDescription(pullRequestId, description) { const input = { pullRequestId, description, }; const cmd = new client_codecommit_1.UpdatePullRequestDescriptionCommand(input); return await codeCommitClient.send(cmd); } async function createPr(title, description, sourceReference, destinationReference, repositoryName) { const input = { title, description, targets: [ { sourceReference, destinationReference, repositoryName, }, ], }; const cmd = new client_codecommit_1.CreatePullRequestCommand(input); return await codeCommitClient.send(cmd); } async function getFile(repositoryName, filePath, commitSpecifier) { const input = { repositoryName, filePath, commitSpecifier, }; const cmd = new client_codecommit_1.GetFileCommand(input); return await codeCommitClient.send(cmd); } async function listPullRequests(repositoryName) { const input = { repositoryName, pullRequestStatus: client_codecommit_1.PullRequestStatusEnum.OPEN, }; const cmd = new client_codecommit_1.ListPullRequestsCommand(input); return await codeCommitClient.send(cmd); } async function getRepositoryInfo(repository) { const input = { repositoryName: `${repository}`, }; const cmd = new client_codecommit_1.GetRepositoryCommand(input); return await codeCommitClient.send(cmd); } async function getPr(pullRequestId) { const input = { pullRequestId, }; const cmd = new client_codecommit_1.GetPullRequestCommand(input); let res; try { res = await codeCommitClient.send(cmd); } catch (err) { logger_1.logger.debug({ err }, 'failed to get PR using prId'); } return res; } async function listRepositories() { const input = {}; const cmd = new client_codecommit_1.ListRepositoriesCommand(input); return await codeCommitClient.send(cmd); } async function createPrApprovalRule(pullRequestId, approvalRuleContent) { const input = { approvalRuleContent, approvalRuleName: 'Reviewers By Renovate', pullRequestId, }; const cmd = new client_codecommit_1.CreatePullRequestApprovalRuleCommand(input); return await codeCommitClient.send(cmd); } function getCodeCommitUrl(repoMetadata, repoName) { logger_1.logger.debug('get code commit url'); const env = (0, env_1.getEnv)(); if (!env.AWS_ACCESS_KEY_ID || !env.AWS_SECRET_ACCESS_KEY) { if (repoMetadata.cloneUrlHttp) { return repoMetadata.cloneUrlHttp; } // shouldn't reach here, but just in case return `https://git-codecommit.${env.AWS_REGION ?? 'us-east-1'}.amazonaws.com/v1/repos/${repoName}`; } const signer = new aws4.RequestSigner({ service: 'codecommit', host: `git-codecommit.${env.AWS_REGION ?? 'us-east-1'}.amazonaws.com`, method: 'GIT', path: `v1/repos/${repoName}`, }); const dateTime = signer.getDateTime(); /* v8 ignore start */ if (!is_1.default.string(dateTime)) { throw new Error(error_messages_1.REPOSITORY_UNINITIATED); } /* v8 ignore stop */ const token = `${dateTime}Z${signer.signature()}`; let username = `${env.AWS_ACCESS_KEY_ID}${env.AWS_SESSION_TOKEN ? `%${env.AWS_SESSION_TOKEN}` : ''}`; // massaging username with the session token, /* v8 ignore start */ if (username.includes('/')) { username = username.replace(/\//g, '%2F'); } /* v8 ignore stop */ return `https://${username}:${token}@git-codecommit.${env.AWS_REGION ?? 'us-east-1'}.amazonaws.com/v1/repos/${repoName}`; } //# sourceMappingURL=codecommit-client.js.map