deinspanjer sağlanan kodu iyileştirerek , ben chocolatey ( choco update --noop / choco modası geçmiş ) gibi bir noop komut taklit etmeye çalıştı .
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
Gördüğünüz gibi, kullanım durumum biraz farklı olduğundan modüler bir yaklaşım kullanıyorum. Bilgisayarımın önünde oturmak ve yüklediğim her uygulama için evet / hayır yazmak istemiyorum. Fıçıları yükseltmenin gerçek bir yolu olmasa da (sadece en yeni sürümü yeniden yükleyin), ilk önce mevcut güncellemeler olduğu bilgisine sahip olmak için güncelleme yapıyorum .
Sonra, bilgilerini görüntülemek için tüm fıçılar arasında dolaşıyorum. Daha önce güncelleme yaptığım için, şimdi bir fıçının en son sürümünün yüklü olmadığı bilgisi sağlanıyor.
Güncelleme yöntemimin içinde, aslında bu belirli satır için bilgi komutunu ayrıştırıyorum:
lookup | grep -B 3 'Not installed' | sed -e '/^http/d;/^Not/d;/:/!d' | cut -d ":" -f1
Bunun anlamı şudur: "Yüklenmemiş satırı" her okuduğunuzda sağlanan 3 satırlık bilgi verin. Ardından içinde bağlantı bulunan satırları silin, içinde ':' bulunan bir satırı da silin. "
Demlemek fıçı bilgisi komutunun yapısı göz önüne alındığında, fıçının aynı zamanda yüklendiği gerçek adını yansıtan bir satır (sürüm bilgisi yok, uygulama URL'si yok) ile sonuçlanır.
demlemek fıçı bilgi çıkışı
Benim sürümümde, bu bilgi artık basıldı, böylece hangi fıçıların güncel olmadığını ve güncellenebileceğini kolayca görebilirsiniz.
Bu noktada bir geçiş durumu yapıyorum, çünkü belki de şu anda bir şeyleri güncellemek için yeterli zaman yok. Kullanım durumunuza bağlıdır. Benim için bazen sadece yeni olanı görmek istiyorum (yeni bir sürüm, bir hata düzeltmesi bekleniyor) ama aslında şeyleri güncellemek için zamanım yok çünkü şu anda tarayıcımı kapatmak istemiyorum.
Eğer biri "evet" i seçerse, temizlenmiş fıçı isimlerinin listesi güncelleme işlevine verilir, burada güncel olmadığı belirlenen her fıçı için yeniden yükleme yapılır.
Deinspanjer'e tekrar teşekkürler, bu sorunu kendim için çözmeye çalışırken, her zaman önceden demlemek güncellemesini vermeyi unuttum, bu yüzden orada ayrıştırmak için "yüklü olmayan" bir hat yoktu (tüm yaklaşımımın temeli).
Umarım bu yardımcı olmuştur.