@@ -115,6 +115,33 @@ func collectIpaExportSelectableCodeSignGroups(archive xcarchive.IosArchive, inst
115115 return codeSignGroups , nil
116116}
117117
118+ func filterLatestProfiles (profiles []profileutil.ProvisioningProfileInfoModel ) []profileutil.ProvisioningProfileInfoModel {
119+ profilesByBundleIDAndName := map [string ][]profileutil.ProvisioningProfileInfoModel {}
120+ for _ , profile := range profiles {
121+ bundleID := profile .BundleID
122+ name := profile .Name
123+ bundleIDAndName := bundleID + name
124+ profs , ok := profilesByBundleIDAndName [bundleIDAndName ]
125+ if ! ok {
126+ profs = []profileutil.ProvisioningProfileInfoModel {}
127+ }
128+ profs = append (profs , profile )
129+ profilesByBundleIDAndName [bundleIDAndName ] = profs
130+ }
131+
132+ filteredProfiles := []profileutil.ProvisioningProfileInfoModel {}
133+ for _ , profiles := range profilesByBundleIDAndName {
134+ var latestProfile * profileutil.ProvisioningProfileInfoModel
135+ for _ , profile := range profiles {
136+ if latestProfile == nil || profile .ExpirationDate .After (latestProfile .ExpirationDate ) {
137+ latestProfile = & profile
138+ }
139+ }
140+ filteredProfiles = append (filteredProfiles , * latestProfile )
141+ }
142+ return filteredProfiles
143+ }
144+
118145func collectIpaExportCodeSignGroups (archive xcarchive.IosArchive , installedCertificates []certificateutil.CertificateInfoModel , installedProfiles []profileutil.ProvisioningProfileInfoModel ) ([]export.IosCodeSignGroup , error ) {
119146 iosCodeSignGroups := []export.IosCodeSignGroup {}
120147
@@ -230,6 +257,7 @@ func collectIpaExportCodeSignGroups(archive xcarchive.IosArchive, installedCerti
230257
231258 selectedBundleIDProfileMap := map [string ]profileutil.ProvisioningProfileInfoModel {}
232259 for bundleID , profiles := range bundleIDProfilesMap {
260+ profiles = filterLatestProfiles (profiles )
233261 profileOptions := []string {}
234262 for _ , profile := range profiles {
235263 profileOption := fmt .Sprintf ("%s (%s)" , profile .Name , profile .UUID )
0 commit comments