renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
94 lines • 3.21 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.updateArtifacts = updateArtifacts;
const shlex_1 = require("shlex");
const error_messages_1 = require("../../../constants/error-messages");
const logger_1 = require("../../../logger");
const array_1 = require("../../../util/array");
const exec_1 = require("../../../util/exec");
const fs_1 = require("../../../util/fs");
const git_1 = require("../../../util/git");
const regex_1 = require("../../../util/regex");
function dependencyUrl(dep) {
const url = dep.packageName;
if (dep.managerData?.subdir) {
return url.concat('/', dep.managerData.subdir);
}
return url;
}
async function updateArtifacts(updateArtifact) {
const { packageFileName, updatedDeps, config } = updateArtifact;
logger_1.logger.trace({ packageFileName }, 'jsonnet-bundler.updateArtifacts()');
const lockFileName = packageFileName.replace((0, regex_1.regEx)(/\.json$/), '.lock.json');
const existingLockFileContent = await (0, fs_1.readLocalFile)(lockFileName, 'utf8');
if (!existingLockFileContent) {
logger_1.logger.debug('No jsonnetfile.lock.json found');
return null;
}
const jsonnetBundlerToolConstraint = {
toolName: 'jb',
constraint: config.constraints?.jb,
};
const execOptions = {
cwdFile: packageFileName,
docker: {},
toolConstraints: [jsonnetBundlerToolConstraint],
};
try {
if (config.isLockFileMaintenance) {
await (0, exec_1.exec)('jb update', execOptions);
}
else {
const dependencyUrls = updatedDeps.map(dependencyUrl);
if (dependencyUrls.length > 0) {
await (0, exec_1.exec)(`jb update ${dependencyUrls.map(shlex_1.quote).join(' ')}`, execOptions);
}
}
const status = await (0, git_1.getRepoStatus)();
if (status.isClean()) {
return null;
}
const res = [];
for (const f of (0, array_1.coerceArray)(status.modified)) {
res.push({
file: {
type: 'addition',
path: f,
contents: await (0, fs_1.readLocalFile)(f),
},
});
}
for (const f of (0, array_1.coerceArray)(status.not_added)) {
res.push({
file: {
type: 'addition',
path: f,
contents: await (0, fs_1.readLocalFile)(f),
},
});
}
for (const f of (0, array_1.coerceArray)(status.deleted)) {
res.push({
file: {
type: 'deletion',
path: f,
},
});
}
return res;
}
catch (err) /* istanbul ignore next */ {
if (err.message === error_messages_1.TEMPORARY_ERROR) {
throw err;
}
return [
{
artifactError: {
lockFile: lockFileName,
stderr: err.stderr,
},
},
];
}
}
//# sourceMappingURL=artifacts.js.map