renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
63 lines (62 loc) • 2.21 kB
JavaScript
import "../../../constants/error-messages.js";
import { logger } from "../../../logger/index.js";
import { deleteLocalFile, getSiblingFileName, readLocalFile, writeLocalFile } from "../../../util/fs/index.js";
import { exec } from "../../../util/exec/index.js";
import { isEmptyArray, isString } from "@sindresorhus/is";
import { quote } from "shlex";
//#region lib/modules/manager/gleam/artifacts.ts
async function updateArtifacts(updateArtifact) {
const { packageFileName, updatedDeps, newPackageFileContent, config } = updateArtifact;
logger.debug(`gleam.updateArtifacts(${packageFileName})`);
const { isLockFileMaintenance } = config;
if (isEmptyArray(updatedDeps) && !isLockFileMaintenance) {
logger.debug("No updated gleam deps - returning null");
return null;
}
const lockFileName = getSiblingFileName(packageFileName, "manifest.toml");
const oldLockFileContent = await readLocalFile(lockFileName, "utf8");
if (!oldLockFileContent) {
logger.debug(`No ${lockFileName} found`);
return null;
}
try {
await writeLocalFile(packageFileName, newPackageFileContent);
if (isLockFileMaintenance) await deleteLocalFile(lockFileName);
const execOptions = {
cwdFile: packageFileName,
docker: {},
toolConstraints: [{
toolName: "gleam",
constraint: config.constraints?.gleam
}]
};
await exec(["gleam deps update", ...(isLockFileMaintenance ? [] : updatedDeps.map((dep) => dep.depName).filter(isString)).map(quote)].join(" "), execOptions);
const newLockFileContent = await readLocalFile(lockFileName, "utf8");
if (!newLockFileContent) {
logger.debug(`No ${lockFileName} found`);
return null;
}
if (oldLockFileContent === newLockFileContent) {
logger.debug(`No changes in ${lockFileName} content`);
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