2023-12-04 21:53:15 -08:00
|
|
|
# @description This function determines whether or not a reboot is required on the target system.
|
|
|
|
# On Linux, it will check for the presence of the `/var/run/reboot-required` file to determine
|
|
|
|
# whether or not a reboot is required. On macOS, it will reboot `/Library/Updates/index.plist`
|
|
|
|
# to determine whether or not a reboot is required.
|
|
|
|
#
|
|
|
|
# After determining whether or not a reboot is required, the script will attempt to automatically
|
|
|
|
# reboot the machine.
|
|
|
|
handleRequiredReboot() {
|
2023-12-24 19:05:09 -08:00
|
|
|
if [ -d /Applications ] && [ -d /System ]; then
|
|
|
|
### macOS
|
|
|
|
if ! defaults read /Library/Updates/index.plist InstallAtLogout 2>&1 | grep 'does not exist' > /dev/null; then
|
|
|
|
logg info 'There appears to be an update that requires a reboot'
|
|
|
|
logg info 'Attempting to reboot gracefully' && osascript -e 'tell application "Finder" to shut down'
|
2023-12-04 21:53:15 -08:00
|
|
|
fi
|
2023-12-24 19:05:09 -08:00
|
|
|
elif [ -f /var/run/reboot-required ]; then
|
|
|
|
### Linux
|
|
|
|
logg info '/var/run/reboot-required is present so a reboot is required'
|
|
|
|
if command -v systemctl > /dev/null; then
|
|
|
|
logg info 'systemctl present so rebooting with sudo systemctl start reboot.target' && sudo systemctl start reboot.target
|
|
|
|
elif command -v reboot > /dev/null; then
|
|
|
|
logg info 'reboot available as command so rebooting with sudo reboot' && sudo reboot
|
|
|
|
elif command -v shutdown > /dev/null; then
|
|
|
|
logg info 'shutdown command available so rebooting with sudo shutdown -r now' && sudo shutdown -r now
|
|
|
|
else
|
|
|
|
logg warn 'Reboot required but unable to determine appropriate restart command'
|
|
|
|
fi
|
|
|
|
fi
|
2023-12-04 21:53:15 -08:00
|
|
|
}
|