2023-01-23 10:37:14 +01:00

109 lines
4.2 KiB
JavaScript

"use strict";
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var github_exports = {};
__export(github_exports, {
default: () => github_default
});
module.exports = __toCommonJS(github_exports);
var import_jsonwebtoken = __toESM(require("jsonwebtoken"));
var import_prisma = require("../../prisma");
var import_common = require("../buildPacks/common");
var import_common2 = require("../common");
var import_executeCommand = require("../executeCommand");
async function github_default({
applicationId,
workdir,
githubAppId,
repository,
apiUrl,
gitCommitHash,
htmlUrl,
branch,
buildId,
customPort,
forPublic
}) {
const { default: got } = await import("got");
const url = htmlUrl.replace("https://", "").replace("http://", "");
if (forPublic) {
await (0, import_common.saveBuildLog)({
line: `Cloning ${repository}:${branch}...`,
buildId,
applicationId
});
if (gitCommitHash) {
await (0, import_common.saveBuildLog)({
line: `Checking out ${gitCommitHash} commit...`,
buildId,
applicationId
});
}
await (0, import_executeCommand.executeCommand)({
command: `git clone -q -b ${branch} https://${url}/${repository}.git ${workdir}/ && cd ${workdir} && git checkout ${gitCommitHash || ""} && git submodule update --init --recursive && git lfs pull && cd .. `,
shell: true
});
} else {
const body = await import_prisma.prisma.githubApp.findUnique({ where: { id: githubAppId } });
if (body.privateKey)
body.privateKey = (0, import_common2.decrypt)(body.privateKey);
const { privateKey, appId, installationId } = body;
const githubPrivateKey = privateKey.replace(/\\n/g, "\n").replace(/"/g, "");
const payload = {
iat: Math.round(new Date().getTime() / 1e3),
exp: Math.round(new Date().getTime() / 1e3 + 60),
iss: appId
};
const jwtToken = import_jsonwebtoken.default.sign(payload, githubPrivateKey, {
algorithm: "RS256"
});
const { token } = await got.post(`${apiUrl}/app/installations/${installationId}/access_tokens`, {
headers: {
Authorization: `Bearer ${jwtToken}`,
Accept: "application/vnd.github.machine-man-preview+json"
}
}).json();
await (0, import_common.saveBuildLog)({
line: `Cloning ${repository}:${branch}...`,
buildId,
applicationId
});
if (gitCommitHash) {
await (0, import_common.saveBuildLog)({
line: `Checking out ${gitCommitHash} commit...`,
buildId,
applicationId
});
}
await (0, import_executeCommand.executeCommand)({
command: `git clone -q -b ${branch} https://x-access-token:${token}@${url}/${repository}.git --config core.sshCommand="ssh -p ${customPort}" ${workdir}/ && cd ${workdir} && git checkout ${gitCommitHash || ""} && git submodule update --init --recursive && git lfs pull && cd .. `,
shell: true
});
}
const { stdout: commit } = await (0, import_executeCommand.executeCommand)({ command: `cd ${workdir}/ && git rev-parse HEAD`, shell: true });
return commit.replace("\n", "");
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {});