]> gitweb.pimeys.fr Git - scripts-20-100.git/blobdiff - import_caff_sigs.sh
[import_caff_signs] Gestion nettement plus propre des flags IMAP
[scripts-20-100.git] / import_caff_sigs.sh
index 20286683e7819fe85d512843b95b0f5bb298e893..61ea83f8a85155e0a344867904b7c47571622985 100755 (executable)
@@ -17,7 +17,11 @@ agentpid=$(echo $GPG_AGENT_INFO | cut -d: -f 2)
 where=`mktemp -d`
 cadre "Storing mails copied in ${where}"
 
-scp zamok:~/Mail/.Signatures/cur/*:2,a ${where}
+# On récupère la liste des fichiers qui n'ont pas de S (\Seen) dans leurs flags
+# (on vire le \x0 qui est à la fin, et on prie pour qu'il n'y ait jamais d'espaces dans les noms de mails)
+MAILS=$(ssh zamok find "~/Mail/.Signatures/cur/" -type f -regex "'[^:]+:2,[^S]*'" -print0 | sed "s/\x0/ /g;s/ $//")
+# On parsème de virgules et de backslash là où il faut et on les rappatrie
+echo $MAILS | sed 's/,/\\\\,/g;s/ /,/g' | xargs -I % scp zamok:{%} ${where}
 
 # On traite les mails un par un
 cadre "Decrypting and importing signatures"
@@ -30,7 +34,10 @@ done
 cadre "Cleaning up"
 echo -n "Mark distant e-mails as read ? [Y/n]"
 read -r ans
-[[ "${ans}" = "n" ]] || [[ "${ans}" = "N" ]] || ssh zamok rename 's/2,a$/2,Sa/' Mail/.Signatures/cur/*:2,a
+# On ajoute le flag S (\Seen) aux mails concernés là où il faut dans l'ordre alphabétique
+# en ne touchant pas au reste de leur nom
+# Attention au "''" et aux \$ parce que ssh needs moar escapingz
+[[ "${ans}" = "n" ]] || [[ "${ans}" = "N" ]] || ssh zamok rename -v "'s/^([^:]+):2,([A-R]*)([^S]*)$/\$1:2,\$2S\$3/'" $MAILS
 
 # On fait le ménage
 echo -n "Remove local tempfolder ? [Y/n]"