#!/bin/sh

# KEYWORD: firstboot
# PROVIDE: firstboot_freebsd_update
# REQUIRE: syslogd NETWORKING
# BEFORE: LOGIN

# Add the following lines to /etc/rc.conf.local or /etc/rc.conf (in the disk
# image, since this only runs on the first boot) to enable this:
#
# firstboot_freebsd_update_enable="YES"
#
# By default this script will only run on *-BETA*, *-RC*, and *-RELEASE*
# systems, since those are the only ones for which updates are provided by
# the FreeBSD project; to run freebsd-update anyway (e.g., on a custom
# release for which you are providing your own update bits), set:
#
# firstboot_freebsd_update_nonstandard="YES"

. /etc/rc.subr

: ${firstboot_freebsd_update_enable:="NO"}
: ${firstboot_freebsd_update_nonstandard:="NO"}

name="firstboot_freebsd_update"
rcvar=firstboot_freebsd_update_enable
start_cmd="firstboot_freebsd_update_run | logger -s -t 'freebsd-update'"
stop_cmd=":"

firstboot_freebsd_update_run()
{

	if ! checkyesno firstboot_freebsd_update_nonstandard; then
		case "`uname -r`" in
		*-BETA* | *-RC* | *-RELEASE*)
			;;
		*)
			echo "Firstboot freebsd-update disabled on `uname -r`"
			return 0
		;;
		esac
	fi

	env HTTP_TIMEOUT=5 freebsd-update --not-running-from-cron fetch
	if [ -e /var/db/freebsd-update/`echo / | sha256`-install ]; then
		freebsd-update install
		echo "Requesting reboot after installing updates."
		touch ${firstboot_sentinel}-reboot
	fi
}

load_rc_config $name
run_rc_command "$1"

