109 lines
4.2 KiB
JavaScript
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 = {});
|