From 79b01de1b2f776e79b843eacaea72f087b9c5955 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Tue, 26 Feb 2019 08:14:01 +0100 Subject: [PATCH] feat(composer): parse/store lockedVersion This will be used when deciding what to pin dependencies to. --- lib/manager/composer/extract.js | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/lib/manager/composer/extract.js b/lib/manager/composer/extract.js index 94c496993b..7ba6d55067 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; -- GitLab