Vous pouvez écrire un script shell qui parcourt les fichiers, récupère la date du fichier mobileprovision et la compare à la date actuelle.
#!/bin/sh
for provisioning_profile in ~/Library/MobileDevice/Provisioning\ Profiles/*.mobileprovision;
do
printf "Checking ${provisioning_profile}... "
# pull the expiration date from the plist
expirationDate=`/usr/libexec/PlistBuddy -c 'Print :ExpirationDate' /dev/stdin <<< $(security cms -D -i "${provisioning_profile}")`
# convert it to a format we can use to see if it is in the past (YYYYMMDD)
read dow month day time timezone year <<< "${expirationDate}"
ymd_expiration=`date -jf"%a %e %b %Y" "${dow} ${day} ${month} ${year}" +%Y%m%d`
# compare it to today's date
ymd_today=`date +%Y%m%d`
if [ ${ymd_today} -ge ${ymd_expiration} ];
then
echo "EXPIRED"
# rm -f "${provisioning_profile}"
else
echo "not expired"
fi
done
Vous pouvez utiliser la commande de sécurité et le compagnon plist pour extraire le fichier ExpirationDate du fichier. Ensuite, pour simplifier, je convertis simplement cette date en un format facilement comparable (AAAAMMJJ) et je le compare à la date du jour dans le même format. J'imprime le statut de chacun. Remarque: je ne fais pas la suppression, car je veux que vous vérifiiez les résultats du script avant de décommenter la ligne de suppression. Je l'ai couru sur le mien, et ai jeté dans un vieux profil. Il a correctement identifié le profil expiré dans mes tests.
B R I L L I A N T! ! ! Merci – SpaceDog
juste une petite touche à votre script, la ligne 'rm -f $ {provisioning_profile}' devrait être en fait 'rm -f" $ {provisioning_profile} "' parce que le fichier de profil de provisionnement contient des espaces et sans guillemets le fichier ne sera pas être supprimé. – SpaceDog
Oui, la plupart d'entre eux, lorsqu'ils sont installés via Xcode, ne contiennent pas d'espaces, mais je les ai mis à jour au cas où les gens les copieraient manuellement ou utiliseraient quelque chose comme fastlane. Merci d'avoir suivi! – wottle