вдосконалюючи наданий код від deinspanjer, я намагався імітувати команду noop, подібно до тієї з шоколаду ( оновлення choco --noop / choco застаріло ).
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
Як видно, я використовую модульний підхід, оскільки мій випадок використання дещо відрізняється. Я не хочу сидіти перед своїм комп’ютером і вводити так / ні для кожного встановленого додатка. Хоча реального способу оновлення скриньок немає (просто перевстановіть найновішу версію), я спочатку роблю оновлення, щоб мати інформацію про наявність актуальних оновлень .
Далі я перебираю всі бочки, щоб відобразити їх інформацію. Оскільки я попередньо готував оновлення, тепер надається інформація про те, що остання версія деякої скриньки не встановлена.
Всередині мого методу оновлення я фактично аналізую команду info для цього конкретного рядка:
lookup | grep -B 3 'Not installed' | sed -e '/^http/d;/^Not/d;/:/!d' | cut -d ":" -f1
Що означає: "Наведіть 3 рядки вище інформації, наданої щоразу, коли ви читаєте рядок" не встановлено ". Потім видаліть будь-який рядок, у якому є посилання, а також видаліть рядок, у якому": "."
Враховуючи структуру команди запікання інформації про заварку, ми закінчуємо один рядок (інформація про версію, URL-адреса програми), яка відображає фактичну назву скриньки, з якою вона також була встановлена.
заварювати інформацію про вивірку
У моїй версії ця інформація тепер роздруковується, так що можна легко побачити, які скриньки застаріли та чи могли бути оновлені.
На даний момент я роблю вимикач, тому що, можливо, зараз недостатньо часу для оновлення речей. Це залежить від Вашого випадку використання. Для мене я іноді просто хочу побачити, що нового (чекає нової версії, помилка), але насправді не встигаю оновлювати речі, тому що зараз я не хочу закривати свій браузер тощо.
Отже, якщо хтось обрав "так", список очищених назв скриньок надається функції оновлення, де для кожної скриньки, яка була визначена застарілою, видано перевстановлення.
Ще раз дякую deinspanjer, намагаючись вирішити цю проблему для себе, я завжди забував заздалегідь випустити оновлення пива, щоб там не було рядка "не встановлено", щоб насправді проаналізувати (основа мого цілого підходу).
Я сподіваюся, що це було корисно.