1{"version":3,"file":"BuildScheme.js","names":["getSchemesFromXcodeproj","projectRoot","findSchemeNames","getRunnableSchemesFromXcodeproj","configuration","project","getPbxproj","findSignableTargets","map","target","osType","type","unquote","productType","TargetType","WATCH","startsWith","APPLICATION","xcConfigurationList","hash","objects","XCConfigurationList","buildConfigurationList","buildConfiguration","buildConfigurations","find","value","comment","xcBuildConfiguration","XCBuildConfiguration","buildSdkRoot","buildSettings","SDKROOT","name","readSchemeAsync","scheme","allSchemePaths","findSchemePaths","re","RegExp","schemePath","i","exec","readXMLAsync","path","Error","getApplicationTargetNameForSchemeAsync","schemeXML","buildActionEntry","Scheme","BuildAction","BuildActionEntries","BuildActionEntry","targetName","length","getBlueprintName","entry","BuildableReference","BuildableName","endsWith","getArchiveBuildConfigurationForSchemeAsync","ArchiveAction","BlueprintName"],"sources":["../../src/ios/BuildScheme.ts"],"sourcesContent":["import { readXMLAsync } from '../utils/XML';\nimport { findSchemeNames, findSchemePaths } from './Paths';\nimport { findSignableTargets, TargetType } from './Target';\nimport { getPbxproj, unquote } from './utils/Xcodeproj';\n\ninterface SchemeXML {\n Scheme?: {\n BuildAction?: {\n BuildActionEntries?: {\n BuildActionEntry?: BuildActionEntryType[];\n }[];\n }[];\n ArchiveAction?: {\n $?: {\n buildConfiguration?: string;\n };\n }[];\n };\n}\n\ninterface BuildActionEntryType {\n BuildableReference?: {\n $?: {\n BlueprintName?: string;\n BuildableName?: string;\n };\n }[];\n}\n\nexport function getSchemesFromXcodeproj(projectRoot: string): string[] {\n return findSchemeNames(projectRoot);\n}\n\nexport function getRunnableSchemesFromXcodeproj(\n projectRoot: string,\n { configuration = 'Debug' }: { configuration?: 'Debug' | 'Release' } = {}\n): { name: string; osType: string; type: string }[] {\n const project = getPbxproj(projectRoot);\n\n return findSignableTargets(project).map(([, target]) => {\n let osType = 'iOS';\n const type = unquote(target.productType);\n\n if (type === TargetType.WATCH) {\n osType = 'watchOS';\n } else if (\n // (apps) com.apple.product-type.application\n // (app clips) com.apple.product-type.application.on-demand-install-capable\n // NOTE(EvanBacon): This matches against `watchOS` as well so we check for watch first.\n type.startsWith(TargetType.APPLICATION)\n ) {\n // Attempt to resolve the platform SDK for each target so we can filter devices.\n const xcConfigurationList =\n project.hash.project.objects.XCConfigurationList[target.buildConfigurationList];\n\n if (xcConfigurationList) {\n const buildConfiguration =\n xcConfigurationList.buildConfigurations.find(\n (value: { comment: string; value: string }) => value.comment === configuration\n ) || xcConfigurationList.buildConfigurations[0];\n if (buildConfiguration?.value) {\n const xcBuildConfiguration =\n project.hash.project.objects.XCBuildConfiguration?.[buildConfiguration.value];\n\n const buildSdkRoot = xcBuildConfiguration.buildSettings.SDKROOT;\n if (\n buildSdkRoot === 'appletvos' ||\n 'TVOS_DEPLOYMENT_TARGET' in xcBuildConfiguration.buildSettings\n ) {\n // Is a TV app...\n osType = 'tvOS';\n } else if (buildSdkRoot === 'iphoneos') {\n osType = 'iOS';\n }\n }\n }\n }\n\n return {\n name: unquote(target.name),\n osType,\n type: unquote(target.productType),\n };\n });\n}\n\nasync function readSchemeAsync(\n projectRoot: string,\n scheme: string\n): Promise<SchemeXML | undefined> {\n const allSchemePaths = findSchemePaths(projectRoot);\n const re = new RegExp(`/${scheme}.xcscheme`, 'i');\n const schemePath = allSchemePaths.find((i) => re.exec(i));\n if (schemePath) {\n return (await readXMLAsync({ path: schemePath })) as unknown as SchemeXML | undefined;\n } else {\n throw new Error(`scheme '${scheme}' does not exist, make sure it's marked as shared`);\n }\n}\n\nexport async function getApplicationTargetNameForSchemeAsync(\n projectRoot: string,\n scheme: string\n): Promise<string> {\n const schemeXML = await readSchemeAsync(projectRoot, scheme);\n const buildActionEntry =\n schemeXML?.Scheme?.BuildAction?.[0]?.BuildActionEntries?.[0]?.BuildActionEntry;\n const targetName =\n buildActionEntry?.length === 1\n ? getBlueprintName(buildActionEntry[0])\n : getBlueprintName(\n buildActionEntry?.find((entry) => {\n return entry.BuildableReference?.[0]?.['$']?.BuildableName?.endsWith('.app');\n })\n );\n if (!targetName) {\n throw new Error(`${scheme}.xcscheme seems to be corrupted`);\n }\n return targetName;\n}\n\nexport async function getArchiveBuildConfigurationForSchemeAsync(\n projectRoot: string,\n scheme: string\n): Promise<string> {\n const schemeXML = await readSchemeAsync(projectRoot, scheme);\n const buildConfiguration = schemeXML?.Scheme?.ArchiveAction?.[0]?.['$']?.buildConfiguration;\n if (!buildConfiguration) {\n throw new Error(`${scheme}.xcscheme seems to be corrupted`);\n }\n return buildConfiguration;\n}\n\nfunction getBlueprintName(entry?: BuildActionEntryType): string | undefined {\n return entry?.BuildableReference?.[0]?.['$']?.BlueprintName;\n}\n"],"mappings":";;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AA0BO,SAASA,uBAAT,CAAiCC,WAAjC,EAAgE;EACrE,OAAO,IAAAC,wBAAA,EAAgBD,WAAhB,CAAP;AACD;;AAEM,SAASE,+BAAT,CACLF,WADK,EAEL;EAAEG,aAAa,GAAG;AAAlB,IAAuE,EAFlE,EAG6C;EAClD,MAAMC,OAAO,GAAG,IAAAC,uBAAA,EAAWL,WAAX,CAAhB;EAEA,OAAO,IAAAM,6BAAA,EAAoBF,OAApB,EAA6BG,GAA7B,CAAiC,CAAC,GAAGC,MAAH,CAAD,KAAgB;IACtD,IAAIC,MAAM,GAAG,KAAb;IACA,MAAMC,IAAI,GAAG,IAAAC,oBAAA,EAAQH,MAAM,CAACI,WAAf,CAAb;;IAEA,IAAIF,IAAI,KAAKG,oBAAA,CAAWC,KAAxB,EAA+B;MAC7BL,MAAM,GAAG,SAAT;IACD,CAFD,MAEO,KACL;IACA;IACA;IACAC,IAAI,CAACK,UAAL,CAAgBF,oBAAA,CAAWG,WAA3B,CAJK,EAKL;MACA;MACA,MAAMC,mBAAmB,GACvBb,OAAO,CAACc,IAAR,CAAad,OAAb,CAAqBe,OAArB,CAA6BC,mBAA7B,CAAiDZ,MAAM,CAACa,sBAAxD,CADF;;MAGA,IAAIJ,mBAAJ,EAAyB;QACvB,MAAMK,kBAAkB,GACtBL,mBAAmB,CAACM,mBAApB,CAAwCC,IAAxC,CACGC,KAAD,IAA+CA,KAAK,CAACC,OAAN,KAAkBvB,aADnE,KAEKc,mBAAmB,CAACM,mBAApB,CAAwC,CAAxC,CAHP;;QAIA,IAAID,kBAAJ,aAAIA,kBAAJ,eAAIA,kBAAkB,CAAEG,KAAxB,EAA+B;UAAA;;UAC7B,MAAME,oBAAoB,4BACxBvB,OAAO,CAACc,IAAR,CAAad,OAAb,CAAqBe,OAArB,CAA6BS,oBADL,0DACxB,sBAAoDN,kBAAkB,CAACG,KAAvE,CADF;UAGA,MAAMI,YAAY,GAAGF,oBAAoB,CAACG,aAArB,CAAmCC,OAAxD;;UACA,IACEF,YAAY,KAAK,WAAjB,IACA,4BAA4BF,oBAAoB,CAACG,aAFnD,EAGE;YACA;YACArB,MAAM,GAAG,MAAT;UACD,CAND,MAMO,IAAIoB,YAAY,KAAK,UAArB,EAAiC;YACtCpB,MAAM,GAAG,KAAT;UACD;QACF;MACF;IACF;;IAED,OAAO;MACLuB,IAAI,EAAE,IAAArB,oBAAA,EAAQH,MAAM,CAACwB,IAAf,CADD;MAELvB,MAFK;MAGLC,IAAI,EAAE,IAAAC,oBAAA,EAAQH,MAAM,CAACI,WAAf;IAHD,CAAP;EAKD,CA5CM,CAAP;AA6CD;;AAED,eAAeqB,eAAf,CACEjC,WADF,EAEEkC,MAFF,EAGkC;EAChC,MAAMC,cAAc,GAAG,IAAAC,wBAAA,EAAgBpC,WAAhB,CAAvB;EACA,MAAMqC,EAAE,GAAG,IAAIC,MAAJ,CAAY,IAAGJ,MAAO,WAAtB,EAAkC,GAAlC,CAAX;EACA,MAAMK,UAAU,GAAGJ,cAAc,CAACX,IAAf,CAAqBgB,CAAD,IAAOH,EAAE,CAACI,IAAH,CAAQD,CAAR,CAA3B,CAAnB;;EACA,IAAID,UAAJ,EAAgB;IACd,OAAQ,MAAM,IAAAG,mBAAA,EAAa;MAAEC,IAAI,EAAEJ;IAAR,CAAb,CAAd;EACD,CAFD,MAEO;IACL,MAAM,IAAIK,KAAJ,CAAW,WAAUV,MAAO,mDAA5B,CAAN;EACD;AACF;;AAEM,eAAeW,sCAAf,CACL7C,WADK,EAELkC,MAFK,EAGY;EAAA;;EACjB,MAAMY,SAAS,GAAG,MAAMb,eAAe,CAACjC,WAAD,EAAckC,MAAd,CAAvC;EACA,MAAMa,gBAAgB,GACpBD,SADoB,aACpBA,SADoB,4CACpBA,SAAS,CAAEE,MADS,+EACpB,kBAAmBC,WADC,oFACpB,sBAAiC,CAAjC,CADoB,qFACpB,uBAAqCC,kBADjB,qFACpB,uBAA0D,CAA1D,CADoB,2DACpB,uBAA8DC,gBADhE;EAEA,MAAMC,UAAU,GACd,CAAAL,gBAAgB,SAAhB,IAAAA,gBAAgB,WAAhB,YAAAA,gBAAgB,CAAEM,MAAlB,MAA6B,CAA7B,GACIC,gBAAgB,CAACP,gBAAgB,CAAC,CAAD,CAAjB,CADpB,GAEIO,gBAAgB,CACdP,gBADc,aACdA,gBADc,uBACdA,gBAAgB,CAAEvB,IAAlB,CAAwB+B,KAAD,IAAW;IAAA;;IAChC,gCAAOA,KAAK,CAACC,kBAAb,oFAAO,sBAA2B,CAA3B,CAAP,qFAAO,uBAAgC,GAAhC,CAAP,qFAAO,uBAAsCC,aAA7C,2DAAO,uBAAqDC,QAArD,CAA8D,MAA9D,CAAP;EACD,CAFD,CADc,CAHtB;;EAQA,IAAI,CAACN,UAAL,EAAiB;IACf,MAAM,IAAIR,KAAJ,CAAW,GAAEV,MAAO,iCAApB,CAAN;EACD;;EACD,OAAOkB,UAAP;AACD;;AAEM,eAAeO,0CAAf,CACL3D,WADK,EAELkC,MAFK,EAGY;EAAA;;EACjB,MAAMY,SAAS,GAAG,MAAMb,eAAe,CAACjC,WAAD,EAAckC,MAAd,CAAvC;EACA,MAAMZ,kBAAkB,GAAGwB,SAAH,aAAGA,SAAH,6CAAGA,SAAS,CAAEE,MAAd,gFAAG,mBAAmBY,aAAtB,oFAAG,sBAAmC,CAAnC,CAAH,qFAAG,uBAAwC,GAAxC,CAAH,2DAAG,uBAA8CtC,kBAAzE;;EACA,IAAI,CAACA,kBAAL,EAAyB;IACvB,MAAM,IAAIsB,KAAJ,CAAW,GAAEV,MAAO,iCAApB,CAAN;EACD;;EACD,OAAOZ,kBAAP;AACD;;AAED,SAASgC,gBAAT,CAA0BC,KAA1B,EAA4E;EAAA;;EAC1E,OAAOA,KAAP,aAAOA,KAAP,iDAAOA,KAAK,CAAEC,kBAAd,qFAAO,uBAA4B,CAA5B,CAAP,qFAAO,uBAAiC,GAAjC,CAAP,2DAAO,uBAAuCK,aAA9C;AACD"}