xref: /expo/tools/src/prebuilds/XcodeGen.types.ts (revision eeffdb10)
1*eeffdb10STomasz Sapeta// More detailed spec schema available here:
2*eeffdb10STomasz Sapeta// https://github.com/yonaskolb/XcodeGen/blob/master/Docs/ProjectSpec.md
3*eeffdb10STomasz Sapetaexport type ProjectSpec = {
4*eeffdb10STomasz Sapeta  name: string;
5*eeffdb10STomasz Sapeta  projectReferences?: {
6*eeffdb10STomasz Sapeta    [key: string]: {
7*eeffdb10STomasz Sapeta      path: string;
8*eeffdb10STomasz Sapeta    };
9*eeffdb10STomasz Sapeta  };
10*eeffdb10STomasz Sapeta  targets?: {
11*eeffdb10STomasz Sapeta    [targetName: string]: {
12*eeffdb10STomasz Sapeta      type: string;
13*eeffdb10STomasz Sapeta      platform: ProjectSpecPlatform[];
14*eeffdb10STomasz Sapeta      sources?: ProjectSpecSource[];
15*eeffdb10STomasz Sapeta      dependencies?: ProjectSpecDependency[];
16*eeffdb10STomasz Sapeta      settings?: ProjectSpecSettings;
17*eeffdb10STomasz Sapeta      info?: {
18*eeffdb10STomasz Sapeta        path: string;
19*eeffdb10STomasz Sapeta        properties: Record<string, string>;
20*eeffdb10STomasz Sapeta      };
21*eeffdb10STomasz Sapeta    };
22*eeffdb10STomasz Sapeta  };
23*eeffdb10STomasz Sapeta  options?: ProjectSpecOptions;
24*eeffdb10STomasz Sapeta  settings?: ProjectSpecSettings;
25*eeffdb10STomasz Sapeta};
26*eeffdb10STomasz Sapeta
27*eeffdb10STomasz Sapetaexport type ProjectSpecPlatform = 'iOS' | 'macOS' | 'tvOS' | 'watchOS';
28*eeffdb10STomasz Sapeta
29*eeffdb10STomasz Sapetaexport type ProjectSpecSource = {
30*eeffdb10STomasz Sapeta  path: string;
31*eeffdb10STomasz Sapeta  name?: string;
32*eeffdb10STomasz Sapeta  createIntermediateGroups?: boolean;
33*eeffdb10STomasz Sapeta  includes?: string[];
34*eeffdb10STomasz Sapeta  excludes?: string[];
35*eeffdb10STomasz Sapeta  compilerFlags?: string;
36*eeffdb10STomasz Sapeta};
37*eeffdb10STomasz Sapeta
38*eeffdb10STomasz Sapetaexport type ProjectSpecDependency = {
39*eeffdb10STomasz Sapeta  // framework type
40*eeffdb10STomasz Sapeta  framework?: string;
41*eeffdb10STomasz Sapeta  implicit?: boolean;
42*eeffdb10STomasz Sapeta
43*eeffdb10STomasz Sapeta  // target/project type
44*eeffdb10STomasz Sapeta  target?: string;
45*eeffdb10STomasz Sapeta
46*eeffdb10STomasz Sapeta  // SDK framework
47*eeffdb10STomasz Sapeta  sdk?: string;
48*eeffdb10STomasz Sapeta
49*eeffdb10STomasz Sapeta  // shared options
50*eeffdb10STomasz Sapeta  embed?: boolean;
51*eeffdb10STomasz Sapeta  link?: boolean;
52*eeffdb10STomasz Sapeta  codeSign?: boolean;
53*eeffdb10STomasz Sapeta  removeHeaders?: boolean;
54*eeffdb10STomasz Sapeta  weak?: boolean;
55*eeffdb10STomasz Sapeta};
56*eeffdb10STomasz Sapeta
57*eeffdb10STomasz Sapetaexport type ProjectSpecOptions = {
58*eeffdb10STomasz Sapeta  minimumXcodeGenVersion: string;
59*eeffdb10STomasz Sapeta  deploymentTarget: Record<ProjectSpecPlatform, string>;
60*eeffdb10STomasz Sapeta};
61*eeffdb10STomasz Sapeta
62*eeffdb10STomasz Sapetaexport type ProjectSpecSettings = {
63*eeffdb10STomasz Sapeta  base: XcodeConfig;
64*eeffdb10STomasz Sapeta};
65*eeffdb10STomasz Sapeta
66*eeffdb10STomasz Sapetaexport type XcodeConfig = Record<string, string>;
67