This is an automated email from the ASF dual-hosted git repository. GitToTheHub pushed a commit to branch fix-update-deployment-target-in-spm-package-CordovaPlugins in repository https://gitbox.apache.org/repos/asf/cordova-ios.git
commit f2aa18715caa818f16589b58f8ab9291af02d485 Author: Manuel Beck <[email protected]> AuthorDate: Thu Aug 6 17:13:07 2026 +0200 fix(spm): keep `CordovaPlugins` deployment target synced across prepares - 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]
