Skip to content

Commit 0d6913a

Browse files
authored
fix(apple): use JS-based Xcode project generator (#2427)
1 parent ddc1411 commit 0d6913a

16 files changed

+73
-585
lines changed

.rubocop.yml

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ AllCops:
55
NewCops: enable
66
Exclude:
77
- "**/Pods/**/*"
8+
- "**/build/generated/**/*"
89
- "**/node_modules/**/*"
910
- "vendor/bundle/**/*"
1011
TargetRubyVersion: 2.6

ios/app.mjs

+14-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,12 @@ import * as nodefs from "node:fs";
33
import * as path from "node:path";
44
import { URL, fileURLToPath } from "node:url";
55
import { loadAppConfig } from "../scripts/appConfig.mjs";
6-
import { findFile, readTextFile, toVersionNumber } from "../scripts/helpers.js";
6+
import {
7+
findFile,
8+
isMain,
9+
readTextFile,
10+
toVersionNumber,
11+
} from "../scripts/helpers.js";
712
import { cp_r, mkdir_p, rm_r } from "../scripts/utils/filesystem.mjs";
813
import { generateAssetsCatalogs } from "./assetsCatalog.mjs";
914
import { generateEntitlements } from "./entitlements.mjs";
@@ -136,7 +141,7 @@ export function generateProject(
136141

137142
// Copy Xcode project files
138143
mkdir_p(destination, fs);
139-
cp_r(xcodeprojSrc, destination, fs);
144+
cp_r(xcodeprojSrc, xcodeprojDst, fs);
140145
configureBuildSchemes(appConfig, targetPlatform, xcodeprojDst, fs);
141146

142147
// Link source files
@@ -214,3 +219,10 @@ export function generateProject(
214219

215220
return project;
216221
}
222+
223+
if (isMain(import.meta.url)) {
224+
const [, , projectRoot, platform, options] = process.argv;
225+
const user = typeof options === "string" ? JSON.parse(options) : {};
226+
const project = generateProject(projectRoot, platform, user);
227+
console.log(JSON.stringify(project, undefined, 2));
228+
}

ios/assetsCatalog.mjs

+1-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ export function generateAssetsCatalogs(
9292
const xcassets_dst = path.join(destination, path.basename(xcassets_src));
9393

9494
rm_r(xcassets_dst, fs);
95-
cp_r(xcassets_src, destination, fs);
95+
cp_r(xcassets_src, xcassets_dst, fs);
9696

9797
const platformConfig = appConfig[targetPlatform];
9898
if (!isObject(platformConfig)) {

ios/assets_catalog.rb

-46
This file was deleted.

ios/entitlements.rb

-26
This file was deleted.

ios/info_plist.rb

-48
This file was deleted.

ios/node.rb

-21
This file was deleted.

ios/pod_helpers.rb

-12
Original file line numberDiff line numberDiff line change
@@ -50,18 +50,6 @@ def new_architecture_enabled?(options, react_native_version)
5050
ENV.fetch('RCT_NEW_ARCH_ENABLED', options[:fabric_enabled] ? '1' : '0') != '0'
5151
end
5252

53-
def platform_config(key, project_root, target_platform)
54-
manifest = app_manifest(project_root)
55-
return if manifest.nil?
56-
57-
config = manifest[target_platform.to_s]
58-
config[key] if !config.nil? && !config.empty?
59-
end
60-
61-
def project_path(file, target_platform)
62-
File.expand_path(file, File.join(__dir__, '..', target_platform.to_s))
63-
end
64-
6553
def resolve_module(request, start_dir = Pod::Config.instance.installation_root)
6654
@module_cache ||= {}
6755
return @module_cache[request] if @module_cache.key?(request)

ios/privacy_manifest.rb

-55
This file was deleted.

0 commit comments

Comments
 (0)