cải thiện mã được cung cấp từ deinspanjer, tôi đã cố gắng bắt chước một lệnh noop, giống như mã từ chocolatey ( cập nhật choco --noop / choco đã lỗi thời ).
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
Như mọi người có thể thấy, tôi đang sử dụng một phương pháp mô-đun vì trường hợp sử dụng của tôi khác đi một chút. Tôi không muốn ngồi trước máy tính của mình và gõ có / không cho mọi ứng dụng tôi đã cài đặt. Mặc dù không có cách nâng cấp thực sự nào (chỉ cài đặt lại phiên bản mới nhất), trước tiên tôi thực hiện cập nhật brew để có thông tin thực sự có bản cập nhật .
Tiếp theo, tôi quay vòng qua tất cả các thùng để hiển thị thông tin của họ. Bởi vì tôi đã cập nhật brew trước đây, giờ đây người ta đã cung cấp thông tin rằng một số phiên bản mới nhất của thùng chưa được cài đặt.
Trong phương thức cập nhật của tôi, tôi thực sự phân tích lệnh thông tin cho dòng cụ thể đó:
lookup | grep -B 3 'Not installed' | sed -e '/^http/d;/^Not/d;/:/!d' | cut -d ":" -f1
Điều này có nghĩa là: "Đưa ra 3 dòng trên thông tin được cung cấp bất cứ khi nào bạn đọc dòng" chưa được cài đặt ". Sau đó xóa bất kỳ dòng nào có liên kết trong đó, cũng xóa một dòng có ':' trong đó."
Với cấu trúc của lệnh thông tin thùng bia, chúng tôi kết thúc bằng một dòng (không có thông tin phiên bản, không có URL ứng dụng), phản ánh tên thật của thùng mà nó cũng được cài đặt.
sản xuất thông tin thùng
Trong phiên bản của tôi, thông tin này hiện được in ra để người ta có thể dễ dàng xem những gì đã hết hạn và có thể được cập nhật.
Tại thời điểm này tôi thực hiện một trường hợp chuyển đổi, bởi vì có lẽ ngay bây giờ không đủ thời gian để cập nhật mọi thứ. Nó phụ thuộc vào trường hợp sử dụng của bạn. Đối với tôi, đôi khi tôi chỉ muốn xem những gì mới (chờ phiên bản mới, sửa lỗi) nhưng thực sự không có thời gian để cập nhật mọi thứ vì ngay bây giờ tôi không muốn đóng trình duyệt của mình, v.v.
Vì vậy, nếu một người chọn "có", danh sách các tên được làm sạch sẽ được cung cấp cho chức năng cập nhật, trong đó đối với mỗi thùng được xác định là hết hạn, việc cài đặt lại được ban hành.
Một lần nữa cảm ơn deinspanjer, trong khi cố gắng giải quyết vấn đề này cho chính mình, tôi luôn quên phát hành bản cập nhật bia trước đó để không có dòng "không được cài đặt" ở đó để thực sự phân tích (nền tảng của toàn bộ cách tiếp cận của tôi).
Tôi hy vọng nó sẽ có ích.