From 62e95e96f7e3c0419d850f5814facbb7d3a525a6 Mon Sep 17 00:00:00 2001 From: Nathan Walker Date: Mon, 10 Feb 2025 23:07:15 -0800 Subject: [PATCH 1/2] feat(ios): multi target support for swift packages --- lib/services/ios-project-service.ts | 2 +- lib/services/ios/spm-service.ts | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/services/ios-project-service.ts b/lib/services/ios-project-service.ts index fa1d5ad372..36e29e62cf 100644 --- a/lib/services/ios-project-service.ts +++ b/lib/services/ios-project-service.ts @@ -1425,7 +1425,7 @@ export class IOSProjectService extends projectServiceBaseLib.PlatformProjectServ if (addedExtensionsFromResources || addedExtensionsFromPlugins) { this.$logger.warn( - "The support for iOS App Extensions is currently in Beta. For more information about the current development state and any known issues, please check the relevant GitHub issue: https://github.com/NativeScript/nativescript-cli/issues/4472" + "Let us know if there are other Extension features you'd like! https://github.com/NativeScript/NativeScript/issues" ); } } diff --git a/lib/services/ios/spm-service.ts b/lib/services/ios/spm-service.ts index 6f19203934..23a6446641 100644 --- a/lib/services/ios/spm-service.ts +++ b/lib/services/ios/spm-service.ts @@ -76,6 +76,13 @@ export class SPMService implements ISPMService { } this.$logger.trace(`SPM: adding package ${pkg.name} to project.`, pkg); await project.ios.addSPMPackage(projectData.projectName, pkg); + + // Add to other Targets if specified (like widgets, etc.) + if (pkg.targets?.length) { + for (const target of pkg.targets) { + await project.ios.addSPMPackage(target, pkg); + } + } } await project.commit(); From 9f79dafb62375c2dfce24395d472a81a2d824c09 Mon Sep 17 00:00:00 2001 From: Igor Randjelovic Date: Tue, 11 Feb 2025 13:04:01 +0100 Subject: [PATCH 2/2] chore: use augmented type --- lib/definitions/ios.d.ts | 6 ++++-- lib/services/ios/spm-service.ts | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/definitions/ios.d.ts b/lib/definitions/ios.d.ts index 7b83af2bc6..81b54c6896 100644 --- a/lib/definitions/ios.d.ts +++ b/lib/definitions/ios.d.ts @@ -41,16 +41,18 @@ declare global { ): Promise; } + type IosSPMPackage = IosSPMPackageDefinition & { targets?: string[] }; + interface ISPMService { applySPMPackages( platformData: IPlatformData, projectData: IProjectData, - pluginSpmPackages?: IosSPMPackageDefinition[] + pluginSpmPackages?: IosSPMPackage[] ); getSPMPackages( projectData: IProjectData, platform: string - ): IosSPMPackageDefinition[]; + ): IosSPMPackage[]; } interface IXcodebuildArgsService { diff --git a/lib/services/ios/spm-service.ts b/lib/services/ios/spm-service.ts index 23a6446641..1987f50d88 100644 --- a/lib/services/ios/spm-service.ts +++ b/lib/services/ios/spm-service.ts @@ -18,7 +18,7 @@ export class SPMService implements ISPMService { public getSPMPackages( projectData: IProjectData, platform: string - ): IosSPMPackageDefinition[] { + ): IosSPMPackage[] { const spmPackages = this.$projectConfigService.getValue( `${platform}.SPMPackages`, [] @@ -35,7 +35,7 @@ export class SPMService implements ISPMService { public async applySPMPackages( platformData: IPlatformData, projectData: IProjectData, - pluginSpmPackages?: IosSPMPackageDefinition[] + pluginSpmPackages?: IosSPMPackage[] ) { try { const spmPackages = this.getSPMPackages(