require_relative '../../scripts/react_native_pods'

source 'https://cdn.cocoapods.org/'
platform :ios, '12.4'

# Temporary solution to suppress duplicated GUID error.
# Can be removed once we move to generate files outside pod install.
install! 'cocoapods', :deterministic_uuids => false

USE_FRAMEWORKS = ENV['USE_FRAMEWORKS'] == '1'
@prefix_path = "../.."

if USE_FRAMEWORKS
  puts "Installing pods with use_frameworks!"
  use_frameworks!
end

def pods(options = {})
  project 'RNTesterPods.xcodeproj'

  fabric_enabled = true
  hermes_enabled = ENV['USE_HERMES'] == '1'
  puts "Building RNTester with Fabric #{fabric_enabled ? "enabled" : "disabled"}.#{hermes_enabled ? " Using Hermes engine." : ""}"

  if ENV['USE_CODEGEN_DISCOVERY'] == '1'
    # Custom fabric component is only supported when using codegen discovery.
    pod 'MyNativeView', :path => "NativeComponentExample"
  end

  use_react_native!(
    path: @prefix_path,
    fabric_enabled: fabric_enabled,
    hermes_enabled: hermes_enabled,
    app_path: "#{Dir.pwd}",
    config_file_dir: "#{Dir.pwd}/node_modules",
  )
  pod 'ReactCommon/turbomodule/samples', :path => "#{@prefix_path}/ReactCommon"

  # Additional Pods which aren't included in the default Podfile
  pod 'React-RCTPushNotification', :path => "#{@prefix_path}/Libraries/PushNotificationIOS"
  pod 'Yoga', :path => "#{@prefix_path}/ReactCommon/yoga", :modular_headers => true
  # Additional Pods which are classed as unstable

  # RNTester native modules and components
  pod 'ScreenshotManager', :path => "NativeModuleExample"
end

target 'RNTester' do
  pods()
  if !USE_FRAMEWORKS
    use_flipper!
  end
end

target 'RNTesterUnitTests' do
  pods()
  pod 'React-RCTTest', :path => "./RCTTest"
end

target 'RNTesterIntegrationTests' do
  pods()
  pod 'React-RCTTest', :path => "./RCTTest"
end

post_install do |installer|
  react_native_post_install(installer, @prefix_path)
  __apply_Xcode_12_5_M1_post_install_workaround(installer)
end
