Sha256: f7d717d651372918b2b422d5021667a2dce2bfbcb2aca8a10a1ef1d807a809b9

Contents?: true

Size: 1.93 KB

Versions: 16

Compression:

Stored size: 1.93 KB

Contents

require 'spaceship/tunes/application'
require_relative 'tester_util'
require_relative 'module'
require_relative 'manager'

module Pilot
  class TesterExporter < Manager
    def export_testers(options)
      UI.user_error!("Export file path is required") unless options[:testers_file_path]

      start(options)
      require 'csv'

      app = find_app(apple_id: options[:apple_id], app_identifier: options[:app_identifier])
      if app
        testers = app.get_beta_testers(includes: "apps,betaTesterMetrics,betaGroups")
      else
        testers = Spaceship::ConnectAPI::TestFlight::BetaTester.all(includes: "apps,betaTesterMetrics,betaGroups")
      end

      file = config[:testers_file_path]

      CSV.open(file, "w") do |csv|
        csv << ['First', 'Last', 'Email', 'Groups', 'Installed Version', 'Install Date']

        testers.each do |tester|
          group_names = tester.beta_groups.map(&:name).join(";") || ""

          metric = (tester.beta_tester_metrics || []).first
          if metric.installed?
            install_version = "#{metric.installed_cf_bundle_short_version_string} (#{metric.installed_cf_bundle_version})"
            pretty_date = metric.installed_cf_bundle_version
          end

          csv << [tester.first_name, tester.last_name, tester.email, group_names, install_version, pretty_date]
        end

        UI.success("Successfully exported CSV to #{file}")
      end
    end

    def find_app(apple_id: nil, app_identifier: nil)
      if app_identifier
        app = Spaceship::ConnectAPI::TestFlight::App.find(app_identifier)
        UI.user_error!("Could not find an app by #{app_identifier}") unless app
        return app
      end

      if apple_id
        app = Spaceship::ConnectAPI::TestFlight::App.get(app_id: apple_id)
        UI.user_error!("Could not find an app by #{apple_id}") unless app
        return app
      end

      UI.user_error!("You must include an `app_identifier` to `list_testers`")
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
fastlane-2.126.0.beta.20190623200100 pilot/lib/pilot/tester_exporter.rb
fastlane-2.126.0.beta.20190622200100 pilot/lib/pilot/tester_exporter.rb
fastlane-2.126.0.beta.20190621200104 pilot/lib/pilot/tester_exporter.rb
fastlane-2.126.0.beta.20190620200055 pilot/lib/pilot/tester_exporter.rb
fastlane-2.126.0.beta.20190619200046 pilot/lib/pilot/tester_exporter.rb
fastlane-2.126.0.beta.20190618200051 pilot/lib/pilot/tester_exporter.rb
fastlane-2.126.0.beta.20190617200114 pilot/lib/pilot/tester_exporter.rb
fastlane-2.126.0.beta.20190616200045 pilot/lib/pilot/tester_exporter.rb
fastlane-2.126.0.beta.20190615200013 pilot/lib/pilot/tester_exporter.rb
fastlane-2.126.0.beta.20190614200105 pilot/lib/pilot/tester_exporter.rb
fastlane-2.126.0.beta.20190613200017 pilot/lib/pilot/tester_exporter.rb
fastlane-2.126.0.beta.20190611200027 pilot/lib/pilot/tester_exporter.rb
fastlane-2.126.0.beta.20190610200032 pilot/lib/pilot/tester_exporter.rb
fastlane-2.126.0.beta.20190609200013 pilot/lib/pilot/tester_exporter.rb
fastlane-2.126.0.beta.20190608200023 pilot/lib/pilot/tester_exporter.rb
fastlane-2.126.0.beta.20190607200028 pilot/lib/pilot/tester_exporter.rb