renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
70 lines (69 loc) • 2.66 kB
JavaScript
import "../../../constants/error-messages.js";
import { GlobalConfig } from "../../../config/global.js";
import { logger } from "../../../logger/index.js";
import { deleteLocalFile, readLocalFile, writeLocalFile } from "../../../util/fs/index.js";
import { exec } from "../../../util/exec/index.js";
import { processHostRules } from "../npm/post-update/rules.js";
import { getNpmrcContent, resetNpmrcContent, updateNpmrcContent } from "../npm/utils.js";
import { isEmptyArray } from "@sindresorhus/is";
import upath from "upath";
//#region lib/modules/manager/bun/artifacts.ts
async function updateArtifacts(updateArtifact) {
const { packageFileName, updatedDeps, newPackageFileContent, config } = updateArtifact;
logger.debug(`bun.updateArtifacts(${packageFileName})`);
const { isLockFileMaintenance } = config;
if (isEmptyArray(updatedDeps) && !isLockFileMaintenance) {
logger.debug("No updated bun deps - returning null");
return null;
}
const lockFileName = updatedDeps.find((dep) => dep.manager === "bun")?.lockFiles?.[0] ?? config.lockFiles?.[0];
if (!lockFileName) {
logger.debug(`bun: No lock file found`);
return null;
}
const oldLockFileContent = await readLocalFile(lockFileName);
if (!oldLockFileContent) {
logger.debug(`No ${lockFileName} found`);
return null;
}
const pkgFileDir = upath.dirname(packageFileName);
const npmrcContent = await getNpmrcContent(pkgFileDir);
const { additionalNpmrcContent } = processHostRules();
await updateNpmrcContent(pkgFileDir, npmrcContent, additionalNpmrcContent);
try {
await writeLocalFile(packageFileName, newPackageFileContent);
if (isLockFileMaintenance) await deleteLocalFile(lockFileName);
let cmd = "bun install";
if (!GlobalConfig.get("allowScripts") || config.ignoreScripts) cmd += " --ignore-scripts";
const execOptions = {
cwdFile: lockFileName,
docker: {},
toolConstraints: [{
toolName: "bun",
constraint: updateArtifact?.config?.constraints?.bun
}]
};
await exec(cmd, execOptions);
await resetNpmrcContent(pkgFileDir, npmrcContent);
const newLockFileContent = await readLocalFile(lockFileName);
if (!newLockFileContent || Buffer.compare(oldLockFileContent, newLockFileContent) === 0) return null;
return [{ file: {
type: "addition",
path: lockFileName,
contents: newLockFileContent
} }];
} catch (err) {
if (err.message === "temporary-error") throw err;
logger.warn({
lockfile: lockFileName,
err
}, `Failed to update lock file`);
return [{ artifactError: {
fileName: lockFileName,
stderr: err.message
} }];
}
}
//#endregion
export { updateArtifacts };
//# sourceMappingURL=artifacts.js.map