mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
at ruby-v 3.3 kB view raw
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}