deinspanjer से प्रदान किए गए कोड में सुधार करते हुए , मैंने एक नोओप कमांड की नकल करने की कोशिश की, जैसे कि चॉकलेट ( चोको अपडेट --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
जैसा कि एक देख सकता हूं, मैं एक मॉड्यूलर दृष्टिकोण का उपयोग कर रहा हूं क्योंकि मेरा उपयोग मामला थोड़ा अलग है। मैं अपने कंप्यूटर के सामने नहीं बैठना चाहता हूं और मेरे द्वारा इंस्टॉल किए गए प्रत्येक ऐप के लिए हां / नहीं टाइप करता हूं। हालांकि काक्स को अपग्रेड करने का कोई वास्तविक तरीका नहीं है (केवल नवीनतम संस्करण को फिर से इंस्टॉल करें), मैं सबसे पहले जानकारी को अपडेट करने के लिए काढ़ा अपडेट करता हूं कि वास्तव में अपडेट उपलब्ध हैं ।
इसके बाद, मैं अपनी जानकारी प्रदर्शित करने के लिए सभी पीपे के माध्यम से साइकिल चलाता हूं। क्योंकि मैंने पहले काढ़ा अपडेट किया था, अब एक जानकारी दी गई है कि कुछ पीपा का नवीनतम संस्करण स्थापित नहीं है।
मेरे अद्यतन विधि के अंदर, मैं वास्तव में उस विशिष्ट लाइन के लिए सूचना कमांड को पार्स करता हूं:
lookup | grep -B 3 'Not installed' | sed -e '/^http/d;/^Not/d;/:/!d' | cut -d ":" -f1
जो अनुवाद करता है: "जब भी आप" लाइन स्थापित नहीं करते हैं "पढ़ी गई जानकारी के ऊपर दी गई 3 पंक्तियाँ दें। फिर किसी भी पंक्ति को हटा दें, जिसमें एक कड़ी है, उसमें एक ':' वाली पंक्ति को भी हटा दें।"
काढ़ा पीपा जानकारी कमान की संरचना को देखते हुए, हम एक पंक्ति (कोई संस्करण जानकारी, कोई ऐप URL) के साथ समाप्त नहीं होते हैं, जो कि पीपा के वास्तविक नाम को दर्शाता है जिसे इसके साथ भी स्थापित किया गया था।
काढ़ा पीपा जानकारी उत्पादन
मेरे संस्करण में, यह जानकारी अब प्रिंट की गई है, ताकि कोई आसानी से देख सके कि पीपे किस तारीख से बाहर हैं और उन्हें अपडेट किया जा सकता है।
इस बिंदु पर मैं एक स्विच केस करता हूं, क्योंकि शायद अभी चीजों को अपडेट करने के लिए पर्याप्त समय नहीं है। यह आपके उपयोग-मामले पर निर्भर करता है। मेरे लिए, मैं कभी-कभी यह देखना चाहता हूं कि नया क्या है (नए संस्करण की प्रतीक्षा कर रहा है, बगफिक्स) लेकिन वास्तव में चीजों को अपडेट करने का समय नहीं है क्योंकि अभी मैं अपना ब्राउज़र बंद नहीं करना चाहता हूं आदि।
इसलिए यदि कोई "हाँ" के लिए विरोध करता है, तो काक्स के साफ किए गए नामों की सूची अपडेट फ़ंक्शन को दी जाती है, जहां प्रत्येक पीक के लिए जिसे पुनर्स्थापना जारी होने की तारीख निर्धारित की गई थी।
फिर से deinspanjer के लिए धन्यवाद, अपने लिए इस मुद्दे को हल करने की कोशिश करते हुए, मैं हमेशा पहले से ही काढ़ा अपडेट जारी करना भूल गया था, इसलिए वास्तव में पार्स (मेरे पूरे दृष्टिकोण की नींव) में कोई "स्थापित नहीं" लाइन नहीं थी।
मुझे आशा है कि यह मददगार था।