1eeffdb10STomasz Sapetaimport { TransformPipeline } from '.';
2eeffdb10STomasz Sapeta
3eeffdb10STomasz Sapetaexport function podspecTransforms(versionName: string): TransformPipeline {
4eeffdb10STomasz Sapeta  return {
5eeffdb10STomasz Sapeta    transforms: [
6eeffdb10STomasz Sapeta      // Common transforms
7eeffdb10STomasz Sapeta      {
8eeffdb10STomasz Sapeta        // Transforms some podspec fields by adding versionName at the beginning
9eeffdb10STomasz Sapeta        replace: /\.(name|header_dir|module_name)(\s*=\s*["'])([^"']+)(["'])/g,
10eeffdb10STomasz Sapeta        with: `.$1$2${versionName}$3$4`,
11eeffdb10STomasz Sapeta      },
12eeffdb10STomasz Sapeta      {
13eeffdb10STomasz Sapeta        // Prefixes dependencies listed in the podspecs
14*07d44be4SKudo Chien        replace: /(\.dependency\s+["'])(Yoga|React\-|ReactCommon|RCT|FB)(?!-Folly)([^"']*["'])/g,
15eeffdb10STomasz Sapeta        with: `$1${versionName}$2$3`,
16eeffdb10STomasz Sapeta      },
17eeffdb10STomasz Sapeta      {
18eeffdb10STomasz Sapeta        // Removes source conditional
19eeffdb10STomasz Sapeta        replace: /source\s*\=\s*\{[.\S\s]+?end/g,
20eeffdb10STomasz Sapeta        with: '',
21eeffdb10STomasz Sapeta      },
22eeffdb10STomasz Sapeta      {
23eeffdb10STomasz Sapeta        // Points spec source at correct directory
24eeffdb10STomasz Sapeta        replace: /(\.source\s*\=\s*)\S+\n/g,
25eeffdb10STomasz Sapeta        with: '$1{ :path => "." }\n',
26eeffdb10STomasz Sapeta      },
27eeffdb10STomasz Sapeta
28eeffdb10STomasz Sapeta      // React-Core & ReactCommon
29eeffdb10STomasz Sapeta      {
30eeffdb10STomasz Sapeta        // Fixes header_subspecs for RCTBlobHeaders
31eeffdb10STomasz Sapeta        paths: 'React-Core.podspec',
32eeffdb10STomasz Sapeta        replace: /\{(RCTBlobManager),(RCTFileReaderModule)\}/g,
33eeffdb10STomasz Sapeta        with: `{${versionName}$1,${versionName}$2}`,
34eeffdb10STomasz Sapeta      },
35eeffdb10STomasz Sapeta      {
36eeffdb10STomasz Sapeta        // Prefixes conflicting AccessibilityResources
37eeffdb10STomasz Sapeta        paths: 'React-Core.podspec',
38eeffdb10STomasz Sapeta        replace: /"AccessibilityResources"/g,
39eeffdb10STomasz Sapeta        with: `"${versionName}AccessibilityResources"`,
40eeffdb10STomasz Sapeta      },
41eeffdb10STomasz Sapeta      {
42eeffdb10STomasz Sapeta        // Fixes HEADER_SEARCH_PATHS
43eeffdb10STomasz Sapeta        paths: ['React-Core.podspec', 'ReactCommon.podspec'],
44eeffdb10STomasz Sapeta        replace: /(Headers\/Private\/)(React-Core)/g,
45eeffdb10STomasz Sapeta        with: `$1${versionName}$2`,
46eeffdb10STomasz Sapeta      },
47eeffdb10STomasz Sapeta
48eeffdb10STomasz Sapeta      // React-cxxreact
49eeffdb10STomasz Sapeta      {
50eeffdb10STomasz Sapeta        // Fixes excluding SampleCxxModule.* files
51eeffdb10STomasz Sapeta        paths: 'React-cxxreact.podspec',
52eeffdb10STomasz Sapeta        replace: /\.exclude_files(\s*=\s*["'])(SampleCxxModule\.\*)(["'])/g,
53eeffdb10STomasz Sapeta        with: `.exclude_files$1${versionName}$2$3`,
54eeffdb10STomasz Sapeta      },
55eeffdb10STomasz Sapeta
56eeffdb10STomasz Sapeta      // Yoga
57eeffdb10STomasz Sapeta      {
58eeffdb10STomasz Sapeta        // Unprefixes inner directory for source_files
59eeffdb10STomasz Sapeta        paths: 'Yoga.podspec',
60*07d44be4SKudo Chien        replace: /\{(Yoga),(YGEnums),(YGMacros),(YGNode),(YGStyle),(YGValue)\}/g,
61*07d44be4SKudo Chien        with: `{${versionName}$1,${versionName}$2,${versionName}$3,${versionName}$4,${versionName}$5,${versionName}$6}`,
62eeffdb10STomasz Sapeta      },
63eeffdb10STomasz Sapeta
64eeffdb10STomasz Sapeta      // FBReactNativeSpec
65eeffdb10STomasz Sapeta      {
66eeffdb10STomasz Sapeta        // Fixes HEADER_SEARCH_PATHS
67eeffdb10STomasz Sapeta        paths: 'FBReactNativeSpec.podspec',
68eeffdb10STomasz Sapeta        replace: /(\/Libraries\/)(FBReactNativeSpec)/g,
69eeffdb10STomasz Sapeta        with: `$1${versionName}$2`,
70eeffdb10STomasz Sapeta      },
71*07d44be4SKudo Chien      {
72*07d44be4SKudo Chien        // Disable codegen from build phase script
73*07d44be4SKudo Chien        paths: 'FBReactNativeSpec.podspec',
74*07d44be4SKudo Chien        replace: /(use_react_native_codegen!)/g,
75*07d44be4SKudo Chien        with: '# $1',
76*07d44be4SKudo Chien      },
77eeffdb10STomasz Sapeta    ],
78eeffdb10STomasz Sapeta  };
79eeffdb10STomasz Sapeta}
80