aboutsummaryrefslogtreecommitdiffstats
path: root/up2date.sh
diff options
context:
space:
mode:
Diffstat (limited to 'up2date.sh')
-rwxr-xr-xup2date.sh47
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