Skip to content

Commit 2090491

Browse files
authored
feat(ios): multi target support for swift packages (#5828)
1 parent d96fde1 commit 2090491

File tree

3 files changed

+14
-5
lines changed

3 files changed

+14
-5
lines changed

lib/definitions/ios.d.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,18 @@ declare global {
4141
): Promise<string>;
4242
}
4343

44+
type IosSPMPackage = IosSPMPackageDefinition & { targets?: string[] };
45+
4446
interface ISPMService {
4547
applySPMPackages(
4648
platformData: IPlatformData,
4749
projectData: IProjectData,
48-
pluginSpmPackages?: IosSPMPackageDefinition[]
50+
pluginSpmPackages?: IosSPMPackage[]
4951
);
5052
getSPMPackages(
5153
projectData: IProjectData,
5254
platform: string
53-
): IosSPMPackageDefinition[];
55+
): IosSPMPackage[];
5456
}
5557

5658
interface IXcodebuildArgsService {

lib/services/ios-project-service.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1425,7 +1425,7 @@ export class IOSProjectService extends projectServiceBaseLib.PlatformProjectServ
14251425

14261426
if (addedExtensionsFromResources || addedExtensionsFromPlugins) {
14271427
this.$logger.warn(
1428-
"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"
1428+
"Let us know if there are other Extension features you'd like! https://github.com/NativeScript/NativeScript/issues"
14291429
);
14301430
}
14311431
}

lib/services/ios/spm-service.ts

+9-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export class SPMService implements ISPMService {
1818
public getSPMPackages(
1919
projectData: IProjectData,
2020
platform: string
21-
): IosSPMPackageDefinition[] {
21+
): IosSPMPackage[] {
2222
const spmPackages = this.$projectConfigService.getValue(
2323
`${platform}.SPMPackages`,
2424
[]
@@ -35,7 +35,7 @@ export class SPMService implements ISPMService {
3535
public async applySPMPackages(
3636
platformData: IPlatformData,
3737
projectData: IProjectData,
38-
pluginSpmPackages?: IosSPMPackageDefinition[]
38+
pluginSpmPackages?: IosSPMPackage[]
3939
) {
4040
try {
4141
const spmPackages = this.getSPMPackages(
@@ -76,6 +76,13 @@ export class SPMService implements ISPMService {
7676
}
7777
this.$logger.trace(`SPM: adding package ${pkg.name} to project.`, pkg);
7878
await project.ios.addSPMPackage(projectData.projectName, pkg);
79+
80+
// Add to other Targets if specified (like widgets, etc.)
81+
if (pkg.targets?.length) {
82+
for (const target of pkg.targets) {
83+
await project.ios.addSPMPackage(target, pkg);
84+
}
85+
}
7986
}
8087
await project.commit();
8188

0 commit comments

Comments
 (0)