This is an automated email from the ASF dual-hosted git repository.

GitToTheHub pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cordova-ios.git


The following commit(s) were added to refs/heads/master by this push:
     new 8e6e86b4 fix(spm): keep `CordovaPlugins` deployment target synced 
across prepares (#1687)
8e6e86b4 is described below

commit 8e6e86b48d6c6f833b06a4a8f8f1fd157649f80d
Author: Manuel Beck <[email protected]>
AuthorDate: Fri Aug 7 11:42:59 2026 +0200

    fix(spm): keep `CordovaPlugins` deployment target synced across prepares 
(#1687)
    
    - The deployment target update logic for `CordovaPlugins` only matched 
enum-style platform declarations (for example .iOS(.v13)). After the first sync 
converted the package to string-style declarations (for example .iOS("18.0")), 
later prepares no longer updated the value.
    - Update SwiftPackage deployment target replacement to support both 
enum-style and string-style platform declarations for iOS and macCatalyst.
    - Also add a regression test that runs deployment target updates twice and 
verifies the second value replaces the first.
    - Closes #1683
    
    Generated-By: GPT-5.3-Codex
---
 lib/SwiftPackage.js             |  6 ++++--
 tests/spec/SwiftPackage.spec.js | 13 +++++++++++++
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/lib/SwiftPackage.js b/lib/SwiftPackage.js
index 2373c4fa..4c5468a1 100644
--- a/lib/SwiftPackage.js
+++ b/lib/SwiftPackage.js
@@ -44,8 +44,10 @@ package.targets.first?.dependencies.append(.product(name: 
"${plugin.id}", packag
         const fd = fs.openSync(this.path, 'r+');
         let packageContent = fs.readFileSync(fd, 'utf8');
 
-        packageContent = packageContent.replace(/\.iOS\(\.v[0-9]+\)/, 
`.iOS("${target}")`);
-        packageContent = packageContent.replace(/\.macCatalyst\(\.v[0-9]+\)/, 
`.macCatalyst("${target}")`);
+        // Support both enum-style (e.g. .iOS(.v13)) and string-style
+        // (e.g. .iOS("18.0")) deployment target declarations.
+        packageContent = 
packageContent.replace(/\.iOS\((?:\.v[0-9]+|"[0-9]+(?:\.[0-9]+)?")\)/, 
`.iOS("${target}")`);
+        packageContent = 
packageContent.replace(/\.macCatalyst\((?:\.v[0-9]+|"[0-9]+(?:\.[0-9]+)?")\)/, 
`.macCatalyst("${target}")`);
 
         fs.ftruncateSync(fd);
         fs.writeSync(fd, packageContent, 0, 'utf8');
diff --git a/tests/spec/SwiftPackage.spec.js b/tests/spec/SwiftPackage.spec.js
index 2c884a76..b8621068 100644
--- a/tests/spec/SwiftPackage.spec.js
+++ b/tests/spec/SwiftPackage.spec.js
@@ -101,6 +101,19 @@ describe('SwiftPackage', () => {
             expect(content).toContain('.iOS("18.4")');
             expect(content).toContain('.macCatalyst("18.4")');
         });
+
+        it('should update deployment target when package already uses string 
syntax', () => {
+            pkg.updateDeploymentTarget('18.4');
+            pkg.updateDeploymentTarget('19.1');
+
+            const pkgPath = path.join(tmpDir.name, 'packages', 
'cordova-ios-plugins', 'Package.swift');
+            const content = fs.readFileSync(pkgPath, 'utf8');
+
+            expect(content).toContain('.iOS("19.1")');
+            expect(content).toContain('.macCatalyst("19.1")');
+            expect(content).not.toContain('.iOS("18.4")');
+            expect(content).not.toContain('.macCatalyst("18.4")');
+        });
     });
 
     describe('addPlugin', () => {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to