#!/bin/bash
#make by G.R.H

if [ ! -f /usr/bin/mpv ]; then
	echo "Error: The necessary playback files are missing and the program cannot run."
	exit 1
fi

. /mnt/mod/ctrl/configs/key_config &>/dev/null

progdir=$(dirname "$0")

function backup() {
	pkill -f mpv
	mpv --really-quiet --image-display-duration=6000 "${progdir}/res/b1.png" &
	MPATH="mmc"
	if mountpoint -q /mnt/sdcard; then
		MPATH="sdcard"
	fi
	BACKUP_DIR="/mnt/${MPATH}/anbernic/backup"
	BACKUP_FILE="${BACKUP_DIR}/backup.dat"
	mkdir -p ${BACKUP_DIR}
	[[ -f "${BACKUP_FILE}" ]] && rm -f "${BACKUP_FILE}"
	tar -cf ${BACKUP_FILE} /.config/retroarch/retroarch.cfg \
                        /.config/retroarch/tmp/ \
                        /mnt/vendor/deep/drastic/config/ \
                        /mnt/vendor/deep/ppsspp/PSP/SYSTEM/* \
                        /mnt/vendor/deep/retro/config/ \
                        /mnt/vendor/deep/retro/remaps/ \
                        /mnt/data/dmenu/dmenu_attr.ini \
                        /mnt/data/misc/ \
                        /mnt/data/.wifi >/dev/null 2>&1
	sleep 3
	pkill -f mpv
	if [ -f /usr/bin/mpv ]; then
		case $(cat /mnt/vendor/oem/language.ini) in
			0|1)
				/mnt/mod/ctrl/printstr -t 5 -c yellow -s 18 "系统设置已备份到：\n$BACKUP_FILE"
			;;
			*)
				/mnt/mod/ctrl/printstr -t 5 -c yellow -s 18 "System settings backed up to:\n$BACKUP_FILE"
			;;
		esac
		mpv --really-quiet --image-display-duration=3 "${progdir}/res/done.png"
	fi
}

function restore() {
	pkill -f mpv
	for BACKUP_DIR in sdcard mmc
	do
		if [ -f "/mnt/${BACKUP_DIR}/anbernic/backup/backup.dat" ]; then
			mpv --really-quiet --image-display-duration=3 "${progdir}/res/b2.png"
			tar -xmf ${BACKUP_FILE} -C /
			sync
			sleep 1
			mpv --really-quiet --image-display-duration=3 "${progdir}/res/reboot.png"
			reboot
			while true; do sleep 5; done
		fi
	done
	mpv --really-quiet --image-display-duration=3 "${progdir}/res/error.png"
}

pkill -f mpv
pkill -f evtest
mpv --really-quiet --image-display-duration=6000 "${progdir}/res/b0.png" &

while true
do
	Test_Button_A
	if [ "$?" -eq "10" ]; then
		restore
		break
	fi
	Test_Button_Y
	if [ "$?" -eq "10" ]; then
		backup
		break
	fi
	Test_Button_FUNC
	if [ "$?" -eq "10" ]; then
		break
	fi
done
pkill -f mpv
pkill -f evtest
exit 0