From 67eb76d4065bbd044a4a2299092e2224e438805a Mon Sep 17 00:00:00 2001
From: Martin Herndl <martin.herndl@icis.com>
Date: Sat, 18 Dec 2021 21:55:13 +0100
Subject: [PATCH] feat(composer): support composer platform package constraint
 (#13186)

---
 lib/manager/composer/utils.spec.ts | 12 ++++++++++++
 lib/manager/composer/utils.ts      |  6 ++++++
 2 files changed, 18 insertions(+)

diff --git a/lib/manager/composer/utils.spec.ts b/lib/manager/composer/utils.spec.ts
index 5553063184..ff972e6a9f 100644
--- a/lib/manager/composer/utils.spec.ts
+++ b/lib/manager/composer/utils.spec.ts
@@ -27,6 +27,18 @@ describe('manager/composer/utils', () => {
       ).toEqual({ composer: '1.1.0' });
     });
 
+    it('returns from composer platform require', () => {
+      expect(
+        extractContraints({ require: { php: '^8.1', composer: '2.2.0' } }, {})
+      ).toEqual({ php: '^8.1', composer: '2.2.0' });
+    });
+
+    it('returns from composer platform require-dev', () => {
+      expect(
+        extractContraints({ 'require-dev': { composer: '^2.2' } }, {})
+      ).toEqual({ composer: '^2.2' });
+    });
+
     it('returns from composer-runtime-api', () => {
       expect(
         extractContraints({ require: { 'composer-runtime-api': '^1.1.0' } }, {})
diff --git a/lib/manager/composer/utils.ts b/lib/manager/composer/utils.ts
index 5b6b3a2c00..3841400c03 100644
--- a/lib/manager/composer/utils.ts
+++ b/lib/manager/composer/utils.ts
@@ -71,6 +71,12 @@ export function extractContraints(
   } else if (composerJson['require-dev']?.['composer/composer']) {
     res.composer = composerJson['require-dev']?.['composer/composer'];
   }
+  // composer platform package
+  else if (composerJson.require?.['composer']) {
+    res.composer = composerJson.require?.['composer'];
+  } else if (composerJson['require-dev']?.['composer']) {
+    res.composer = composerJson['require-dev']?.['composer'];
+  }
   // check last used composer version
   else if (lockParsed?.['plugin-api-version']) {
     const major = api.getMajor(lockParsed?.['plugin-api-version']);
-- 
GitLab