Class: Fastlane::Actions::AutomaticCodeSigningAction
- Inherits:
-
Fastlane::Action
- Object
- Fastlane::Action
- Fastlane::Actions::AutomaticCodeSigningAction
- Defined in:
- fastlane/lib/fastlane/actions/automatic_code_signing.rb
Constant Summary
Constants inherited from Fastlane::Action
Fastlane::Action::AVAILABLE_CATEGORIES, Fastlane::Action::RETURN_TYPES
Class Method Summary collapse
- .alias_used(action_alias, params) ⇒ Object
- .aliases ⇒ Object
- .authors ⇒ Object
- .available_options ⇒ Object
- .category ⇒ Object
- .deprecated_notes ⇒ Object
- .description ⇒ Object
- .details ⇒ Object
- .example_code ⇒ Object
- .is_supported?(platform) ⇒ Boolean
- .output ⇒ Object
- .return_value ⇒ Object
- .run(params) ⇒ Object
Methods inherited from Fastlane::Action
action_name, author, lane_context, method_missing, other_action, return_type, sample_return_value, shell_out_should_use_bundle_exec?, step_text
Class Method Details
.alias_used(action_alias, params) ⇒ Object
99 100 101 |
# File 'fastlane/lib/fastlane/actions/automatic_code_signing.rb', line 99 def self.alias_used(action_alias, params) params[:use_automatic_signing] = true if action_alias == "enable_automatic_code_signing" end |
.aliases ⇒ Object
103 104 105 |
# File 'fastlane/lib/fastlane/actions/automatic_code_signing.rb', line 103 def self.aliases ["enable_automatic_code_signing", "disable_automatic_code_signing"] end |
.authors ⇒ Object
217 218 219 |
# File 'fastlane/lib/fastlane/actions/automatic_code_signing.rb', line 217 def self. ["mathiasAichinger", "hjanuschka", "p4checo", "portellaa", "aeons"] end |
.available_options ⇒ Object
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 |
# File 'fastlane/lib/fastlane/actions/automatic_code_signing.rb', line 115 def self. [ FastlaneCore::ConfigItem.new(key: :path, env_name: "FL_PROJECT_SIGNING_PROJECT_PATH", description: "Path to your Xcode project", code_gen_sensitive: true, default_value: Dir['*.xcodeproj'].first, default_value_dynamic: true, verify_block: proc do |value| UI.user_error!("Path is invalid") unless File.exist?(File.(value)) end), FastlaneCore::ConfigItem.new(key: :use_automatic_signing, env_name: "FL_PROJECT_USE_AUTOMATIC_SIGNING", description: "Defines if project should use automatic signing", is_string: false, default_value: false), FastlaneCore::ConfigItem.new(key: :team_id, env_name: "FASTLANE_TEAM_ID", optional: true, description: "Team ID, is used when upgrading project", is_string: true), FastlaneCore::ConfigItem.new(key: :targets, env_name: "FL_PROJECT_SIGNING_TARGETS", optional: true, type: Array, description: "Specify targets you want to toggle the signing mech. (default to all targets)", is_string: false), FastlaneCore::ConfigItem.new(key: :code_sign_identity, env_name: "FL_CODE_SIGN_IDENTITY", description: "Code signing identity type (iPhone Developer, iPhone Distribution)", optional: true, is_string: true), FastlaneCore::ConfigItem.new(key: :profile_name, env_name: "FL_PROVISIONING_PROFILE_SPECIFIER", description: "Provisioning profile name to use for code signing", optional: true, is_string: true), FastlaneCore::ConfigItem.new(key: :profile_uuid, env_name: "FL_PROVISIONING_PROFILE", description: "Provisioning profile UUID to use for code signing", optional: true, is_string: true), FastlaneCore::ConfigItem.new(key: :bundle_identifier, env_name: "FL_APP_IDENTIFIER", description: "Application Product Bundle Identifier", optional: true, is_string: true) ] end |
.category ⇒ Object
205 206 207 |
# File 'fastlane/lib/fastlane/actions/automatic_code_signing.rb', line 205 def self.category :deprecated end |
.deprecated_notes ⇒ Object
209 210 211 |
# File 'fastlane/lib/fastlane/actions/automatic_code_signing.rb', line 209 def self.deprecated_notes "Please use `update_code_signing_settings` action instead." end |
.description ⇒ Object
107 108 109 |
# File 'fastlane/lib/fastlane/actions/automatic_code_signing.rb', line 107 def self.description "Configures Xcode's Codesigning options" end |
.details ⇒ Object
111 112 113 |
# File 'fastlane/lib/fastlane/actions/automatic_code_signing.rb', line 111 def self.details "Configures Xcode's Codesigning options of all targets in the project" end |
.example_code ⇒ Object
168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 |
# File 'fastlane/lib/fastlane/actions/automatic_code_signing.rb', line 168 def self.example_code [ '# enable automatic code signing enable_automatic_code_signing', 'enable_automatic_code_signing( path: "demo-project/demo/demo.xcodeproj" )', '# disable automatic code signing disable_automatic_code_signing', 'disable_automatic_code_signing( path: "demo-project/demo/demo.xcodeproj" )', '# also set team id disable_automatic_code_signing( path: "demo-project/demo/demo.xcodeproj", team_id: "XXXX" )', '# Only specific targets disable_automatic_code_signing( path: "demo-project/demo/demo.xcodeproj", use_automatic_signing: false, targets: ["demo"] ) ', ' # via generic action automatic_code_signing( path: "demo-project/demo/demo.xcodeproj", use_automatic_signing: false )', 'automatic_code_signing( path: "demo-project/demo/demo.xcodeproj", use_automatic_signing: true )' ] end |
.is_supported?(platform) ⇒ Boolean
221 222 223 |
# File 'fastlane/lib/fastlane/actions/automatic_code_signing.rb', line 221 def self.is_supported?(platform) [:ios, :mac].include?(platform) end |
.output ⇒ Object
165 166 |
# File 'fastlane/lib/fastlane/actions/automatic_code_signing.rb', line 165 def self.output end |
.return_value ⇒ Object
213 214 215 |
# File 'fastlane/lib/fastlane/actions/automatic_code_signing.rb', line 213 def self.return_value "The current status (boolean) of codesigning after modification" end |
.run(params) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'fastlane/lib/fastlane/actions/automatic_code_signing.rb', line 5 def self.run(params) UI.deprecated("The `automatic_code_signing` action has been deprecated,") UI.deprecated("Please use `update_code_signing_settings` action instead.") FastlaneCore::PrintTable.print_values(config: params, title: "Summary for Automatic Codesigning") path = params[:path] path = File.join(File.(path), "project.pbxproj") project = Xcodeproj::Project.open(params[:path]) UI.user_error!("Could not find path to project config '#{path}'. Pass the path to your project (not workspace)!") unless File.exist?(path) UI.("Updating the Automatic Codesigning flag to #{params[:use_automatic_signing] ? 'enabled' : 'disabled'} for the given project '#{path}'") unless project.root_object.attributes["TargetAttributes"] UI.user_error!("Seems to be a very old project file format - please open your project file in a more recent version of Xcode") return false end target_dictionary = project.targets.map { |f| { name: f.name, uuid: f.uuid, build_configuration_list: f.build_configuration_list } } target_attributes = project.root_object.attributes["TargetAttributes"] changed_targets = [] # make sure TargetAttributes exist for all targets target_dictionary.each do |props| unless target_attributes.key?(props[:uuid]) target_attributes[props[:uuid]] = {} end end target_attributes.each do |target, sett| found_target = target_dictionary.detect { |h| h[:uuid] == target } if params[:targets] # get target name unless params[:targets].include?(found_target[:name]) UI.important("Skipping #{found_target[:name]} not selected (#{params[:targets].join(',')})") next end end style_value = params[:use_automatic_signing] ? 'Automatic' : 'Manual' build_configuration_list = found_target[:build_configuration_list] build_configuration_list.set_setting("CODE_SIGN_STYLE", style_value) sett["ProvisioningStyle"] = style_value if params[:team_id] sett["DevelopmentTeam"] = params[:team_id] build_configuration_list.set_setting("DEVELOPMENT_TEAM", params[:team_id]) UI.important("Set Team id to: #{params[:team_id]} for target: #{found_target[:name]}") end if params[:code_sign_identity] build_configuration_list.set_setting("CODE_SIGN_IDENTITY", params[:code_sign_identity]) # We also need to update the value if it was overridden for a specific SDK build_configuration_list.build_configurations.each do |build_configuration| codesign_build_settings_keys = build_configuration.build_settings.keys.select { |key| key.to_s.match(/CODE_SIGN_IDENTITY.*/) } codesign_build_settings_keys.each do |setting| build_configuration_list.set_setting(setting, params[:code_sign_identity]) end end UI.important("Set Code Sign identity to: #{params[:code_sign_identity]} for target: #{found_target[:name]}") end if params[:profile_name] build_configuration_list.set_setting("PROVISIONING_PROFILE_SPECIFIER", params[:profile_name]) UI.important("Set Provisioning Profile name to: #{params[:profile_name]} for target: #{found_target[:name]}") end # Since Xcode 8, this is no longer needed, you simply use PROVISIONING_PROFILE_SPECIFIER if params[:profile_uuid] build_configuration_list.set_setting("PROVISIONING_PROFILE", params[:profile_uuid]) UI.important("Set Provisioning Profile UUID to: #{params[:profile_uuid]} for target: #{found_target[:name]}") end if params[:bundle_identifier] build_configuration_list.set_setting("PRODUCT_BUNDLE_IDENTIFIER", params[:bundle_identifier]) UI.important("Set Bundle identifier to: #{params[:bundle_identifier]} for target: #{found_target[:name]}") end changed_targets << found_target[:name] end project.save if changed_targets.empty? UI.important("None of the specified targets has been modified") UI.important("available targets:") target_dictionary.each do |target| UI.important("\t* #{target[:name]}") end else UI.success("Successfully updated project settings to use Code Sign Style = '#{params[:use_automatic_signing] ? 'Automatic' : 'Manual'}'") UI.success("Modified Targets:") changed_targets.each do |target| UI.success("\t * #{target}") end end params[:use_automatic_signing] end |