From 7e069f4adce758bef94fc31ea4db8984f3169da9 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Wed, 13 Oct 2021 16:59:44 +0200
Subject: [PATCH] fix(config): massage package.json>renovate string (#12150)

---
 lib/workers/repository/init/merge.spec.ts | 19 +++++++++++++++++++
 lib/workers/repository/init/merge.ts      |  4 ++++
 2 files changed, 23 insertions(+)

diff --git a/lib/workers/repository/init/merge.spec.ts b/lib/workers/repository/init/merge.spec.ts
index 2fb761c2b1..937ef64062 100644
--- a/lib/workers/repository/init/merge.spec.ts
+++ b/lib/workers/repository/init/merge.spec.ts
@@ -58,6 +58,25 @@ describe('workers/repository/init/merge', () => {
       expect(await detectRepoFileConfig()).toMatchSnapshot();
       expect(await detectRepoFileConfig()).toMatchSnapshot();
     });
+    it('massages package.json renovate string', async () => {
+      git.getFileList.mockResolvedValue(['package.json']);
+      const pJson = JSON.stringify({
+        name: 'something',
+        renovate: 'github>renovatebot/renovate',
+      });
+      fs.readLocalFile.mockResolvedValue(pJson);
+      platform.getJsonFile.mockResolvedValueOnce(pJson);
+      expect(await detectRepoFileConfig()).toMatchInlineSnapshot(`
+        Object {
+          "configFileName": "package.json",
+          "configFileParsed": Object {
+            "extends": Array [
+              "github>renovatebot/renovate",
+            ],
+          },
+        }
+      `);
+    });
     it('returns error if cannot parse', async () => {
       git.getFileList.mockResolvedValue(['package.json', 'renovate.json']);
       fs.readLocalFile.mockResolvedValue('cannot parse');
diff --git a/lib/workers/repository/init/merge.ts b/lib/workers/repository/init/merge.ts
index 9d8d0d2430..a352e31bd1 100644
--- a/lib/workers/repository/init/merge.ts
+++ b/lib/workers/repository/init/merge.ts
@@ -68,6 +68,10 @@ export async function detectRepoFileConfig(): Promise<RepoFileConfig> {
     configFileParsed = JSON.parse(
       await readLocalFile('package.json', 'utf8')
     ).renovate;
+    if (is.string(configFileParsed)) {
+      logger.debug('Massaging string renovate config to extends array');
+      configFileParsed = { extends: [configFileParsed] };
+    }
     logger.debug({ config: configFileParsed }, 'package.json>renovate config');
   } else {
     let rawFileContents = await readLocalFile(configFileName, 'utf8');
-- 
GitLab