lib/deploygate/builds/ios/export.rb in deploygate-0.0.4 vs lib/deploygate/builds/ios/export.rb in deploygate-0.0.5
- old
+ new
@@ -48,28 +48,65 @@
profile = profile_to_plist(profile_path)
certs = profile['DeveloperCertificates'].map do |cert|
certificate_str = cert.read
certificate = OpenSSL::X509::Certificate.new certificate_str
id = OpenSSL::Digest::SHA1.new(certificate.to_der).to_s.upcase!
- installed_identies.include?(id)
+ installed_distribution_certificate_ids.include?(id)
end
certs.include?(true)
end
# @return [Array]
- def installed_identies
- available = `security find-identity -v -p codesigning`
+ def installed_distribution_certificate_ids
+ certificates = installed_certificates()
ids = []
- available.split("\n").each do |current|
- next if current.include? "REVOKED"
+ certificates.each do |current|
+ next unless current.match(/iPhone Distribution:/)
begin
(ids << current.match(/.*\) (.*) \".*/)[1])
rescue
# the last line does not match
end
end
ids
+ end
+
+ # @return [Array]
+ def installed_distribution_conflicting_certificates
+ certificates = installed_certificates()
+ names = []
+ certificates.each do |current|
+ begin
+ names << current.match(/(iPhone Distribution:.*)/)[1]
+ rescue
+ end
+ end
+
+ conflicting_names = names.select{|e| names.index(e) != names.rindex(e)}.uniq
+ conflicting_certificates = []
+ certificates.each do |current|
+ begin
+ name = current.match(/(iPhone Distribution:.*)/)[1]
+ next unless conflicting_names.include?(name)
+ conflicting_certificates << current
+ rescue
+ end
+ end
+
+ conflicting_certificates
+ end
+
+ # @return [Array]
+ def installed_certificates
+ available = `security find-identity -v -p codesigning`
+ certificates = []
+ available.split("\n").each do |current|
+ next if current.include? "REVOKED"
+ certificates << current
+ end
+
+ certificates
end
# @param [Array] profile_paths
# @return [String]
def select_profile(profile_paths)