# This file contains the fastlane.tools configuration
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
#     https://docs.fastlane.tools/actions
#
# For a list of all available plugins, check out
#
#     https://docs.fastlane.tools/plugins/available-plugins
#

# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane

default_platform(:ios)

platform :ios do
  desc "Push a new beta build to TestFlight"
  lane :beta do
    UI.message "Current working directory: #{Dir.pwd}"
    UI.message "Checking API key file..."
    
    possible_paths = [
      "../AuthKey.p8",
      "./AuthKey.p8", 
      "../../AuthKey.p8",
      File.expand_path("../AuthKey.p8"),
      File.expand_path("./AuthKey.p8")
    ]
    
    auth_key_path = nil
    possible_paths.each do |path|
      if File.exist?(path)
        UI.message "Found AuthKey.p8 at: #{path}"
        auth_key_path = File.expand_path(path)
        break
      end
    end
    
    if auth_key_path.nil?
      UI.user_error!("API key file not found. Tried paths: #{possible_paths.join(', ')}")
    end
    
    UI.message "Using auth_key_path: #{auth_key_path}"
    
    # Configure Flutter for release mode
    UI.message "Configuring Flutter for release mode..."
    sh("cd .. && flutter build ios --config-only --release")
    
    match(type: "appstore", readonly: true)
    increment_build_number(xcodeproj: "Runner.xcodeproj")
    
    build_app(
      workspace: "Runner.xcworkspace", 
      scheme: "Runner", 
      export_method: "app-store", 
      codesigning_identity: "Apple Distribution",
    )
    

    
    app_store_connect_api_key(
      key_id: "325JS9JCZH", 
      issuer_id: "dfa27d1d-2bb8-4d4d-847e-0b32f9b880b3", 
      key_filepath: auth_key_path,
      duration: 1200,
      in_house: false
    )
    
    begin
      upload_to_testflight(
        skip_waiting_for_build_processing: true,
        skip_submission: true,
        distribute_external: false,
        notify_external_testers: false,
        changelog: "TestFlight build #{get_build_number(xcodeproj: 'Runner.xcodeproj')}",
        verbose: true
      )
    rescue => ex
      UI.error "Upload to TestFlight failed: #{ex.message}"
      UI.error "Full error: #{ex.backtrace.join("\n")}"
      raise ex
    end
  end
end
