class Fastlane::Actions::RetrieveDevicesAction
Public Class Methods
available_options()
click to toggle source
# File lib/fastlane/plugin/retrieve_devices/actions/retrieve_devices_action.rb, line 56 def self.available_options user = CredentialsManager::AppfileConfig.try_fetch_value(:apple_dev_portal_id) user ||= CredentialsManager::AppfileConfig.try_fetch_value(:apple_id) [ FastlaneCore::ConfigItem.new(key: :api_key_path, env_names: ["FL_RETRIEVE_DEVICES_API_KEY_PATH", "APP_STORE_CONNECT_API_KEY_PATH"], description: "Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)", optional: true, conflicting_options: [:api_key], verify_block: proc do |value| UI.user_error!("Couldn't find API key JSON file at path '#{value}'") unless File.exist?(value) end), FastlaneCore::ConfigItem.new(key: :api_key, env_names: ["FL_RETRIEVE_DEVICES_API_KEY", "APP_STORE_CONNECT_API_KEY"], description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)", type: Hash, default_value: Fastlane::Actions.lane_context[Fastlane::Actions::SharedValues::APP_STORE_CONNECT_API_KEY], default_value_dynamic: true, optional: true, sensitive: true, conflicting_options: [:api_key_path]), FastlaneCore::ConfigItem.new(key: :username, env_name: "DELIVER_USER", description: "Optional: Your Apple ID", optional: true, default_value: user, default_value_dynamic: true) ] end
category()
click to toggle source
# File lib/fastlane/plugin/retrieve_devices/actions/retrieve_devices_action.rb, line 104 def self.category :misc end
description()
click to toggle source
@!group Documentation
# File lib/fastlane/plugin/retrieve_devices/actions/retrieve_devices_action.rb, line 45 def self.description "This action will retrieve a list of each device registered with Apple" end
details()
click to toggle source
# File lib/fastlane/plugin/retrieve_devices/actions/retrieve_devices_action.rb, line 49 def self.details [ "This action will retrieve a list of names and UDIDs of each device registered with your Apple Certificate.", "This list is exactly the same as the list used to compare against what is/isn't registered in the `register_device/s` action." ].join("\n") end
is_supported?(platform)
click to toggle source
# File lib/fastlane/plugin/retrieve_devices/actions/retrieve_devices_action.rb, line 100 def self.is_supported?(platform) [:ios, :mac].include?(platform) end
output()
click to toggle source
# File lib/fastlane/plugin/retrieve_devices/actions/retrieve_devices_action.rb, line 87 def self.output [ ['DEVICES_FOR_APPLE_CERTIFICATE', 'A hash with the Name and UDID of each device registered with Apple'] ] end
return_value()
click to toggle source
# File lib/fastlane/plugin/retrieve_devices/actions/retrieve_devices_action.rb, line 93 def self.return_value end
run(params)
click to toggle source
# File lib/fastlane/plugin/retrieve_devices/actions/retrieve_devices_action.rb, line 11 def self.run(params) require 'spaceship' UI.message("The retrieve_devices plugin is working!") if (api_token = Spaceship::ConnectAPI::Token.from(hash: params[:api_key], filepath: params[:api_key_path])) UI.message("Creating authorization token for App Store Connect API") Spaceship::ConnectAPI.token = api_token elsif !Spaceship::ConnectAPI.token.nil? UI.message("Using existing authorization token for App Store Connect API") else UI.message("Login to App Store Connect (#{params[:username]})") UI.message("\033[0;35mConsider using https://onetomany.dev/ to share the mobile MFA from your apple account if you are sharing an apple account\033[0m") credentials = CredentialsManager::AccountManager.new(user: params[:username]) Spaceship::ConnectAPI.login(credentials.user, credentials.password, use_portal: true, use_tunes: false) UI.message("Login successful") end UI.message("Fetching list of currently registered devices...") existing_devices = Spaceship::ConnectAPI::Device.all.map { |ed| { name: ed.name, udid: ed.udid } } UI.success("Successfully retrieved the following devices") existing_devices.each do |ed| UI.message("UDID: #{ed[:udid]} | NAME: #{ed[:name]}") end Actions.lane_context[SharedValues::DEVICES_FOR_APPLE_CERTIFICATE] = existing_devices end