From 39d0e5071a58a38c07fa35f6943111f1338b7de9 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Sat, 23 Nov 2019 10:39:34 +0100 Subject: [PATCH] fix: safeLoad yaml in json mode to allow key duplicates --- lib/datasource/helm/index.js | 2 +- lib/manager/gitlabci-include/extract.ts | 2 +- lib/manager/helm-requirements/extract.ts | 4 ++-- lib/manager/helm-requirements/update.ts | 4 ++-- lib/manager/travis/extract.ts | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/datasource/helm/index.js b/lib/datasource/helm/index.js index f80da4b394..10722a2ab2 100644 --- a/lib/datasource/helm/index.js +++ b/lib/datasource/helm/index.js @@ -62,7 +62,7 @@ export async function getRepositoryData(repository) { } let result; try { - const doc = yaml.safeLoad(res.body); + const doc = yaml.safeLoad(res.body, { json: true }); if (!doc) { logger.warn(`Failed to parse index.yaml from ${repository}`); return null; diff --git a/lib/manager/gitlabci-include/extract.ts b/lib/manager/gitlabci-include/extract.ts index 42cee41ae4..e403214a45 100644 --- a/lib/manager/gitlabci-include/extract.ts +++ b/lib/manager/gitlabci-include/extract.ts @@ -31,7 +31,7 @@ export function extractPackageFile( ): PackageFile | null { const deps: PackageDependency[] = []; try { - const doc = yaml.safeLoad(content); + const doc = yaml.safeLoad(content, { json: true }); if (doc.include && is.array(doc.include)) { for (const includeObj of doc.include) { const dep = extractDepFromInclude(includeObj); diff --git a/lib/manager/helm-requirements/extract.ts b/lib/manager/helm-requirements/extract.ts index 6a9339764c..1cb380779e 100644 --- a/lib/manager/helm-requirements/extract.ts +++ b/lib/manager/helm-requirements/extract.ts @@ -18,7 +18,7 @@ export async function extractPackageFile( logger.debug({ fileName }, 'Failed to find helm Chart.yaml'); return null; } - const chart = yaml.safeLoad(chartContents); + const chart = yaml.safeLoad(chartContents, { json: true }); if (!(chart && chart.apiVersion && chart.name && chart.version)) { logger.debug( { fileName }, @@ -33,7 +33,7 @@ export async function extractPackageFile( let deps = []; let doc; try { - doc = yaml.safeLoad(content); + doc = yaml.safeLoad(content, { json: true }); } catch (err) { logger.debug({ fileName }, 'Failed to parse helm requirements.yaml'); return null; diff --git a/lib/manager/helm-requirements/update.ts b/lib/manager/helm-requirements/update.ts index e17c23e73c..ff0f651608 100644 --- a/lib/manager/helm-requirements/update.ts +++ b/lib/manager/helm-requirements/update.ts @@ -10,7 +10,7 @@ export function updateDependency(fileContent, upgrade) { logger.debug('Failed to update dependency, invalid upgrade'); return fileContent; } - const doc = yaml.safeLoad(fileContent); + const doc = yaml.safeLoad(fileContent, { json: true }); if (!doc || !is.array(doc.dependencies)) { logger.debug('Failed to update dependency, invalid requirements.yaml file'); return fileContent; @@ -48,7 +48,7 @@ export function updateDependency(fileContent, upgrade) { newString ); // Compare the parsed yaml structure of old and new - if (_.isEqual(doc, yaml.safeLoad(testContent))) { + if (_.isEqual(doc, yaml.safeLoad(testContent, { json: true }))) { newFileContent = testContent; break; } else { diff --git a/lib/manager/travis/extract.ts b/lib/manager/travis/extract.ts index 554ecb7a71..302d706216 100644 --- a/lib/manager/travis/extract.ts +++ b/lib/manager/travis/extract.ts @@ -6,7 +6,7 @@ import { logger } from '../../logger'; export function extractPackageFile(content: string): PackageFile | null { let doc; try { - doc = yaml.safeLoad(content); + doc = yaml.safeLoad(content, { json: true }); } catch (err) { logger.warn({ err, content }, 'Failed to parse .travis.yml file.'); return null; -- GitLab