#!/bin/sh
# Update partition script

source /usr/local/lib/utils

root_part_num=2
root_part=/dev/mmcblk0p${root_part_num}
root_mount=/tmp/rootfs

# Compatibility issue with older Recovery notifications
if [ -x /usr/local/sbin/notif ]; then
    alias notif_set="notif set"
fi

do_preinst()
{
    notif_set 0 " 1/4 EXTRACT FIRMWARE UPDATE..^DO NOT TURN OFF THE CONSOLE"
    exit 0
}

do_postinst()
{

    #################
    # Resize Rootfs #
    #################
    notif_set 0 " 2/4 RESIZE ROOT FILESYSTEM^DO NOT TURN OFF THE CONSOLE"
    resize2fs ${root_part}
    if [ $? -ne 0 ]; then
        notif_set 0 " CANNOT RESIZE ROOT^FILESYSTEM"
        exit 1
    fi

    ##############################
    # SHARED PARTITION PROCESSES #
    ##############################
    notif_set 0 " 3/4 COPY FILES TO USB MOUNT^DO NOT TURN OFF THE CONSOLE"
    
    # Mount Rootfs
    mkdir -p ${root_mount}
    mount -t ext4 ${root_part} ${root_mount}
    if [ $? -ne 0 ]; then
        notif_set 0 "CANNOT MOUNT ROOT^FILESYSTEM"
        exit 1
    fi
    
    # Copy OPKs
    cp -r ${root_mount}/usr/local/share/OPKs/* /mnt

    # Copy freeware games and other necessary mnt files
    #unzip -q -o ${root_mount}/usr/local/share/mnt_files.zip -d /mnt/

    # Remove previous OPKs for default emulators
    rm /mnt/Emulators/gb_gbc_gnuboy_funkey-s.opk
    rm /mnt/Emulators/gba_gpsp_funkey-s.opk
    rm /mnt/Emulators/lynx_mednafen_funkey-s.opk
    rm /mnt/Emulators/megadrive_picodrive_funkey-s.opk
    rm /mnt/Emulators/nes_fceux_funkey-s.opk
    rm /mnt/Emulators/ngp_mednafen_funkey-s.opk
    rm /mnt/Emulators/pce_mednafen_funkey-s.opk
    rm /mnt/Emulators/ps1_pcsx_funkey-s.opk
    rm /mnt/Emulators/snes_pocketsnes_funkey-s.opk
    rm /mnt/Emulators/wonderswan_mednafen_funkey-s.opk
    rm /mnt/Applications/commander-funkey-s.opk

    # Remove Libretro cores from previous location
    rm /mnt/Libretro/cores/fceumm_libretro.so
    rm /mnt/Libretro/cores/gambatte_libretro.so
    rm /mnt/Libretro/cores/gpsp_libretro.so
    rm /mnt/Libretro/cores/mednafen_lynx_libretro.so
    rm /mnt/Libretro/cores/mednafen_ngp_libretro.so
    rm /mnt/Libretro/cores/mednafen_supergrafx_libretro.so
    rm /mnt/Libretro/cores/mednafen_wswan_libretro.so
    rm /mnt/Libretro/cores/pcsx_rearmed_libretro.so
    rm /mnt/Libretro/cores/picodrive_libretro.so
    rm /mnt/Libretro/cores/snes9x2005_libretro.so

    # Unmount Rootfs
    umount ${root_mount}
    if [ $? -ne 0 ]; then
        notif_set 0 "CANNOT UNMOUNT ROOT^FILESYSTEM"
        exit 1
    fi

    #####################
    # Erase update file #
    #####################
    for file in $(ls /mnt/FunKey-*.fwu); do
        notif_set 0 " 4/4 ERASE UPDATE FILE^DO NOT TURN OFF THE CONSOLE"
        rm -f "${file}"
    done
    exit 0
}

echo $0 $1

case "$1" in
preinst)
    do_preinst
    ;;
postinst)
    do_postinst
    ;;
*)
    exit 1
    ;;
esac
