Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 29 additions & 14 deletions lib/definitions/ios.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,36 +8,36 @@ declare global {
setupSigningForDevice(
projectRoot: string,
projectData: IProjectData,
buildConfig: IOSBuildData
buildConfig: IOSBuildData,
): Promise<void>;
setupSigningFromTeam(
projectRoot: string,
projectData: IProjectData,
teamId: string
teamId: string,
): Promise<void>;
setupSigningFromProvision(
projectRoot: string,
projectData: IProjectData,
provision?: string,
mobileProvisionData?: any
mobileProvisionData?: any,
): Promise<void>;
}

interface IXcodebuildService {
buildForSimulator(
platformData: IPlatformData,
projectData: IProjectData,
buildConfig: IBuildConfig
buildConfig: IBuildConfig,
): Promise<void>;
buildForDevice(
platformData: IPlatformData,
projectData: IProjectData,
buildConfig: IBuildConfig
buildConfig: IBuildConfig,
): Promise<string>;
buildForAppStore(
platformData: IPlatformData,
projectData: IProjectData,
buildConfig: IBuildConfig
buildConfig: IBuildConfig,
): Promise<string>;
}

Expand All @@ -47,35 +47,44 @@ declare global {
applySPMPackages(
platformData: IPlatformData,
projectData: IProjectData,
pluginSpmPackages?: IosSPMPackage[]
pluginSpmPackages?: IosSPMPackage[],
);
getSPMPackages(
projectData: IProjectData,
platform: string
platform: string,
): IosSPMPackage[];
resolveSPMDependencies(
platformData: IPlatformData,
projectData: IProjectData,
options?: { showProgress?: boolean },
): Promise<void>;
ensureSPMDependenciesResolved(
platformData: IPlatformData,
projectData: IProjectData,
): Promise<void>;
}

interface IXcodebuildArgsService {
getBuildForSimulatorArgs(
platformData: IPlatformData,
projectData: IProjectData,
buildConfig: IBuildConfig
buildConfig: IBuildConfig,
): Promise<string[]>;
getBuildForDeviceArgs(
platformData: IPlatformData,
projectData: IProjectData,
buildConfig: IBuildConfig
buildConfig: IBuildConfig,
): Promise<string[]>;
getXcodeProjectArgs(
platformData: IPlatformData,
projectData: IProjectData
projectData: IProjectData,
): string[];
}

interface IXcodebuildCommandService {
executeCommand(
args: string[],
options: IXcodebuildCommandOptions
options: IXcodebuildCommandOptions,
): Promise<ISpawnResult>;
}

Expand All @@ -84,18 +93,24 @@ declare global {
cwd: string;
stdio?: string;
spawnOptions?: any;
/**
* When provided, xcodebuild's output is piped (rather than inherited) and
* forwarded here so the caller can render its own progress UI (e.g. a
* spinner for Swift Package resolution/download activity).
*/
onProgress?: (chunk: { data: string; pipe: string }) => void;
}

interface IExportOptionsPlistService {
createDevelopmentExportOptionsPlist(
archivePath: string,
projectData: IProjectData,
buildConfig: IBuildConfig
buildConfig: IBuildConfig,
): Promise<IExportOptionsPlistOutput>;
createDistributionExportOptionsPlist(
projectRoot: string,
projectData: IProjectData,
buildConfig: IBuildConfig
buildConfig: IBuildConfig,
): Promise<IExportOptionsPlistOutput>;
}

Expand Down
8 changes: 8 additions & 0 deletions lib/services/ios-project-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -440,6 +440,14 @@ export class IOSProjectService
): Promise<void> {
const platformData = this.getPlatformData(projectData);

// On a first build, the runtime (and any other Swift packages) download
// here. Pre-resolve under a clear spinner so the subsequent
// "Xcode build..." step doesn't appear to hang while that happens.
await this.$spmService.ensureSPMDependenciesResolved(
platformData,
projectData,
);

const handler = (data: any) => {
this.emit(constants.BUILD_OUTPUT_EVENT_NAME, data);
};
Expand Down
Loading