1082815dcSEvan Baconimport { ExpoConfig } from '@expo/config-types'; 2082815dcSEvan Baconimport xcode, { PBXFile, PBXGroup, PBXNativeTarget, PBXProject, XCBuildConfiguration, XCConfigurationList, XcodeProject } from 'xcode'; 3*9b26454eSBartosz Kaszubowskiexport type ProjectSectionEntry = [string, PBXProject]; 4*9b26454eSBartosz Kaszubowskiexport type NativeTargetSection = Record<string, PBXNativeTarget>; 5*9b26454eSBartosz Kaszubowskiexport type NativeTargetSectionEntry = [string, PBXNativeTarget]; 6*9b26454eSBartosz Kaszubowskiexport type ConfigurationLists = Record<string, XCConfigurationList>; 7*9b26454eSBartosz Kaszubowskiexport type ConfigurationListEntry = [string, XCConfigurationList]; 8*9b26454eSBartosz Kaszubowskiexport type ConfigurationSectionEntry = [string, XCBuildConfiguration]; 9082815dcSEvan Baconexport declare function getProjectName(projectRoot: string): string; 10082815dcSEvan Baconexport declare function resolvePathOrProject(projectRootOrProject: string | XcodeProject): XcodeProject | null; 11082815dcSEvan Baconexport declare function sanitizedName(name: string): string; 12082815dcSEvan Baconexport declare function getHackyProjectName(projectRoot: string, config: ExpoConfig): string; 13082815dcSEvan Bacon/** 14082815dcSEvan Bacon * Add a resource file (ex: `SplashScreen.storyboard`, `Images.xcassets`) to an Xcode project. 15082815dcSEvan Bacon * This is akin to creating a new code file in Xcode with `⌘+n`. 16082815dcSEvan Bacon */ 17082815dcSEvan Baconexport declare function addResourceFileToGroup({ filepath, groupName, isBuildFile, project, verbose, targetUuid, }: { 18082815dcSEvan Bacon filepath: string; 19082815dcSEvan Bacon groupName: string; 20082815dcSEvan Bacon isBuildFile?: boolean; 21082815dcSEvan Bacon project: XcodeProject; 22082815dcSEvan Bacon verbose?: boolean; 23082815dcSEvan Bacon targetUuid?: string; 24082815dcSEvan Bacon}): XcodeProject; 25082815dcSEvan Bacon/** 26082815dcSEvan Bacon * Add a build source file (ex: `AppDelegate.m`, `ViewController.swift`) to an Xcode project. 27082815dcSEvan Bacon * This is akin to creating a new code file in Xcode with `⌘+n`. 28082815dcSEvan Bacon */ 29082815dcSEvan Baconexport declare function addBuildSourceFileToGroup({ filepath, groupName, project, verbose, targetUuid, }: { 30082815dcSEvan Bacon filepath: string; 31082815dcSEvan Bacon groupName: string; 32082815dcSEvan Bacon project: XcodeProject; 33082815dcSEvan Bacon verbose?: boolean; 34082815dcSEvan Bacon targetUuid?: string; 35082815dcSEvan Bacon}): XcodeProject; 36082815dcSEvan Baconexport declare function addFileToGroupAndLink({ filepath, groupName, project, verbose, addFileToProject, targetUuid, }: { 37082815dcSEvan Bacon filepath: string; 38082815dcSEvan Bacon groupName: string; 39082815dcSEvan Bacon project: XcodeProject; 40082815dcSEvan Bacon verbose?: boolean; 41082815dcSEvan Bacon targetUuid?: string; 42082815dcSEvan Bacon addFileToProject: (props: { 43082815dcSEvan Bacon file: PBXFile; 44082815dcSEvan Bacon project: XcodeProject; 45082815dcSEvan Bacon }) => void; 46082815dcSEvan Bacon}): XcodeProject; 47082815dcSEvan Baconexport declare function getApplicationNativeTarget({ project, projectName, }: { 48082815dcSEvan Bacon project: XcodeProject; 49082815dcSEvan Bacon projectName: string; 50082815dcSEvan Bacon}): { 51082815dcSEvan Bacon uuid: string; 52082815dcSEvan Bacon target: xcode.PBXNativeTarget; 53082815dcSEvan Bacon}; 54082815dcSEvan Bacon/** 55082815dcSEvan Bacon * Add a framework to the default app native target. 56082815dcSEvan Bacon * 57082815dcSEvan Bacon * @param projectName Name of the PBX project. 58082815dcSEvan Bacon * @param framework String ending in `.framework`, i.e. `StoreKit.framework` 59082815dcSEvan Bacon */ 60082815dcSEvan Baconexport declare function addFramework({ project, projectName, framework, }: { 61082815dcSEvan Bacon project: XcodeProject; 62082815dcSEvan Bacon projectName: string; 63082815dcSEvan Bacon framework: string; 64082815dcSEvan Bacon}): unknown; 65082815dcSEvan Baconexport declare function ensureGroupRecursively(project: XcodeProject, filepath: string): PBXGroup | null; 66082815dcSEvan Bacon/** 67082815dcSEvan Bacon * Get the pbxproj for the given path 68082815dcSEvan Bacon */ 69082815dcSEvan Baconexport declare function getPbxproj(projectRoot: string): XcodeProject; 70082815dcSEvan Bacon/** 71082815dcSEvan Bacon * Get the productName for a project, if the name is using a variable `$(TARGET_NAME)`, then attempt to get the value of that variable. 72082815dcSEvan Bacon * 73082815dcSEvan Bacon * @param project 74082815dcSEvan Bacon */ 75082815dcSEvan Baconexport declare function getProductName(project: XcodeProject): string; 76082815dcSEvan Baconexport declare function getProjectSection(project: XcodeProject): Record<string, xcode.PBXProject> & Record<string, string>; 77082815dcSEvan Baconexport declare function getXCConfigurationListEntries(project: XcodeProject): ConfigurationListEntry[]; 78082815dcSEvan Baconexport declare function getBuildConfigurationsForListId(project: XcodeProject, configurationListId: string): ConfigurationSectionEntry[]; 79082815dcSEvan Baconexport declare function getBuildConfigurationForListIdAndName(project: XcodeProject, { configurationListId, buildConfiguration, }: { 80082815dcSEvan Bacon configurationListId: string; 81082815dcSEvan Bacon buildConfiguration: string; 82082815dcSEvan Bacon}): ConfigurationSectionEntry; 83082815dcSEvan Baconexport declare function isBuildConfig([, sectionItem]: ConfigurationSectionEntry): boolean; 84082815dcSEvan Baconexport declare function isNotTestHost([, sectionItem]: ConfigurationSectionEntry): boolean; 85082815dcSEvan Baconexport declare function isNotComment([key]: ConfigurationSectionEntry | ProjectSectionEntry | ConfigurationListEntry | NativeTargetSectionEntry): boolean; 86082815dcSEvan Baconexport declare function unquote(value: string): string; 87