#
# Copyright (C) 2014-2019 OpenWrt.org
# Copyright (C) 2016 LEDE-Project.org
#

preinit_mount_udpu() {
	. /lib/functions.sh
	. /lib/upgrade/common.sh

	case $(board_name) in
	methode,udpu|\
	methode,edpu)
		# Check which device is detected
		[ -b "/dev/mmcblk0" ] && mmcdev="/dev/mmcblk0" || mmcdev="/dev/mmcblk1"

		if [ -b "${mmcdev}p4" ]; then
			mkdir /misc
			mount -o compress_algorithm=zstd -t f2fs ${mmcdev}p4 /misc
			[ -f "/misc/$BACKUP_FILE" ] && {
				echo "- Restoring configuration files -"
				tar xzf "/misc/$BACKUP_FILE" -C /
				rm -f "/misc/$BACKUP_FILE"
				sync
			}
			[ -f "/misc/firmware/recovery.itb" ] && {
					echo "- Updating /recovery partition -"
					mkfs.ext4 -q ${mmcdev}p2 | echo y &> /dev/null
					mkdir -p /tmp/recovery
					mount ${mmcdev}p2 /tmp/recovery
					cp /misc/firmware/recovery.itb /tmp/recovery
					[ -f "/misc/firmware/boot.scr" ] && \
						cp /misc/firmware/boot.scr /tmp/recovery
					sync
					umount /tmp/recovery
					rm -rf /tmp/recovery

					# Replace previous backup with the new one
					[ -d "/misc/firmware_old" ] && rm -rf /misc/firmware_old
					[ -d "/misc/firmware" ] && mv /misc/firmware /misc/firmware_old
				}
		fi

		# Legacy support - if rootfs was booted, instruct u-boot to keep the current root dev
		[ "$(df | grep /dev/root)" ] && fw_setenv root_ok '2'
	;;
	esac
}

boot_hook_add preinit_main preinit_mount_udpu
