renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
74 lines (73 loc) • 2.58 kB
JavaScript
import "../../../constants/error-messages.js";
import { logger } from "../../../logger/index.js";
import { findLocalSiblingOrParent, readLocalFile, writeLocalFile } from "../../../util/fs/index.js";
import { getGitEnvironmentVariables } from "../../../util/git/auth.js";
import { exec } from "../../../util/exec/index.js";
import { quote } from "shlex";
//#region lib/modules/manager/conan/artifacts.ts
async function conanLockUpdate(conanFilePath, isLockFileMaintenance, conanConstraint, pythonConstraint) {
await exec(`conan lock create ${quote(conanFilePath)}${isLockFileMaintenance ? " --lockfile=\"\"" : ""}`, {
extraEnv: { ...getGitEnvironmentVariables(["conan"]) },
toolConstraints: [{
toolName: "python",
constraint: pythonConstraint
}, {
toolName: "conan",
constraint: conanConstraint
}],
docker: {}
});
}
async function updateArtifacts(updateArtifact) {
const { packageFileName, updatedDeps, newPackageFileContent, config } = updateArtifact;
logger.trace(`conan.updateArtifacts(${packageFileName})`);
const { isLockFileMaintenance } = config;
if (updatedDeps.length === 0 && !isLockFileMaintenance) {
logger.trace("No conan.lock dependencies to update");
return null;
}
const lockFileName = await findLocalSiblingOrParent(packageFileName, "conan.lock");
if (!lockFileName) {
logger.trace("No conan.lock found");
return null;
}
const existingLockFileContent = await readLocalFile(lockFileName);
if (!existingLockFileContent) {
logger.debug(`${lockFileName} read operation failed`);
return null;
}
try {
await writeLocalFile(packageFileName, newPackageFileContent);
logger.trace(`Updating ${lockFileName}`);
await conanLockUpdate(packageFileName, isLockFileMaintenance, config.constraints?.conan, config.constraints?.python);
const newLockFileContent = await readLocalFile(lockFileName);
if (!newLockFileContent) {
logger.debug(`New ${lockFileName} read operation failed`);
return null;
}
if (existingLockFileContent === newLockFileContent) {
logger.trace(`${lockFileName} is unchanged`);
return null;
}
logger.trace(`Returning updated ${lockFileName}`);
return [{ file: {
type: "addition",
path: lockFileName,
contents: newLockFileContent
} }];
} catch (err) {
if (err.message === "temporary-error") throw err;
logger.debug({
err,
packageFileName,
lockFileName
}, "Lockfile update failed");
return [{ artifactError: {
fileName: lockFileName,
stderr: err.message
} }];
}
}
//#endregion
export { updateArtifacts };
//# sourceMappingURL=artifacts.js.map