module Fastlane
  module Actions
    class FirebaseCredentialsAction < Action
      def self.run(params)
        # parse to validate JSON
        JSON.parse(params[:firebase_key])
        # return as is
        params[:firebase_key]
      rescue
        # decode from base64
        Base64.decode64(params[:firebase_key])
      end

      def self.description
        "Returns the Firebase Service Credentials JSON key data"
      end

      def self.return_value
        "Firebase Service Credentials as a JSON string"
      end

      def self.available_options
        [
          FastlaneCore::ConfigItem.new(key: :firebase_key,
            env_name: "FIREBASE_CREDENTIALS_FILE_CONTENT",
            description: "The Firebase service credentials file content",
            verify_block: proc do |value|
              if value.nil? || value.empty?
                UI.user_error!("FIREBASE_CREDENTIALS_FILE_CONTENT is not set")
              end
            end)
        ]
      end

      def self.authors
        ["Suno"]
      end

      def self.is_supported?(platform)
        true
      end
    end
  end
end
