pilot/lib/pilot/tester_manager.rb in fastlane-2.28.9 vs pilot/lib/pilot/tester_manager.rb in fastlane-2.29.0.beta.20170421010107

- old
+ new

@@ -5,25 +5,42 @@ module Pilot class TesterManager < Manager def add_tester(options) start(options) - app = find_app(app_filter: config[:apple_id] || config[:app_identifier]) - UI.user_error!("You must provide either a Apple ID for the app (with the `:apple_id` option) or app identifier (with the `:app_identifier` option)") unless app + if config[:groups] + UI.important("Currently pilot doesn't support groups yet, we're working on restoring that functionality") + config[:groups] = nil + end - tester = find_or_create_tester(email: config[:email], first_name: config[:first_name], last_name: config[:last_name]) - begin - groups = Spaceship::TestFlight::Group.add_tester_to_groups!(tester: tester, app: app, groups: config[:groups]) - if tester.kind_of?(Spaceship::Tunes::Tester::Internal) - UI.success("Successfully added tester to app #{app.name}") + tester = Spaceship::Tunes::Tester::Internal.find(config[:email]) + tester ||= Spaceship::Tunes::Tester::External.find(config[:email]) + + if tester + UI.success("Existing tester #{tester.email}") else - group_names = groups.map(&:name).join(", ") - UI.success("Successfully added tester to app #{app.name} in group(s) #{group_names}") + tester = Spaceship::Tunes::Tester::External.create!(email: config[:email], + first_name: config[:first_name], + last_name: config[:last_name]) + UI.success("Successfully invited tester: #{tester.email}") end + + app_filter = (config[:apple_id] || config[:app_identifier]) + if app_filter + begin + app = Spaceship::Application.find(app_filter) + UI.user_error!("Couldn't find app with '#{app_filter}'") unless app + app.default_external_group.add_tester!(tester) + UI.success("Successfully added tester to app #{app_filter}") + rescue => ex + UI.error("Could not add #{tester.email} to app: #{ex}") + raise ex + end + end rescue => ex - UI.error("Could not add #{tester.email} to app: #{app.name}") + UI.error("Could not create tester #{config[:email]}") raise ex end end def find_tester(options) @@ -41,33 +58,29 @@ def remove_tester(options) start(options) tester = Spaceship::Tunes::Tester::External.find(config[:email]) tester ||= Spaceship::Tunes::Tester::Internal.find(config[:email]) - UI.user_error!("Tester not found: #{config[:email]}") if tester.nil? - app = find_app(app_filter: config[:apple_id] || config[:app_identifier]) - unless app - tester.delete! - UI.success("Successfully removed tester #{tester.email}") - end - - begin - # If no groups are passed to options, remove the tester from the app-level, - # otherwise remove the tester from the groups specified. - if config[:groups].nil? && tester.kind_of?(Spaceship::Tunes::Tester::External) - test_flight_tester = Spaceship::TestFlight::Tester.find(app_id: app.apple_id, email: tester.email) - test_flight_tester.remove_from_app!(app_id: app.apple_id) - UI.success("Successfully removed tester, #{test_flight_tester.email}, from app: #{app.name}") + if tester + app_filter = (config[:apple_id] || config[:app_identifier]) + if app_filter + begin + app = Spaceship::Application.find(app_filter) + UI.user_error!("Couldn't find app with '#{app_filter}'") unless app + app.default_external_group.remove_tester!(tester) + UI.success("Successfully removed tester #{tester.email} from app #{app_filter}") + rescue => ex + UI.error("Could not remove #{tester.email} from app: #{ex}") + raise ex + end else - groups = Spaceship::TestFlight::Group.remove_tester_from_groups!(tester: tester, app: app, groups: config[:groups]) - group_names = groups.map(&:name).join(", ") - UI.success("Successfully removed tester #{tester.email} from app #{app.name} in group(s) #{group_names}") + tester.delete! + UI.success("Successfully removed tester #{tester.email}") end - rescue => ex - UI.error("Could not remove #{tester.email} from app: #{ex}") - raise ex + else + UI.error("Tester not found: #{config[:email]}") end end def list_testers(options) start(options) @@ -78,37 +91,10 @@ else list_testers_global end end - private - - def find_app(app_filter: nil) - if app_filter - app = Spaceship::Application.find(app_filter) - UI.user_error!("Could not find an app by #{app_filter}") unless app - return app - end - nil - end - - def find_or_create_tester(email: nil, first_name: nil, last_name: nil) - tester = Spaceship::Tunes::Tester::Internal.find(config[:email]) - tester ||= Spaceship::Tunes::Tester::External.find(config[:email]) - - if tester - UI.success("Existing tester #{tester.email}") - else - tester = Spaceship::Tunes::Tester::External.create!(email: config[:email], - first_name: config[:first_name], - last_name: config[:last_name]) - UI.success("Successfully added tester: #{tester.email} to your account") - end - return tester - rescue => ex - UI.error("Could not create tester #{config[:email]}") - raise ex - end + # private def list_testers_by_app(app_filter) app = Spaceship::Application.find(app_filter) UI.user_error!("Couldn't find app with '#{app_filter}'") unless app