Class: Match::Generator
- Inherits:
-
Object
- Object
- Match::Generator
- Defined in:
- match/lib/match/generator.rb
Overview
Generate missing resources
Class Method Summary collapse
- .generate_certificate(params, cert_type, working_directory, specific_cert_type: nil) ⇒ Object
-
.generate_provisioning_profile(params: nil, prov_type: nil, certificate_id: nil, app_identifier: nil, force: true, cache: nil, working_directory: nil) ⇒ String
The UUID of the newly generated profile.
-
.profile_type_name(type) ⇒ Object
The name of the provisioning profile type.
Class Method Details
.generate_certificate(params, cert_type, working_directory, specific_cert_type: nil) ⇒ Object
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 |
# File 'match/lib/match/generator.rb', line 7 def self.generate_certificate(params, cert_type, working_directory, specific_cert_type: nil) require 'cert/runner' require 'cert/options' output_path = File.join(working_directory, "certs", cert_type.to_s) # Mapping match option to cert option for "Developer ID Application" if cert_type.to_sym == :developer_id_application specific_cert_type = cert_type.to_s end platform = params[:platform] if platform.to_s == :catalyst.to_s platform = :macos.to_s end arguments = FastlaneCore::Configuration.create(Cert::Options., { platform: platform, development: params[:type] == "development", type: specific_cert_type, generate_apple_certs: params[:generate_apple_certs], output_path: output_path, force: true, # we don't need a certificate without its private key, we only care about a new certificate api_key_path: params[:api_key_path], api_key: params[:api_key], username: params[:username], team_id: params[:team_id], team_name: params[:team_name], keychain_path: FastlaneCore::Helper.keychain_path(params[:keychain_name]), keychain_password: params[:keychain_password], skip_set_partition_list: params[:skip_set_partition_list] }) Cert.config = arguments begin cert_path = Cert::Runner.new.launch rescue => ex if ex.to_s.include?("You already have a current") UI.user_error!("Could not create a new certificate as you reached the maximum number of certificates for this account. You can use the `fastlane match nuke` command to revoke your existing certificates. More information https://docs.fastlane.tools/actions/match/") else raise ex end end # We don't care about the signing request Dir[File.join(working_directory, "**", "*.certSigningRequest")].each { |path| File.delete(path) } # we need to return the path # Inside this directory, there is the `.p12` file and the `.cer` file with the same name, but different extension return cert_path end |
.generate_provisioning_profile(params: nil, prov_type: nil, certificate_id: nil, app_identifier: nil, force: true, cache: nil, working_directory: nil) ⇒ String
Returns The UUID of the newly generated profile.
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 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
# File 'match/lib/match/generator.rb', line 61 def self.generate_provisioning_profile(params: nil, prov_type: nil, certificate_id: nil, app_identifier: nil, force: true, cache: nil, working_directory: nil) require 'sigh/manager' require 'sigh/options' prov_type = Match.profile_type_sym(params[:type]) names = ["match", profile_type_name(prov_type), app_identifier] if params[:platform].to_s != :ios.to_s # For ios we do not include the platform for backwards compatibility names << params[:platform] end if params[:profile_name].to_s.empty? profile_name = names.join(" ") else profile_name = params[:profile_name] end values = { app_identifier: app_identifier, output_path: File.join(working_directory, "profiles", prov_type.to_s), username: params[:username], force: force, cert_id: certificate_id, provisioning_name: profile_name, ignore_profiles_with_different_name: true, api_key_path: params[:api_key_path], api_key: params[:api_key], team_id: params[:team_id], team_name: params[:team_name], template_name: params[:template_name], fail_on_name_taken: params[:fail_on_name_taken], include_all_certificates: params[:include_all_certificates], include_mac_in_profiles: params[:include_mac_in_profiles], } values[:platform] = params[:platform] # These options are all conflicting so can only set one if params[:type] == "developer_id" values[:developer_id] = true elsif prov_type == :adhoc values[:adhoc] = true elsif prov_type == :development values[:development] = true end if cache values[:cached_certificates] = cache.certificates values[:cached_devices] = cache.devices values[:cached_bundle_ids] = cache.bundle_ids values[:cached_profiles] = cache.profiles end arguments = FastlaneCore::Configuration.create(Sigh::Options., values) Sigh.config = arguments path = Sigh::Manager.start return path end |
.profile_type_name(type) ⇒ Object
Returns the name of the provisioning profile type.
123 124 125 126 127 128 129 130 |
# File 'match/lib/match/generator.rb', line 123 def self.profile_type_name(type) return "Direct" if type == :developer_id return "Development" if type == :development return "AdHoc" if type == :adhoc return "AppStore" if type == :appstore return "InHouse" if type == :enterprise return "Unknown" end |