memperbaiki kode yang disediakan dari deinspanjer, saya mencoba untuk meniru perintah noop, seperti yang dari cokelat ( pembaruan choco --noop / choco ketinggalan zaman ).
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
Seperti yang dapat dilihat, saya menggunakan pendekatan modular karena use case saya sedikit berbeda. Saya tidak ingin duduk di depan komputer saya dan mengetik ya / tidak untuk setiap aplikasi yang saya instal. Meskipun tidak ada cara nyata untuk meningkatkan tong (hanya menginstal ulang versi terbaru), saya pertama kali membuat pembaruan untuk memiliki informasi bahwa sebenarnya ada pembaruan yang tersedia .
Selanjutnya, saya menggilir semua tong untuk menampilkan informasi mereka. Karena saya pernah membuat pembaruan sebelumnya, sekarang ada yang memberikan informasi bahwa beberapa versi terakhir tong belum diinstal.
Di dalam metode pembaruan saya, saya benar-benar mengurai perintah info untuk baris tertentu:
lookup | grep -B 3 'Not installed' | sed -e '/^http/d;/^Not/d;/:/!d' | cut -d ":" -f1
Yang diterjemahkan menjadi: "Berikan 3 baris di atas informasi yang diberikan setiap kali Anda membaca baris" tidak diinstal ". Kemudian hapus setiap baris yang memiliki tautan di dalamnya, juga hapus baris yang memiliki ':' di dalamnya."
Mengingat struktur perintah info pembuatan bir, kami berakhir dengan satu baris (tidak ada info versi, tidak ada URL aplikasi), yang mencerminkan nama sebenarnya tong itu yang juga diinstal.
hasil keluaran pembuatan tong
Dalam versi saya, info ini sekarang dicetak sehingga orang dapat dengan mudah melihat tong mana yang kedaluwarsa dan dapat diperbarui.
Pada titik ini saya melakukan switch case, karena mungkin saat ini tidak cukup waktu untuk memperbarui. Itu tergantung pada kasus penggunaan Anda. Bagi saya, saya kadang-kadang hanya ingin melihat apa yang baru (menunggu versi baru, perbaikan bug) tetapi sebenarnya tidak punya waktu untuk memperbarui hal-hal karena saat ini saya tidak ingin menutup browser saya dll.
Jadi, jika seseorang memilih "ya", daftar nama tong yang dibersihkan diberikan ke fungsi pembaruan di mana untuk setiap tong yang telah ditentukan kedaluwarsa menginstal ulang dikeluarkan.
Terima kasih sekali lagi kepada deinspanjer, ketika mencoba menyelesaikan masalah ini untuk diri saya sendiri, saya selalu lupa untuk mengeluarkan pembaruan pembuatan bir terlebih dahulu sehingga tidak ada "tidak dipasang" baris di sana untuk benar-benar mengurai (dasar dari seluruh pendekatan saya).
Saya harap ini membantu.