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")

node_require('react-native/scripts/react_native_pods.rb')
node_require('react-native-permissions/scripts/setup.rb')

platform :ios, '15.1' #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"
])

# Conditional Intune MAM support
intune_enabled = ENV['INTUNE_ENABLED'] == '1'

if intune_enabled
  puts "🔐 Intune MAM features enabled"
end

config = use_native_modules!

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 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi', :modular_headers => true
  pod 'React-jsc', :path => '../node_modules/react-native/ReactCommon/jsc', :modular_headers => true
  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/HybridSDK', '8.48.0'
  pod 'Gekidou', :path => './Gekidou'
end

target 'MattermostShare' do
  inherit! :search_paths
  pod 'Sentry/HybridSDK', '8.48.0'
  pod 'Gekidou', :path => './Gekidou'
  pod 'OpenGraph', '1.4.1'
end

post_install do |installer|
    # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202
    react_native_post_install(
      installer,
      config[:reactNativePath],
      :mac_catalyst_enabled => false
    )

    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

    # ensure stdlib is embedded for Gekidou to work correctly in extensions
    %w[NotificationService MattermostShare].each do |ext_name|
      target = installer.aggregate_targets.flat_map(&:user_project).flat_map(&:targets).find { |x| x.name == ext_name }
      next unless target
      target.build_configurations.each do |c|
        c.build_settings['APPLICATION_EXTENSION_API_ONLY'] = 'YES'
        c.build_settings['ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES'] = 'YES'
      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
