diff --git a/lib/manager/composer/extract.js b/lib/manager/composer/extract.js index 94c496993b984c576fe6601fdd8523372a1d804e..7ba6d5506735379f5bedd7b9de08707a0ce410b8 100644 --- a/lib/manager/composer/extract.js +++ b/lib/manager/composer/extract.js @@ -52,13 +52,29 @@ async function extractPackageFile(content, fileName) { if (!deps.length) { return null; } - let composerLock = false; + const res = { deps }; const filePath = fileName.replace(/\.json$/, '.lock'); - if (await platform.getFile(filePath)) { + const lockContents = await platform.getFile(filePath); + // istanbul ignore if + if (lockContents) { logger.debug({ packageFile: fileName }, 'Found composer lock file'); - composerLock = filePath; + res.composerLock = filePath; + try { + const lockParsed = JSON.parse(lockContents); + for (const dep of res.deps) { + const lockedDep = lockParsed.packages.find( + item => item.name === dep.depName + ); + if (lockedDep) { + dep.lockedVersion = lockedDep.version.replace(/^v/, ''); + } + } + } catch (err) { + logger.warn({ err }, 'Error processing composer.lock'); + } + } else { + res.composerLock = false; } - const res = { deps, composerLock }; if (composerJson.repositories) { if (is.array(composerJson.repositories)) { res.registryUrls = composerJson.repositories;