Class: Fastlane::Actions::XcodeInstallAction
Constant Summary
Fastlane::Action::AVAILABLE_CATEGORIES, Fastlane::Action::RETURN_TYPES
Class Method Summary
collapse
action_name, author, deprecated_notes, lane_context, method_missing, other_action, sample_return_value, shell_out_should_use_bundle_exec?, step_text
Class Method Details
.authors ⇒ Object
86
87
88
|
# File 'fastlane/lib/fastlane/actions/xcode_install.rb', line 86
def self.authors
["Krausefx"]
end
|
.available_options ⇒ Object
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
# File 'fastlane/lib/fastlane/actions/xcode_install.rb', line 45
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: :version,
env_name: "FL_XCODE_VERSION",
description: "The version number of the version of Xcode to install",
verify_block: proc do |value|
end),
FastlaneCore::ConfigItem.new(key: :username,
short_option: "-u",
env_name: "XCODE_INSTALL_USER",
description: "Your Apple ID Username",
default_value: user,
default_value_dynamic: true),
FastlaneCore::ConfigItem.new(key: :team_id,
short_option: "-b",
env_name: "XCODE_INSTALL_TEAM_ID",
description: "The ID of your team if you're in multiple teams",
optional: true,
code_gen_sensitive: true,
default_value: CredentialsManager::AppfileConfig.try_fetch_value(:team_id),
default_value_dynamic: true)
]
end
|
.category ⇒ Object
100
101
102
|
# File 'fastlane/lib/fastlane/actions/xcode_install.rb', line 100
def self.category
:building
end
|
.description ⇒ Object
37
38
39
|
# File 'fastlane/lib/fastlane/actions/xcode_install.rb', line 37
def self.description
"Make sure a certain version of Xcode is installed"
end
|
.details ⇒ Object
41
42
43
|
# File 'fastlane/lib/fastlane/actions/xcode_install.rb', line 41
def self.details
"Makes sure a specific version of Xcode is installed. If that's not the case, it will automatically be downloaded by the [xcode_install](https://github.com/neonichu/xcode-install) gem. This will make sure to use the correct Xcode for later actions."
end
|
.example_code ⇒ Object
94
95
96
97
98
|
# File 'fastlane/lib/fastlane/actions/xcode_install.rb', line 94
def self.example_code
[
'xcode_install(version: "7.1")'
]
end
|
.is_supported?(platform) ⇒ Boolean
90
91
92
|
# File 'fastlane/lib/fastlane/actions/xcode_install.rb', line 90
def self.is_supported?(platform)
[:ios, :mac].include?(platform)
end
|
.output ⇒ Object
72
73
74
75
76
|
# File 'fastlane/lib/fastlane/actions/xcode_install.rb', line 72
def self.output
[
['XCODE_INSTALL_XCODE_PATH', 'The path to the newly installed Xcode']
]
end
|
.return_type ⇒ Object
82
83
84
|
# File 'fastlane/lib/fastlane/actions/xcode_install.rb', line 82
def self.return_type
:string
end
|
.return_value ⇒ Object
78
79
80
|
# File 'fastlane/lib/fastlane/actions/xcode_install.rb', line 78
def self.return_value
"The path to the newly installed Xcode version"
end
|
.run(params) ⇒ Object
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# File 'fastlane/lib/fastlane/actions/xcode_install.rb', line 8
def self.run(params)
Actions.verify_gem!('xcode-install')
ENV["XCODE_INSTALL_USER"] = params[:username]
ENV["XCODE_INSTALL_TEAM_ID"] = params[:team_id]
require 'xcode/install'
installer = XcodeInstall::Installer.new
if installer.installed?(params[:version])
UI.success("Xcode #{params[:version]} is already installed ✨")
else
installer.install_version(params[:version], true, true, true, true)
end
xcode = installer.installed_versions.find { |x| x.version == params[:version] }
UI.user_error!("Could not find Xcode with version '#{params[:version]}'") unless xcode
UI.message("Using Xcode #{params[:version]} on path '#{xcode.path}'")
xcode.approve_license
ENV["DEVELOPER_DIR"] = File.join(xcode.path, "/Contents/Developer")
Actions.lane_context[SharedValues::XCODE_INSTALL_XCODE_PATH] = xcode.path
return xcode.path
end
|