mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
1const {withXcodeProject} = require('@expo/config-plugins')
2
3const BUILD_PHASE_FILES = ['AppDelegate.swift', 'ViewController.swift']
4
5const withXcodeTarget = (config, {targetName}) => {
6 // eslint-disable-next-line no-shadow
7 return withXcodeProject(config, config => {
8 const pbxProject = config.modResults
9
10 const target = pbxProject.addTarget(targetName, 'application', targetName)
11 target.pbxNativeTarget.productType = `"com.apple.product-type.application.on-demand-install-capable"`
12 pbxProject.addBuildPhase(
13 BUILD_PHASE_FILES.map(f => `${targetName}/${f}`),
14 'PBXSourcesBuildPhase',
15 'Sources',
16 target.uuid,
17 'application',
18 '"AppClips"',
19 )
20 pbxProject.addBuildPhase(
21 [`${targetName}/Images.xcassets`],
22 'PBXResourcesBuildPhase',
23 'Resources',
24 target.uuid,
25 'application',
26 '"AppClips"',
27 )
28
29 const pbxGroup = pbxProject.addPbxGroup([
30 'AppDelegate.swift',
31 'ViewController.swift',
32 'Images.xcassets',
33 `${targetName}.entitlements`,
34 'Info.plist',
35 ])
36
37 pbxProject.addFile(`${targetName}/Info.plist`, pbxGroup.uuid)
38 const configurations = pbxProject.pbxXCBuildConfigurationSection()
39 for (const key in configurations) {
40 if (typeof configurations[key].buildSettings !== 'undefined') {
41 const buildSettingsObj = configurations[key].buildSettings
42 if (
43 typeof buildSettingsObj.PRODUCT_NAME !== 'undefined' &&
44 buildSettingsObj.PRODUCT_NAME === `"${targetName}"`
45 ) {
46 buildSettingsObj.CLANG_ENABLE_MODULES = 'YES'
47 buildSettingsObj.INFOPLIST_FILE = `"${targetName}/Info.plist"`
48 buildSettingsObj.CODE_SIGN_ENTITLEMENTS = `"${targetName}/${targetName}.entitlements"`
49 buildSettingsObj.CODE_SIGN_STYLE = 'Automatic'
50 buildSettingsObj.CURRENT_PROJECT_VERSION = `"${
51 process.env.BSKY_IOS_BUILD_NUMBER ?? '1'
52 }"`
53 buildSettingsObj.GENERATE_INFOPLIST_FILE = 'YES'
54 buildSettingsObj.MARKETING_VERSION = `"${config.version}"`
55 buildSettingsObj.PRODUCT_BUNDLE_IDENTIFIER = `"${config.ios?.bundleIdentifier}.AppClip"`
56 buildSettingsObj.SWIFT_EMIT_LOC_STRINGS = 'YES'
57 buildSettingsObj.SWIFT_VERSION = '5.0'
58 buildSettingsObj.TARGETED_DEVICE_FAMILY = `"1"`
59 buildSettingsObj.DEVELOPMENT_TEAM = 'B3LX46C5HS'
60 buildSettingsObj.IPHONEOS_DEPLOYMENT_TARGET = '15.1'
61 buildSettingsObj.ASSETCATALOG_COMPILER_APPICON_NAME = 'AppIcon'
62 }
63 }
64 }
65
66 pbxProject.addTargetAttribute('DevelopmentTeam', 'B3LX46C5HS', targetName)
67
68 if (!pbxProject.hash.project.objects.PBXTargetDependency) {
69 pbxProject.hash.project.objects.PBXTargetDependency = {}
70 }
71 if (!pbxProject.hash.project.objects.PBXContainerItemProxy) {
72 pbxProject.hash.project.objects.PBXContainerItemProxy = {}
73 }
74 pbxProject.addTargetDependency(pbxProject.getFirstTarget().uuid, [
75 target.uuid,
76 ])
77
78 pbxProject.addBuildPhase(
79 [`${targetName}.app`],
80 'PBXCopyFilesBuildPhase',
81 'Embed App Clips',
82 pbxProject.getFirstTarget().uuid,
83 'application',
84 '"AppClips"',
85 )
86
87 return config
88 })
89}
90
91module.exports = {withXcodeTarget}