64 lines
2.7 KiB
Ruby
64 lines
2.7 KiB
Ruby
|
# Let's use ReactNativePodsUtils utility class to make it more maintainable
|
||
|
require Pod::Executable.execute_command('node', ['-p',
|
||
|
'require.resolve(
|
||
|
"react-native/scripts/cocoapods/utils.rb",
|
||
|
{paths: [process.argv[1]]},
|
||
|
)', __dir__]).strip
|
||
|
|
||
|
#
|
||
|
# In order to compile the project with disabled frame processors mode
|
||
|
# the codebase of example swift frame processor plugin needs to be put
|
||
|
# behind the swift compiler flag
|
||
|
#
|
||
|
# Let's set the flag based on the same logic like in library's podspec file
|
||
|
#
|
||
|
def set_frame_processor_swift_flag_in_example_project(installer)
|
||
|
has_worklets = does_example_have_worklets_enabled(installer)
|
||
|
set_swift_compiler_flag_in_project(installer, has_worklets)
|
||
|
end
|
||
|
|
||
|
def does_example_have_worklets_enabled(installer)
|
||
|
forceDisableFrameProcessors = false
|
||
|
if defined?($VCDisableFrameProcessors)
|
||
|
forceDisableFrameProcessors = true
|
||
|
end
|
||
|
has_worklets = ReactNativePodsUtils.has_pod(installer, "react-native-worklets-core") && !forceDisableFrameProcessors
|
||
|
end
|
||
|
|
||
|
#
|
||
|
# It's similar to:
|
||
|
# - [`ReactNativePodsUtils.add_compiler_flag_to_project`](https://github.com/facebook/react-native/blob/ad5213718377017ec6d2a057541f6d4c57e0507d/packages/react-native/scripts/cocoapods/utils.rb#L384)
|
||
|
# - [`ReactNativePodsUtils.remove_compiler_flag_from_project`](https://github.com/facebook/react-native/blob/ad5213718377017ec6d2a057541f6d4c57e0507d/packages/react-native/scripts/cocoapods/utils.rb#L395)
|
||
|
# but uses utils for setting "OTHER_SWIFT_FLAGS" compiler flag, which is unsupported by ReactNativePodsUtils
|
||
|
#
|
||
|
def set_swift_compiler_flag_in_project(installer, has_worklets)
|
||
|
projects = ReactNativePodsUtils.extract_projects(installer)
|
||
|
projects.each do |project|
|
||
|
project.build_configurations.each do |config|
|
||
|
flag = "-DVISION_CAMERA_ENABLE_FRAME_PROCESSORS"
|
||
|
if has_worklets
|
||
|
set_swift_flag_in_config(config, flag)
|
||
|
else
|
||
|
remove_swift_flag_in_config(config, flag)
|
||
|
end
|
||
|
end
|
||
|
project.save()
|
||
|
end
|
||
|
end
|
||
|
|
||
|
#
|
||
|
# It's similar to [`ReactNativePodsUtils.set_flag_in_config`](https://github.com/facebook/react-native/blob/ad5213718377017ec6d2a057541f6d4c57e0507d/packages/react-native/scripts/cocoapods/utils.rb#L414),
|
||
|
# but supports "OTHER_SWIFT_FLAGS" compiler flag
|
||
|
#
|
||
|
def set_swift_flag_in_config(config, flag)
|
||
|
ReactNativePodsUtils.add_flag_for_key(config, flag, "OTHER_SWIFT_FLAGS")
|
||
|
end
|
||
|
|
||
|
#
|
||
|
# It's similar to [`ReactNativePodsUtils.remove_flag_in_config`](https://github.com/facebook/react-native/blob/ad5213718377017ec6d2a057541f6d4c57e0507d/packages/react-native/scripts/cocoapods/utils.rb#L421),
|
||
|
# but supports "OTHER_SWIFT_FLAGS" compiler flag
|
||
|
#
|
||
|
def remove_swift_flag_in_config(config, flag)
|
||
|
ReactNativePodsUtils.remove_flag_for_key(config, flag, "OTHER_SWIFT_FLAGS")
|
||
|
end
|