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":"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"}