nexo/apps/mattermost/ios/Podfile

131 lines
4.2 KiB
Ruby

def node_require(script)
# Resolve script with node to allow for hoisting
require Pod::Executable.execute_command('node', ['-p',
"require.resolve(
'#{script}',
{paths: [process.argv[1]]},
)", __dir__]).strip
end
require File.join(File.dirname(`node --print "require.resolve('expo/package.json')"`), "scripts/autolinking")
require File.join(File.dirname(`node --print "require.resolve('react-native/package.json')"`), "scripts/react_native_pods")
node_require('react-native-permissions/scripts/setup.rb')
require 'json'
podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties.json'))) rescue {}
def ccache_enabled?(podfile_properties)
# Environment variable takes precedence
return ENV['USE_CCACHE'] == '1' if ENV['USE_CCACHE']
# Fall back to Podfile properties
podfile_properties['ccacheEnabled'] == 'true'
end
ENV['EX_DEV_CLIENT_NETWORK_INSPECTOR'] ||= podfile_properties['EX_DEV_CLIENT_NETWORK_INSPECTOR']
ENV['RCT_USE_RN_DEP'] ||= '1' if podfile_properties['buildReactNativeFromSource'] != 'true'
ENV['RCT_USE_PREBUILT_RNCORE'] ||= '1' if podfile_properties['buildReactNativeFromSource'] != 'true'
ENV['EXPO_USE_PRECOMPILED_MODULES'] ||= '1' if podfile_properties['buildExpoModulesFromSource'] != 'true'
ENV['RCT_HERMES_V1_ENABLED'] ||= '1' if podfile_properties['useHermesV1'] == 'true'
platform :ios, podfile_properties['deploymentTarget'] || '16.4' #min_ios_version_supported
prepare_react_native_project!
Pod::UI.puts "Configuring Pod with statically linked Frameworks".green
use_frameworks! :linkage => :static
setup_permissions([
"Camera",
"Microphone",
"Notifications",
"PhotoLibrary",
"Bluetooth"
])
# Conditional Intune MAM support
intune_enabled = ENV['INTUNE_ENABLED'] == 'true' || ENV['INTUNE_ENABLED'] == '1'
if intune_enabled
puts "🔐 Intune MAM features enabled"
end
if ENV['EXPO_USE_COMMUNITY_AUTOLINKING'] == '1'
config_command = ['node', '-e', "process.argv=['', '', 'config'];require('@react-native-community/cli').run()"];
else
config_command = [
'node',
'--no-warnings',
'--eval',
'require(\'expo/bin/autolinking\')',
'expo-modules-autolinking',
'react-native-config',
'--json',
'--platform',
'ios'
]
end
config = use_native_modules!(config_command)
target 'Mattermost' do
# Pods for Mattermost
use_expo_modules!
use_react_native!(
:path => config[:reactNativePath],
# An absolute path to your application root.
:app_path => "#{Pod::Config.instance.installation_root}/.."
)
pod 'simdjson', path: '../node_modules/@nozbe/simdjson', :modular_headers => true
pod 'Gekidou', :path => './Gekidou'
pod 'CocoaLumberjack', :modular_headers => true
pod 'TurboLogIOSNative', :git => 'https://github.com/larkox/react-native-turbo-log-ios-native.git', :modular_headers => true
# Conditional Intune MAM pod (internal builds only)
if intune_enabled
pod 'mattermost-intune', :path => '../libraries/@mattermost/intune'
end
end
target 'NotificationService' do
inherit! :search_paths
pod 'TurboLogIOSNative', :git => 'https://github.com/larkox/react-native-turbo-log-ios-native.git', :modular_headers => true
pod 'Sentry', '9.12.1'
pod 'Gekidou', :path => './Gekidou'
end
target 'MattermostShare' do
inherit! :search_paths
pod 'Sentry', '9.12.1'
pod 'Gekidou', :path => './Gekidou'
pod 'OpenGraph', '1.4.1'
end
post_install do |installer|
react_native_post_install(
installer,
config[:reactNativePath],
:mac_catalyst_enabled => false,
:ccache_enabled => ccache_enabled?(podfile_properties),
)
installer.pods_project.targets.each do |t|
t.build_configurations.each do |bc|
bc.build_settings['SWIFT_VERSION'] = '5.9'
bc.build_settings['OTHER_LDFLAGS'] = ['$(inherited)', '-ObjC']
bc.build_settings['STRIP_SWIFT_SYMBOLS'] = 'NO'
bc.build_settings['ENABLE_BITCODE'] = 'NO'
end
end
# make sure the main app is NOT extension-only
app_target = installer.aggregate_targets.flat_map(&:user_project).flat_map(&:targets).find { |t| t.name == 'Mattermost' }
if app_target
app_target.build_configurations.each do |c|
c.build_settings.delete('APPLICATION_EXTENSION_API_ONLY')
end
end
end