diff options
Diffstat (limited to 'up2date.sh')
-rwxr-xr-x | up2date.sh | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/up2date.sh b/up2date.sh new file mode 100755 index 0000000..d64d7f6 --- /dev/null +++ b/up2date.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash +# up2date.sh +# Run software update until there are no more +# updates available. +# @author Filipp Lepalaan +# @package mtk + +if [[ $USER != "root" ]]; then + echo "$(basename $0) must be run as root" 2>&1 + exit 1 +fi + +ME=$0 +PLIST=/Library/LaunchDaemons/com.unflyingobject.mtk.up2date.plist + +# updates available... +if /usr/sbin/softwareupdate -l 2>&1 | grep -q 'found the following new' +then + if [[ ! -e $PLIST ]]; then + cat > $PLIST <<EOT +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> + <dict> + <key>RunAtLoad</key> + <true/> + <key>Label</key> + <string>com.unflyingobject.mtk.up2date</string> + <key>ProgramArguments</key> + <array> + <string>${ME}</string> + </array> + </dict> +</plist> +EOT + /bin/launchctl load -w $PLIST + /usr/bin/logger "$(basename $0) loaded" + exit 0 + fi + /usr/sbin/softwareupdate -ia && /sbin/reboot + exit 0 +fi + +# no more updates available +/bin/launchctl unload -w "${PLIST}" && rm "${PLIST}" +/usr/bin/logger "$(basename $0) unloaded" +exit 0 |