1*082815dcSEvan Baconinterface pbxFile { 2*082815dcSEvan Bacon basename: string; 3*082815dcSEvan Bacon lastKnownFileType?: string; 4*082815dcSEvan Bacon group?: string; 5*082815dcSEvan Bacon path?: string; 6*082815dcSEvan Bacon fileEncoding?: number; 7*082815dcSEvan Bacon defaultEncoding?: number; 8*082815dcSEvan Bacon sourceTree: string; 9*082815dcSEvan Bacon includeInIndex?: number; 10*082815dcSEvan Bacon explicitFileType?: unknown; 11*082815dcSEvan Bacon settings?: object; 12*082815dcSEvan Bacon uuid?: string; 13*082815dcSEvan Bacon fileRef: string; 14*082815dcSEvan Bacon target?: string; 15*082815dcSEvan Bacon} 16*082815dcSEvan Bacon 17*082815dcSEvan Bacondeclare module 'xcode' { 18*082815dcSEvan Bacon /** 19*082815dcSEvan Bacon * UUID that is a key to each fragment of PBXProject. 20*082815dcSEvan Bacon */ 21*082815dcSEvan Bacon type UUID = string; 22*082815dcSEvan Bacon 23*082815dcSEvan Bacon /** 24*082815dcSEvan Bacon * if has following format `${UUID}_comment` 25*082815dcSEvan Bacon */ 26*082815dcSEvan Bacon type UUIDComment = string; 27*082815dcSEvan Bacon 28*082815dcSEvan Bacon type XCObjectType = 29*082815dcSEvan Bacon | 'PBXBuildFile' 30*082815dcSEvan Bacon | 'PBXFileReference' 31*082815dcSEvan Bacon | 'PBXFrameworksBuildPhase' 32*082815dcSEvan Bacon | 'PBXGroup' 33*082815dcSEvan Bacon | 'PBXNativeTarget' 34*082815dcSEvan Bacon | 'PBXProject' 35*082815dcSEvan Bacon | 'PBXResourcesBuildPhase' 36*082815dcSEvan Bacon | 'PBXShellScriptBuildPhase' 37*082815dcSEvan Bacon | 'PBXSourcesBuildPhase' 38*082815dcSEvan Bacon | 'PBXVariantGroup' 39*082815dcSEvan Bacon | 'PBXTargetDependency' 40*082815dcSEvan Bacon | 'XCBuildConfiguration' 41*082815dcSEvan Bacon | 'XCConfigurationList'; 42*082815dcSEvan Bacon 43*082815dcSEvan Bacon type PBXFile = pbxFile; 44*082815dcSEvan Bacon 45*082815dcSEvan Bacon interface PBXProject { 46*082815dcSEvan Bacon isa: 'PBXProject'; 47*082815dcSEvan Bacon attributes: { 48*082815dcSEvan Bacon LastUpgradeCheck: number; 49*082815dcSEvan Bacon TargetAttributes: Record< 50*082815dcSEvan Bacon UUID, 51*082815dcSEvan Bacon { 52*082815dcSEvan Bacon CreatedOnToolsVersion?: string; 53*082815dcSEvan Bacon TestTargetID?: UUID; 54*082815dcSEvan Bacon LastSwiftMigration?: number; 55*082815dcSEvan Bacon ProvisioningStyle?: string; 56*082815dcSEvan Bacon } & Record<string, undefined | number | string> 57*082815dcSEvan Bacon >; 58*082815dcSEvan Bacon }; 59*082815dcSEvan Bacon buildConfigurationList: UUID; 60*082815dcSEvan Bacon buildConfigurationList_comment: string; 61*082815dcSEvan Bacon compatibilityVersion: string; 62*082815dcSEvan Bacon developmentRegion: string; 63*082815dcSEvan Bacon hasScannedForEncodings: number; 64*082815dcSEvan Bacon knownRegions: string[]; 65*082815dcSEvan Bacon mainGroup: UUID; 66*082815dcSEvan Bacon productRefGroup: UUID; 67*082815dcSEvan Bacon productRefGroup_comment: string; 68*082815dcSEvan Bacon projectDirPath: string; 69*082815dcSEvan Bacon projectRoot: string; 70*082815dcSEvan Bacon targets: { 71*082815dcSEvan Bacon value: UUID; 72*082815dcSEvan Bacon comment: string; 73*082815dcSEvan Bacon }[]; 74*082815dcSEvan Bacon } 75*082815dcSEvan Bacon 76*082815dcSEvan Bacon interface PBXNativeTarget { 77*082815dcSEvan Bacon isa: 'PBXNativeTarget'; 78*082815dcSEvan Bacon buildConfigurationList: UUID; 79*082815dcSEvan Bacon buildConfigurationList_comment: string; 80*082815dcSEvan Bacon buildPhases: { 81*082815dcSEvan Bacon value: UUID; 82*082815dcSEvan Bacon comment: string; 83*082815dcSEvan Bacon }[]; 84*082815dcSEvan Bacon buildRules: []; 85*082815dcSEvan Bacon dependencies: { 86*082815dcSEvan Bacon value: UUID; 87*082815dcSEvan Bacon comment: string; 88*082815dcSEvan Bacon }[]; 89*082815dcSEvan Bacon name: string; 90*082815dcSEvan Bacon productName: string; 91*082815dcSEvan Bacon productReference: UUID; 92*082815dcSEvan Bacon productReference_comment: string; 93*082815dcSEvan Bacon productType: string; 94*082815dcSEvan Bacon } 95*082815dcSEvan Bacon 96*082815dcSEvan Bacon interface PBXBuildFile { 97*082815dcSEvan Bacon isa: 'PBXBuildFile'; 98*082815dcSEvan Bacon fileRef: UUID; 99*082815dcSEvan Bacon // "AppDelegate.m" 100*082815dcSEvan Bacon fileRef_comment: string; 101*082815dcSEvan Bacon } 102*082815dcSEvan Bacon 103*082815dcSEvan Bacon interface PBXTargetDependency { 104*082815dcSEvan Bacon isa: 'PBXTargetDependency'; 105*082815dcSEvan Bacon target: UUID; 106*082815dcSEvan Bacon targetProxy: UUID; 107*082815dcSEvan Bacon } 108*082815dcSEvan Bacon 109*082815dcSEvan Bacon interface XCConfigurationList { 110*082815dcSEvan Bacon isa: 'XCConfigurationList'; 111*082815dcSEvan Bacon buildConfigurations: { 112*082815dcSEvan Bacon value: UUID; 113*082815dcSEvan Bacon comment: string | 'Release' | 'Debug'; 114*082815dcSEvan Bacon }[]; 115*082815dcSEvan Bacon defaultConfigurationIsVisible: number; 116*082815dcSEvan Bacon defaultConfigurationName: string; 117*082815dcSEvan Bacon } 118*082815dcSEvan Bacon 119*082815dcSEvan Bacon interface XCBuildConfiguration { 120*082815dcSEvan Bacon isa: 'XCBuildConfiguration'; 121*082815dcSEvan Bacon baseConfigurationReference: UUID; 122*082815dcSEvan Bacon baseConfigurationReference_comment: string; 123*082815dcSEvan Bacon buildSettings: Record<string, string | undefined | number | unknown[]> & { 124*082815dcSEvan Bacon // '"$(TARGET_NAME)"', 125*082815dcSEvan Bacon PRODUCT_NAME?: string; 126*082815dcSEvan Bacon // '"io.expo.demo.$(PRODUCT_NAME:rfc1034identifier)"', 127*082815dcSEvan Bacon PRODUCT_BUNDLE_IDENTIFIER?: string; 128*082815dcSEvan Bacon PROVISIONING_PROFILE_SPECIFIER?: string; 129*082815dcSEvan Bacon // '"$(BUILT_PRODUCTS_DIR)/rni.app/rni"' 130*082815dcSEvan Bacon TEST_HOST?: any; 131*082815dcSEvan Bacon DEVELOPMENT_TEAM?: string; 132*082815dcSEvan Bacon CODE_SIGN_IDENTITY?: string; 133*082815dcSEvan Bacon CODE_SIGN_STYLE?: string; 134*082815dcSEvan Bacon // '"$(TEST_HOST)"' 135*082815dcSEvan Bacon BUNDLE_LOADER?: string; 136*082815dcSEvan Bacon GCC_PREPROCESSOR_DEFINITIONS?: unknown[]; 137*082815dcSEvan Bacon INFOPLIST_FILE?: string; 138*082815dcSEvan Bacon IPHONEOS_DEPLOYMENT_TARGET?: string; 139*082815dcSEvan Bacon LD_RUNPATH_SEARCH_PATHS?: string; 140*082815dcSEvan Bacon OTHER_LDFLAGS?: unknown[]; 141*082815dcSEvan Bacon ASSETCATALOG_COMPILER_APPICON_NAME?: string; 142*082815dcSEvan Bacon ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME?: string; 143*082815dcSEvan Bacon CLANG_ANALYZER_NONNULL?: string; 144*082815dcSEvan Bacon CLANG_WARN_DOCUMENTATION_COMMENTS?: string; 145*082815dcSEvan Bacon CLANG_WARN_INFINITE_RECURSION?: string; 146*082815dcSEvan Bacon CLANG_WARN_SUSPICIOUS_MOVE?: string; 147*082815dcSEvan Bacon DEBUG_INFORMATION_FORMAT?: string; 148*082815dcSEvan Bacon ENABLE_TESTABILITY?: string; 149*082815dcSEvan Bacon GCC_NO_COMMON_BLOCKS?: string; 150*082815dcSEvan Bacon // 'appletvos' 151*082815dcSEvan Bacon SDKROOT?: string; 152*082815dcSEvan Bacon TARGETED_DEVICE_FAMILY?: number | string; 153*082815dcSEvan Bacon // '10.0' 154*082815dcSEvan Bacon TVOS_DEPLOYMENT_TARGET?: string; 155*082815dcSEvan Bacon }; 156*082815dcSEvan Bacon name: string; 157*082815dcSEvan Bacon } 158*082815dcSEvan Bacon 159*082815dcSEvan Bacon type ProductType = 160*082815dcSEvan Bacon | 'com.apple.product-type.application' 161*082815dcSEvan Bacon | 'com.apple.product-type.app-extension' 162*082815dcSEvan Bacon | 'com.apple.product-type.bundle' 163*082815dcSEvan Bacon | 'com.apple.product-type.tool' 164*082815dcSEvan Bacon | 'com.apple.product-type.library.dynamic' 165*082815dcSEvan Bacon | 'com.apple.product-type.framework' 166*082815dcSEvan Bacon | 'com.apple.product-type.library.static' 167*082815dcSEvan Bacon | 'com.apple.product-type.bundle.unit-test' 168*082815dcSEvan Bacon | 'com.apple.product-type.application.watchapp' 169*082815dcSEvan Bacon | 'com.apple.product-type.application.watchapp2' 170*082815dcSEvan Bacon | 'com.apple.product-type.watchkit-extension' 171*082815dcSEvan Bacon | 'com.apple.product-type.watchkit2-extension'; 172*082815dcSEvan Bacon 173*082815dcSEvan Bacon interface PBXGroup { 174*082815dcSEvan Bacon isa: 'PBXGroup'; 175*082815dcSEvan Bacon children: { 176*082815dcSEvan Bacon value: UUID; 177*082815dcSEvan Bacon comment?: string; 178*082815dcSEvan Bacon }[]; 179*082815dcSEvan Bacon name: string; 180*082815dcSEvan Bacon path?: string; 181*082815dcSEvan Bacon sourceTree: '"<group>"' | unknown; 182*082815dcSEvan Bacon } 183*082815dcSEvan Bacon 184*082815dcSEvan Bacon export class XcodeProject { 185*082815dcSEvan Bacon constructor(pbxprojPath: string); 186*082815dcSEvan Bacon 187*082815dcSEvan Bacon /** 188*082815dcSEvan Bacon * `.pbxproj` file path. 189*082815dcSEvan Bacon */ 190*082815dcSEvan Bacon filepath: string; 191*082815dcSEvan Bacon 192*082815dcSEvan Bacon // Ex: '$(TARGET_NAME)' 193*082815dcSEvan Bacon productName: string; 194*082815dcSEvan Bacon 195*082815dcSEvan Bacon hash: { 196*082815dcSEvan Bacon headComment: string; 197*082815dcSEvan Bacon project: { 198*082815dcSEvan Bacon archiveVersion: number; 199*082815dcSEvan Bacon objectVersion: number; 200*082815dcSEvan Bacon objects: { 201*082815dcSEvan Bacon [T in XCObjectType]: Record< 202*082815dcSEvan Bacon string, 203*082815dcSEvan Bacon { 204*082815dcSEvan Bacon isa: T; 205*082815dcSEvan Bacon name: string; 206*082815dcSEvan Bacon [key: string]: any; 207*082815dcSEvan Bacon } 208*082815dcSEvan Bacon >; 209*082815dcSEvan Bacon }; 210*082815dcSEvan Bacon rootObject: string; 211*082815dcSEvan Bacon rootObject_comment: string; 212*082815dcSEvan Bacon }; 213*082815dcSEvan Bacon }; 214*082815dcSEvan Bacon 215*082815dcSEvan Bacon // ------------------------------------------------------------------------ 216*082815dcSEvan Bacon // 217*082815dcSEvan Bacon // `.pbxproj` related operation - starting & ending point. 218*082815dcSEvan Bacon // 219*082815dcSEvan Bacon // ------------------------------------------------------------------------ 220*082815dcSEvan Bacon 221*082815dcSEvan Bacon /** 222*082815dcSEvan Bacon * First step to be executed while working with `.pbxproj` file. 223*082815dcSEvan Bacon */ 224*082815dcSEvan Bacon parse(callback?: (err: Error | null, results?: string) => void): this; 225*082815dcSEvan Bacon 226*082815dcSEvan Bacon parseSync(): void; 227*082815dcSEvan Bacon 228*082815dcSEvan Bacon /** 229*082815dcSEvan Bacon * @returns Content of .pbxproj file. 230*082815dcSEvan Bacon */ 231*082815dcSEvan Bacon writeSync(options?: { omitEmptyValues?: boolean }): string; 232*082815dcSEvan Bacon 233*082815dcSEvan Bacon allUuids(): UUID[]; 234*082815dcSEvan Bacon generateUuid(): UUID; 235*082815dcSEvan Bacon 236*082815dcSEvan Bacon addPluginFile(path: unknown, opt: unknown): unknown; 237*082815dcSEvan Bacon removePluginFile(path: unknown, opt: unknown): unknown; 238*082815dcSEvan Bacon addProductFile(targetPath: unknown, opt: unknown): unknown; 239*082815dcSEvan Bacon removeProductFile(path: unknown, opt: unknown): unknown; 240*082815dcSEvan Bacon addSourceFile(path: string, opt: unknown, group: string): unknown; 241*082815dcSEvan Bacon removeSourceFile(path: string, opt: unknown, group: string): unknown; 242*082815dcSEvan Bacon addHeaderFile(path: string, opt: unknown, group: string): unknown; 243*082815dcSEvan Bacon removeHeaderFile(path: string, opt: unknown, group: string): unknown; 244*082815dcSEvan Bacon addResourceFile(path: string, opt: unknown, group: string): unknown; 245*082815dcSEvan Bacon removeResourceFile(path: string, opt: unknown, group: string): unknown; 246*082815dcSEvan Bacon addFramework(fpath: string, opt: unknown): unknown; 247*082815dcSEvan Bacon removeFramework(fpath: unknown, opt: unknown): unknown; 248*082815dcSEvan Bacon addCopyfile(fpath: unknown, opt: unknown): unknown; 249*082815dcSEvan Bacon pbxCopyfilesBuildPhaseObj(target: unknown): unknown; 250*082815dcSEvan Bacon addToPbxCopyfilesBuildPhase(file: unknown): void; 251*082815dcSEvan Bacon removeCopyfile(fpath: unknown, opt: unknown): unknown; 252*082815dcSEvan Bacon removeFromPbxCopyfilesBuildPhase(file: unknown): void; 253*082815dcSEvan Bacon addStaticLibrary(path: unknown, opt: unknown): unknown; 254*082815dcSEvan Bacon /** 255*082815dcSEvan Bacon * Adds to `PBXBuildFile` section 256*082815dcSEvan Bacon */ 257*082815dcSEvan Bacon addToPbxBuildFileSection(file: PBXFile): void; 258*082815dcSEvan Bacon removeFromPbxBuildFileSection(file: unknown): void; 259*082815dcSEvan Bacon addPbxGroup( 260*082815dcSEvan Bacon filePathsArray: string[], 261*082815dcSEvan Bacon name: string, 262*082815dcSEvan Bacon path: string, 263*082815dcSEvan Bacon sourceTree?: string 264*082815dcSEvan Bacon ): { uuid: UUID; pbxGroup: PBXGroup }; 265*082815dcSEvan Bacon removePbxGroup(groupName: unknown): void; 266*082815dcSEvan Bacon addToPbxProjectSection(target: unknown): void; 267*082815dcSEvan Bacon addToPbxNativeTargetSection(target: unknown): void; 268*082815dcSEvan Bacon addToPbxFileReferenceSection(file: any): void; 269*082815dcSEvan Bacon removeFromPbxFileReferenceSection(file: unknown): unknown; 270*082815dcSEvan Bacon addToXcVersionGroupSection(file: unknown): void; 271*082815dcSEvan Bacon addToPluginsPbxGroup(file: unknown): void; 272*082815dcSEvan Bacon removeFromPluginsPbxGroup(file: unknown): unknown; 273*082815dcSEvan Bacon addToResourcesPbxGroup(file: unknown): void; 274*082815dcSEvan Bacon removeFromResourcesPbxGroup(file: unknown): unknown; 275*082815dcSEvan Bacon addToFrameworksPbxGroup(file: unknown): void; 276*082815dcSEvan Bacon removeFromFrameworksPbxGroup(file: unknown): unknown; 277*082815dcSEvan Bacon addToPbxEmbedFrameworksBuildPhase(file: unknown): void; 278*082815dcSEvan Bacon removeFromPbxEmbedFrameworksBuildPhase(file: unknown): void; 279*082815dcSEvan Bacon addToProductsPbxGroup(file: unknown): void; 280*082815dcSEvan Bacon removeFromProductsPbxGroup(file: unknown): unknown; 281*082815dcSEvan Bacon addToPbxSourcesBuildPhase(file: unknown): void; 282*082815dcSEvan Bacon removeFromPbxSourcesBuildPhase(file: unknown): void; 283*082815dcSEvan Bacon /** 284*082815dcSEvan Bacon * Adds to PBXResourcesBuildPhase` section 285*082815dcSEvan Bacon * @param resourcesBuildPhaseSectionKey Because there's might more than one `Resources` build phase we need to ensure file is placed under correct one. 286*082815dcSEvan Bacon */ 287*082815dcSEvan Bacon addToPbxResourcesBuildPhase(file: PBXFile): void; 288*082815dcSEvan Bacon removeFromPbxResourcesBuildPhase(file: unknown): void; 289*082815dcSEvan Bacon addToPbxFrameworksBuildPhase(file: unknown): void; 290*082815dcSEvan Bacon removeFromPbxFrameworksBuildPhase(file: unknown): void; 291*082815dcSEvan Bacon addXCConfigurationList( 292*082815dcSEvan Bacon configurationObjectsArray: unknown, 293*082815dcSEvan Bacon defaultConfigurationName: unknown, 294*082815dcSEvan Bacon comment: unknown 295*082815dcSEvan Bacon ): { 296*082815dcSEvan Bacon uuid: unknown; 297*082815dcSEvan Bacon xcConfigurationList: { 298*082815dcSEvan Bacon isa: string; 299*082815dcSEvan Bacon buildConfigurations: unknown[]; 300*082815dcSEvan Bacon defaultConfigurationIsVisible: number; 301*082815dcSEvan Bacon defaultConfigurationName: unknown; 302*082815dcSEvan Bacon }; 303*082815dcSEvan Bacon }; 304*082815dcSEvan Bacon addTargetDependency( 305*082815dcSEvan Bacon target: unknown, 306*082815dcSEvan Bacon dependencyTargets: unknown 307*082815dcSEvan Bacon ): { 308*082815dcSEvan Bacon uuid: unknown; 309*082815dcSEvan Bacon target: unknown; 310*082815dcSEvan Bacon }; 311*082815dcSEvan Bacon addBuildPhase( 312*082815dcSEvan Bacon filePathsArray: unknown, 313*082815dcSEvan Bacon buildPhaseType: unknown, 314*082815dcSEvan Bacon comment: unknown, 315*082815dcSEvan Bacon target: unknown, 316*082815dcSEvan Bacon optionsOrFolderType: unknown, 317*082815dcSEvan Bacon subfolderPath: unknown 318*082815dcSEvan Bacon ): { 319*082815dcSEvan Bacon uuid: unknown; 320*082815dcSEvan Bacon buildPhase: { 321*082815dcSEvan Bacon isa: unknown; 322*082815dcSEvan Bacon buildActionMask: number; 323*082815dcSEvan Bacon files: unknown[]; 324*082815dcSEvan Bacon runOnlyForDeploymentPostprocessing: number; 325*082815dcSEvan Bacon }; 326*082815dcSEvan Bacon }; 327*082815dcSEvan Bacon /** 328*082815dcSEvan Bacon * Retrieves main part describing PBXProjects that are available in `.pbxproj` file. 329*082815dcSEvan Bacon */ 330*082815dcSEvan Bacon pbxProjectSection(): Record<UUID, PBXProject> & Record<UUIDComment, string>; 331*082815dcSEvan Bacon pbxBuildFileSection(): Record<UUID, PBXBuildFile> & Record<UUIDComment, string>; 332*082815dcSEvan Bacon pbxXCBuildConfigurationSection(): Record<UUID, XCBuildConfiguration> & 333*082815dcSEvan Bacon Record<UUIDComment, string>; 334*082815dcSEvan Bacon pbxFileReferenceSection(): Record<UUID, PBXFile> & Record<UUIDComment, string>; 335*082815dcSEvan Bacon pbxNativeTargetSection(): Record<UUID, PBXNativeTarget> & Record<UUIDComment, string>; 336*082815dcSEvan Bacon xcVersionGroupSection(): unknown; 337*082815dcSEvan Bacon pbxXCConfigurationList(): Record<UUID, XCConfigurationList> & Record<UUIDComment, string>; 338*082815dcSEvan Bacon pbxGroupByName(name: string): PBXGroup | undefined; 339*082815dcSEvan Bacon /** 340*082815dcSEvan Bacon * @param targetName in most cases it's the name of the application 341*082815dcSEvan Bacon */ 342*082815dcSEvan Bacon pbxTargetByName(targetName: string): PBXNativeTarget | undefined; 343*082815dcSEvan Bacon findTargetKey(name: string): string; 344*082815dcSEvan Bacon pbxItemByComment(name: string, pbxSectionName: XCObjectType): unknown; 345*082815dcSEvan Bacon pbxSourcesBuildPhaseObj(target: unknown): unknown; 346*082815dcSEvan Bacon pbxResourcesBuildPhaseObj(target: unknown): unknown; 347*082815dcSEvan Bacon pbxFrameworksBuildPhaseObj(target: unknown): unknown; 348*082815dcSEvan Bacon pbxEmbedFrameworksBuildPhaseObj(target: unknown): unknown; 349*082815dcSEvan Bacon buildPhase(group: unknown, target: unknown): string; 350*082815dcSEvan Bacon buildPhaseObject(name: string, group: unknown, target: unknown): unknown; 351*082815dcSEvan Bacon addBuildProperty(prop: unknown, value: unknown, buildName?: string): void; 352*082815dcSEvan Bacon removeBuildProperty(prop: unknown, build_name: unknown): void; 353*082815dcSEvan Bacon updateBuildProperty(prop: string, value: unknown, build: string): void; 354*082815dcSEvan Bacon updateProductName(name: string): void; 355*082815dcSEvan Bacon removeFromFrameworkSearchPaths(file: unknown): void; 356*082815dcSEvan Bacon addToFrameworkSearchPaths(file: unknown): void; 357*082815dcSEvan Bacon removeFromLibrarySearchPaths(file: unknown): void; 358*082815dcSEvan Bacon addToLibrarySearchPaths(file: unknown): void; 359*082815dcSEvan Bacon removeFromHeaderSearchPaths(file: unknown): void; 360*082815dcSEvan Bacon addToHeaderSearchPaths(file: unknown): void; 361*082815dcSEvan Bacon addToOtherLinkerFlags(flag: unknown): void; 362*082815dcSEvan Bacon removeFromOtherLinkerFlags(flag: unknown): void; 363*082815dcSEvan Bacon addToBuildSettings(buildSetting: unknown, value: unknown): void; 364*082815dcSEvan Bacon removeFromBuildSettings(buildSetting: unknown): void; 365*082815dcSEvan Bacon /** 366*082815dcSEvan Bacon * Checks whether there is a file with given `filePath` in the project. 367*082815dcSEvan Bacon */ 368*082815dcSEvan Bacon hasFile(filePath): PBXFile | false; 369*082815dcSEvan Bacon addTarget( 370*082815dcSEvan Bacon name: unknown, 371*082815dcSEvan Bacon type: unknown, 372*082815dcSEvan Bacon subfolder: unknown 373*082815dcSEvan Bacon ): { 374*082815dcSEvan Bacon uuid: unknown; 375*082815dcSEvan Bacon pbxNativeTarget: { 376*082815dcSEvan Bacon isa: string; 377*082815dcSEvan Bacon name: string; 378*082815dcSEvan Bacon productName: string; 379*082815dcSEvan Bacon productReference: unknown; 380*082815dcSEvan Bacon productType: string; 381*082815dcSEvan Bacon buildConfigurationList: unknown; 382*082815dcSEvan Bacon buildPhases: unknown[]; 383*082815dcSEvan Bacon buildRules: unknown[]; 384*082815dcSEvan Bacon dependencies: unknown[]; 385*082815dcSEvan Bacon }; 386*082815dcSEvan Bacon }; 387*082815dcSEvan Bacon /** 388*082815dcSEvan Bacon * Get First PBXProject that can be found in `.pbxproj` file. 389*082815dcSEvan Bacon */ 390*082815dcSEvan Bacon getFirstProject(): { uuid: UUID; firstProject: PBXProject }; 391*082815dcSEvan Bacon getFirstTarget(): { 392*082815dcSEvan Bacon uuid: UUID; 393*082815dcSEvan Bacon firstTarget: PBXNativeTarget; 394*082815dcSEvan Bacon }; 395*082815dcSEvan Bacon /** 396*082815dcSEvan Bacon * Retrieves PBXNativeTarget by the type 397*082815dcSEvan Bacon */ 398*082815dcSEvan Bacon getTarget(productType: ProductType): { uuid: UUID; target: PBXNativeTarget } | null; 399*082815dcSEvan Bacon addToPbxGroupType(file: unknown, groupKey: unknown, groupType: unknown): void; 400*082815dcSEvan Bacon addToPbxVariantGroup(file: unknown, groupKey: unknown): void; 401*082815dcSEvan Bacon addToPbxGroup(file: PBXFile, groupKey: UUID): void; 402*082815dcSEvan Bacon pbxCreateGroupWithType(name: unknown, pathName: unknown, groupType: unknown): unknown; 403*082815dcSEvan Bacon pbxCreateVariantGroup(name: unknown): unknown; 404*082815dcSEvan Bacon pbxCreateGroup(name: string, pathName: string): UUID; 405*082815dcSEvan Bacon removeFromPbxGroupAndType(file: unknown, groupKey: unknown, groupType: unknown): void; 406*082815dcSEvan Bacon removeFromPbxGroup(file: unknown, groupKey: unknown): void; 407*082815dcSEvan Bacon removeFromPbxVariantGroup(file: unknown, groupKey: unknown): void; 408*082815dcSEvan Bacon getPBXGroupByKeyAndType(key: unknown, groupType: unknown): unknown; 409*082815dcSEvan Bacon /** 410*082815dcSEvan Bacon * @param groupKey UUID. 411*082815dcSEvan Bacon */ 412*082815dcSEvan Bacon getPBXGroupByKey(groupKey: string): PBXGroup | undefined; 413*082815dcSEvan Bacon getPBXVariantGroupByKey(key: unknown): unknown; 414*082815dcSEvan Bacon findPBXGroupKeyAndType(criteria: unknown, groupType: unknown): string; 415*082815dcSEvan Bacon /** 416*082815dcSEvan Bacon * @param criteria Params that should be used to locate desired PBXGroup. 417*082815dcSEvan Bacon */ 418*082815dcSEvan Bacon findPBXGroupKey(criteria: { name?: string; path?: string }): UUID | undefined; 419*082815dcSEvan Bacon findPBXVariantGroupKey(criteria: unknown): string; 420*082815dcSEvan Bacon addLocalizationVariantGroup( 421*082815dcSEvan Bacon name: unknown 422*082815dcSEvan Bacon ): { 423*082815dcSEvan Bacon uuid: unknown; 424*082815dcSEvan Bacon fileRef: unknown; 425*082815dcSEvan Bacon basename: unknown; 426*082815dcSEvan Bacon }; 427*082815dcSEvan Bacon addKnownRegion(name: string): void; 428*082815dcSEvan Bacon removeKnownRegion(name: string): void; 429*082815dcSEvan Bacon hasKnownRegion(name: string): boolean; 430*082815dcSEvan Bacon getPBXObject(name: string): unknown; 431*082815dcSEvan Bacon /** 432*082815dcSEvan Bacon * - creates `PBXFile` 433*082815dcSEvan Bacon * - adds to `PBXFileReference` section 434*082815dcSEvan Bacon * - adds to `PBXGroup` or `PBXVariantGroup` if applicable 435*082815dcSEvan Bacon * @returns `null` if file is already in `pbxproj`. 436*082815dcSEvan Bacon */ 437*082815dcSEvan Bacon addFile( 438*082815dcSEvan Bacon path: string, 439*082815dcSEvan Bacon group?: string, 440*082815dcSEvan Bacon opt?: { 441*082815dcSEvan Bacon plugin?: string; 442*082815dcSEvan Bacon target?: string; 443*082815dcSEvan Bacon variantGroup?: string; 444*082815dcSEvan Bacon lastKnownFileType?: string; 445*082815dcSEvan Bacon defaultEncoding?: 4; 446*082815dcSEvan Bacon customFramework?: true; 447*082815dcSEvan Bacon explicitFileType?: number; 448*082815dcSEvan Bacon weak?: true; 449*082815dcSEvan Bacon compilerFLags?: string; 450*082815dcSEvan Bacon embed?: boolean; 451*082815dcSEvan Bacon sign?: boolean; 452*082815dcSEvan Bacon } 453*082815dcSEvan Bacon ): PBXFile | null; 454*082815dcSEvan Bacon removeFile(path: unknown, group: unknown, opt: unknown): unknown; 455*082815dcSEvan Bacon getBuildProperty(prop: unknown, build: unknown): unknown; 456*082815dcSEvan Bacon getBuildConfigByName(name: unknown): object; 457*082815dcSEvan Bacon addDataModelDocument(filePath: unknown, group: unknown, opt: unknown): unknown; 458*082815dcSEvan Bacon addTargetAttribute(prop: unknown, value: unknown, target: unknown): void; 459*082815dcSEvan Bacon removeTargetAttribute(prop: unknown, target: unknown): void; 460*082815dcSEvan Bacon } 461*082815dcSEvan Bacon 462*082815dcSEvan Bacon export function project(projectPath: string): XcodeProject; 463*082815dcSEvan Bacon} 464*082815dcSEvan Bacon 465*082815dcSEvan Bacondeclare module 'xcode/lib/pbxFile' { 466*082815dcSEvan Bacon export default class PBXFile implements pbxFile { 467*082815dcSEvan Bacon constructor(file: string); 468*082815dcSEvan Bacon basename: string; 469*082815dcSEvan Bacon lastKnownFileType?: string; 470*082815dcSEvan Bacon group?: string; 471*082815dcSEvan Bacon path?: string; 472*082815dcSEvan Bacon fileEncoding?: number; 473*082815dcSEvan Bacon defaultEncoding?: number; 474*082815dcSEvan Bacon sourceTree: string; 475*082815dcSEvan Bacon includeInIndex?: number; 476*082815dcSEvan Bacon explicitFileType?: unknown; 477*082815dcSEvan Bacon settings?: object; 478*082815dcSEvan Bacon uuid?: string; 479*082815dcSEvan Bacon fileRef: string; 480*082815dcSEvan Bacon target?: string; 481*082815dcSEvan Bacon } 482*082815dcSEvan Bacon} 483