การปรับปรุงรหัสที่ได้รับจากdeinspanjerฉันพยายามเลียนแบบคำสั่ง noop คล้ายกับรหัสช็อคโกแลต ( choco update --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
อย่างที่เห็นฉันกำลังใช้วิธีการแบบแยกส่วนเนื่องจากกรณีการใช้ของฉันแตกต่างกันเล็กน้อย ฉันไม่ต้องการนั่งหน้าคอมพิวเตอร์และพิมพ์ใช่ / ไม่ใช่สำหรับทุกแอพที่ฉันติดตั้ง ในขณะที่ไม่มีทางจริงของถังอัพเกรด (เพียงแค่ติดตั้งรุ่นใหม่ล่าสุด) ผมครั้งแรกที่จะ update ชงจะมีข้อมูลว่ามีจริงจะอัปเดตพร้อมใช้งาน
ต่อไปฉันวนรอบถังทั้งหมดเพื่อแสดงข้อมูล เนื่องจากฉันได้ทำการอัพเดทก่อนหน้านี้ตอนนี้มีข้อมูลหนึ่งที่ไม่ได้ติดตั้งเวอร์ชันล่าสุดของ cask บางตัว
ในวิธีการอัพเดตของฉันฉันจะแยกวิเคราะห์คำสั่งข้อมูลสำหรับบรรทัดเฉพาะนั้น:
lookup | grep -B 3 'Not installed' | sed -e '/^http/d;/^Not/d;/:/!d' | cut -d ":" -f1
ตัวแปลใดที่ให้: "ให้ข้อมูลด้านบน 3 บรรทัดที่ให้ไว้เมื่อใดก็ตามที่คุณอ่านบรรทัด" ไม่ได้ติดตั้ง "จากนั้นลบบรรทัดใด ๆ ที่มีลิงก์อยู่
เมื่อพิจารณาถึงโครงสร้างของคำสั่ง brew cask info เราจะจบลงด้วยหนึ่งบรรทัด (ไม่มีข้อมูลเวอร์ชันไม่มี URL ของแอพ) ซึ่งสะท้อนถึงชื่อจริงของ cask ที่ติดตั้งไว้ด้วย
ชงการส่งออกข้อมูลถัง
ในรุ่นของฉันข้อมูลนี้จะถูกพิมพ์ออกมาในขณะนี้เพื่อให้หนึ่งสามารถดูว่าถังที่ล้าสมัยและสามารถปรับปรุงได้
ณ จุดนี้ฉันทำกรณีสวิตช์เพราะบางทีตอนนี้ไม่ได้มีเวลาเพียงพอที่จะอัปเดตสิ่งต่าง ๆ ขึ้นอยู่กับการใช้งานของคุณ สำหรับฉันบางครั้งฉันต้องการเห็นว่ามีอะไรใหม่ (กำลังรอรุ่นใหม่เป็นตัวแก้ไขข้อผิดพลาด) แต่ไม่มีเวลาอัปเดตสิ่งต่าง ๆ เพราะตอนนี้ฉันไม่ต้องการปิดเบราว์เซอร์ของฉันเป็นต้น
ดังนั้นหากหนึ่ง opts สำหรับ "ใช่" รายการของชื่อถังที่ทำความสะอาดจะถูกกำหนดให้กับฟังก์ชั่นการอัพเดทซึ่งสำหรับแต่ละถังที่ถูกกำหนดให้ล้าสมัยจะมีการติดตั้งใหม่
ขอขอบคุณอีกครั้งที่ deinspanjer ในขณะที่พยายามแก้ไขปัญหานี้ด้วยตัวเองฉันลืมที่จะออกการปรับปรุงชงไว้ล่วงหน้าดังนั้นจึงไม่มีบรรทัด "ไม่ได้ติดตั้ง" เพื่อแยกวิเคราะห์ (รากฐานของวิธีการทั้งหมดของฉัน)
ฉันหวังว่านี่จะเป็นประโยชน์