class Spaceship::Client::UserInterface
All User Interface related code lives in this class
Attributes
client[R]
Access the client this UserInterface
object is for
Public Class Methods
ci?()
click to toggle source
rubocop:disable Require/MissingRequireStatement
# File spaceship/lib/spaceship/portal/ui/select_team.rb, line 35 def self.ci? if Object.const_defined?("FastlaneCore") && FastlaneCore.const_defined?("Helper") return FastlaneCore::Helper.ci? end return false end
interactive?()
click to toggle source
# File spaceship/lib/spaceship/portal/ui/select_team.rb, line 42 def self.interactive? if Object.const_defined?("FastlaneCore") && FastlaneCore.const_defined?("UI") return FastlaneCore::UI.interactive? end return true end
new(c)
click to toggle source
Is called by the client to generate one instance of UserInterface
# File spaceship/lib/spaceship/ui.rb, line 15 def initialize(c) @client = c end
Public Instance Methods
select_team(team_id: nil, team_name: nil)
click to toggle source
rubocop:enable Require/MissingRequireStatement
# File spaceship/lib/spaceship/portal/ui/select_team.rb, line 50 def select_team(team_id: nil, team_name: nil) teams = client.teams if teams.count == 0 puts("No teams available on the Developer Portal") puts("You must accept an invitation to a team for it to be available") puts("To learn more about teams and how to use them visit https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/ManagingYourTeam/ManagingYourTeam.html") raise "Your account is in no teams" end team_id = (team_id || ENV['FASTLANE_TEAM_ID'] || '').strip team_name = (team_name || ENV['FASTLANE_TEAM_NAME'] || '').strip if team_id.length > 0 # User provided a value, let's see if it's valid teams.each_with_index do |team, i| # There are 2 different values - one from the login page one from the Dev Team Page return team['teamId'] if team['teamId'].strip == team_id return team['teamId'] if team['currentTeamMember']['teamMemberId'].to_s.strip == team_id end # Better message to inform user of misconfiguration as Apple now provides less friendly error as of 2019-02-12 # This is especially important as Developer Portal team IDs are deprecated and should be replaced with App Store Connect teamIDs # "Access Unavailable - You currently don't have access to this membership resource. Contact your team's Account Holder, Josh Holtz, or an Admin." # https://github.com/fastlane/fastlane/issues/14228 puts("Couldn't find team with ID '#{team_id}'. Make sure your are using the correct App Store Connect team ID and have the proper permissions for this team") end if team_name.length > 0 # User provided a value, let's see if it's valid teams.each_with_index do |team, i| return team['teamId'] if team['name'].strip == team_name end # Better message to inform user of misconfiguration as Apple now provides less friendly error as of 2019-02-12 # "Access Unavailable - You currently don't have access to this membership resource. Contact your team's Account Holder, Josh Holtz, or an Admin." # https://github.com/fastlane/fastlane/issues/14228 puts("Couldn't find team with Name '#{team_name}. Make sure you have the proper permissions for this team'") end return teams[0]['teamId'] if teams.count == 1 # user is just in one team unless self.class.interactive? puts("Multiple teams found on the Developer Portal, Your Terminal is running in non-interactive mode! Cannot continue from here.") puts("Please check that you set FASTLANE_TEAM_ID or FASTLANE_TEAM_NAME to the right value.") puts("Available Teams:") teams.each_with_index do |team, i| puts("#{i + 1}) #{team['teamId']} \"#{team['name']}\" (#{team['type']})") end raise "Multiple Teams found; unable to choose, terminal not interactive!" end # User Selection loop do # Multiple teams, user has to select puts("Multiple teams found on the " + "Developer Portal".yellow + ", please enter the number of the team you want to use: ") teams.each_with_index do |team, i| puts("#{i + 1}) #{team['teamId']} \"#{team['name']}\" (#{team['type']})") end selected = ($stdin.gets || '').strip.to_i - 1 team_to_use = teams[selected] if selected >= 0 return team_to_use['teamId'] if team_to_use end end