en améliorant le code fourni par deinspanjer, j'ai essayé d'imiter une commande noop, un peu comme celle de chocolatey ( choco update --noop / choco obsolète ).
https://git.io/vgjiL
#!/bin/sh
fetch(){
echo "Removing brew cache"
rm -rf "$(brew --cache)"
echo "Running brew update"
brew update
}
lookup() {
for c in $(brew cask list); do
brew cask info $c
done
}
update(){
var=$( lookup | grep -B 3 'Not installed' | sed -e '/^http/d;/^Not/d;/:/!d' | cut -d ":" -f1)
if [ -n "$var" ]; then
echo "The following installed casks have updates avilable:"
echo "$var"
echo "Install updates now?"
select yn in "Yes" "No"; do
case $yn in
"Yes") echo "updating outdated casks"; break;;
"No") echo "brew cask upgrade cancelled" ;return;;
*) echo "Please choose 1 or 2";;
esac
done
for i in $var; do
echo "Uninstalling $c"; brew cask uninstall --force "$i"; echo "Re-installing $i"; brew cask install "$i"
done
else
echo "all casks are up to date"
fi
}
fetch
update
Comme on peut le voir, j'utilise une approche modulaire car mon cas d'utilisation diffère un peu. Je ne veux pas m'asseoir devant mon ordinateur et taper oui / non pour chaque application que j'ai installée. Bien qu'il n'y ait pas de moyen réel de mettre à niveau les fûts (juste la réinstallation de la version la plus récente), je fais d'abord une mise à jour de brassage pour avoir l'information qu'il existe réellement des mises à jour disponibles .
Ensuite, je parcours tous les fûts pour afficher leurs informations. Parce que j'ai fait une mise à jour de bière auparavant, on est maintenant fourni avec l'information que la dernière version de certains cask n'est pas installée.
Dans ma méthode de mise à jour, j'analyse la commande info pour cette ligne spécifique:
lookup | grep -B 3 'Not installed' | sed -e '/^http/d;/^Not/d;/:/!d' | cut -d ":" -f1
Ce qui se traduit par: "Donnez les 3 lignes ci-dessus d'informations fournies chaque fois que vous lisez la ligne" non installé ". Supprimez ensuite toute ligne contenant un lien, supprimez également une ligne contenant un ':'."
Compte tenu de la structure de la commande brew cask info, nous nous retrouvons avec une ligne (aucune information de version, aucune URL d'application), qui reflète le nom réel du cask avec lequel il a également été installé.
sortie d'informations sur le fût de bière
Dans ma version, cette information est maintenant imprimée afin que l'on puisse facilement voir quels fûts sont périmés et pourraient être mis à jour.
À ce stade, je fais un cas de commutation, car peut-être que le moment n'est pas suffisant pour mettre à jour les choses. Cela dépend de votre cas d'utilisation. Pour moi, je veux parfois juste voir les nouveautés (en attente d'une nouvelle version, un correctif) mais je n'ai pas le temps de mettre à jour les choses car pour le moment je ne veux pas fermer mon navigateur etc.
Ainsi, si l'on opte pour "oui", la liste des noms nettoyés des fûts est donnée à la fonction de mise à jour où pour chaque fût jugé obsolète, la réinstallation est émise.
Merci encore à deinspanjer, en essayant de résoudre ce problème par moi-même, j'ai toujours oublié de publier une mise à jour de brew à l'avance, il n'y avait donc pas de ligne "non installé" à analyser (le fondement de toute mon approche).
J'espère que cela a été utile.