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
							 |