0
0
Fork 0
mirror of https://github.com/renovatebot/renovate.git synced 2025-03-15 00:32:54 +00:00

fix: lock file refactor

This commit is contained in:
Rhys Arkins 2018-05-09 10:42:38 +02:00
parent 9fe651bca9
commit 2075c20baa

View file

@ -15,8 +15,7 @@ module.exports = {
// Strips empty values, deduplicates, and returns the directories from filenames
// istanbul ignore next
const getDirs = arr =>
Array.from(new Set(arr.filter(Boolean).map(path.dirname)));
const getDirs = arr => Array.from(new Set(arr.filter(Boolean)));
// istanbul ignore next
function determineLockFileDirs(config, packageFiles) {
@ -317,13 +316,14 @@ async function getAdditionalFiles(config, packageFiles) {
: { HOME: process.env.HOME, PATH: process.env.PATH };
env.NODE_ENV = 'dev';
for (const lockFileDir of dirs.npmLockDirs) {
logger.debug(`Generating package-lock.json for ${lockFileDir}`);
const lockFileName = upath.join(lockFileDir, 'package-lock.json');
for (const lockFile of dirs.npmLockDirs) {
const lockFileDir = path.dirname(lockFile);
const fileName = path.basename(lockFile);
logger.debug(`Generating ${fileName} for ${lockFileDir}`);
const res = await npm.generateLockFile(
upath.join(config.tmpDir.path, lockFileDir),
env,
'package-lock.json'
fileName
);
if (res.error) {
// istanbul ignore if
@ -348,79 +348,28 @@ async function getAdditionalFiles(config, packageFiles) {
throw new Error('internal-error');
}
lockFileErrors.push({
lockFile: lockFileName,
lockFile,
stderr: res.stderr,
});
} else {
const existingContent = await platform.getFile(
lockFileName,
lockFile,
config.parentBranch
);
if (res.lockFile !== existingContent) {
logger.debug('package-lock.json needs updating');
updatedLockFiles.push({
name: lockFileName,
name: lockFile,
contents: res.lockFile,
});
} else {
logger.debug("package-lock.json hasn't changed");
logger.debug(`${lockFile} hasn't changed`);
}
}
}
// istanbul ignore next
for (const lockFileDir of dirs.pnpmShrinkwrapDirs) {
logger.debug(`Generating npm-shrinkwrap.json for ${lockFileDir}`);
const lockFileName = upath.join(lockFileDir, 'npm-shrinkwrap.json');
const res = await npm.generateLockFile(
upath.join(config.tmpDir.path, lockFileDir),
env,
'npm-shrinkwrap.json'
);
if (res.error) {
// istanbul ignore if
if (res.stderr && res.stderr.includes('No matching version found for')) {
for (const upgrade of config.upgrades) {
if (
res.stderr.includes(
`No matching version found for ${upgrade.depName}`
)
) {
logger.info(
{ dependency: upgrade.depName },
'npm install failed for the dependency being updated - skipping branch creation'
);
throw new Error('registry-failure');
}
}
}
// istanbul ignore if
if (res.stderr && res.stderr.includes('Host key verification failed')) {
logger.info({ stderr: res.stderr }, 'Host key verification failed');
throw new Error('internal-error');
}
lockFileErrors.push({
lockFile: lockFileName,
stderr: res.stderr,
});
} else {
const existingContent = await platform.getFile(
lockFileName,
config.parentBranch
);
if (res.lockFile !== existingContent) {
logger.debug('npm-shrinkwrap.json needs updating');
updatedLockFiles.push({
name: lockFileName,
contents: res.lockFile,
});
} else {
logger.debug("npm-shrinkwrap.json hasn't changed");
}
}
}
for (const lockFileDir of dirs.yarnLockDirs) {
for (const lockFile of dirs.yarnLockDirs) {
const lockFileDir = path.dirname(lockFile);
logger.debug(`Generating yarn.lock for ${lockFileDir}`);
const lockFileName = upath.join(lockFileDir, 'yarn.lock');
const res = await yarn.generateLockFile(
@ -472,9 +421,9 @@ async function getAdditionalFiles(config, packageFiles) {
}
}
for (const lockFileDir of dirs.pnpmShrinkwrapDirs) {
for (const lockFile of dirs.pnpmShrinkwrapDirs) {
const lockFileDir = path.dirname(lockFile);
logger.debug(`Generating shrinkwrap.yaml for ${lockFileDir}`);
const lockFileName = upath.join(lockFileDir, 'shrinkwrap.yaml');
const res = await pnpm.generateLockFile(
upath.join(config.tmpDir.path, lockFileDir),
env
@ -502,18 +451,18 @@ async function getAdditionalFiles(config, packageFiles) {
throw new Error('internal-error');
}
lockFileErrors.push({
lockFile: lockFileName,
lockFile,
stderr: res.stderr,
});
} else {
const existingContent = await platform.getFile(
lockFileName,
lockFile,
config.parentBranch
);
if (res.lockFile !== existingContent) {
logger.debug('shrinkwrap.yaml needs updating');
updatedLockFiles.push({
name: lockFileName,
name: lockFile,
contents: res.lockFile,
});
} else {