require_relative "../helpers/git"
require_relative "../helpers/config"
require "yaml"

module Fastlane
  module Actions
    class ResolveDependenciesAction < Action
      def self.run(params)
        build_flavor = params[:build_flavor]
        build_config = BuildConfig.for(build_flavor)
        UI.message("Resolving package dependencies...")
        Actions.sh([
          "set -o pipefail && xcodebuild",
          "-project #{build_config[:project]}",
          "-scheme #{build_config[:scheme]}",
          "-resolvePackageDependencies",
          "-derivedDataPath #{params[:derived_data_path]}",
          "-clonedSourcePackagesDirPath #{params[:source_packages_path]}",
          "| tee #{params[:logs_dir]}/deps.log",
          "| #{params[:formatter]}",
        ].join(" "), log: true)
        UI.success("✅ Successfully resolved package dependencies")
      end

      def self.description
        "Resolves package dependencies for the app"
      end

      def self.available_options
        [
          FastlaneCore::ConfigItem.new(
            key: :build_flavor,
            description: "The build flavor (#{BuildFlavor::ALL.join(', ')})",
            verify_block: proc do |value|
              UI.user_error!("Invalid flavor (must be one of #{BuildFlavor::ALL.join(', ')})") unless BuildFlavor::ALL.include?(value)
            end,
            default_value: BuildFlavor::PROD
          ),
          *BuildConfig.default_options
        ]
      end

      def self.authors
        ["Suno"]
      end

      def self.is_supported?(platform)
        platform == :ios
      end
    end
  end
end
