#!/system/bin/sh

arg1="$1"
arg2="$2"
arg3="$3"
VER=3.7.2.1
RSTATUS="StableBeta-v"

n="
"
case $0 in
*data*user*flash*update-binary*)

    write_moduele_prop() {
        echo "id=RO2RWMAGISK"
        echo "name=RO2RW"
        echo "version=$VER"
        echo "versionCode=$(echo $VER | sed 's|\.||g')"
        echo "author=LeeGarChat"
        echo "description=Group TG @PocoF3DFE. For start script, go to terminal and write RO2RW"
    }
    write_ro2rw_bin() {
        echo '#!/system/bin/sh'
        echo 'chmod 777  /data/adb/modules/RO2RW/install.sh'
        echo '[ -f  /data/adb/modules/RO2RW/install.sh ] && {'
        echo '/data/adb/modules/RO2RW/install.sh "terminal" 2 "/data/adb/modules/RO2RW/install.zip" "magisk"'
        echo 'exit $?'
        echo '}'
    }
    echo -e "\n"
    echo -e " - Unpacking tools: RO2RW for Magisk $RSTATUS$VER"
    sleep 1

    rm -rf /data/adb/modules/RO2RW
    mkdir -p \
        /data/adb/modules/RO2RW/system/bin \
        /data/adb/modules/RO2RW/RO2RW.files

    cp $3 /data/adb/modules/RO2RW/install.zip
    cp $0 /data/adb/modules/RO2RW/install.sh

    /data/adb/magisk/busybox unzip -o "$arg3" "*" -d "/data/adb/modules/RO2RW/RO2RW.files" &>/dev/null

    write_moduele_prop >>/data/adb/modules/RO2RW/module.prop
    write_ro2rw_bin >>/data/adb/modules/RO2RW/system/bin/RO2RW

    cp /data/adb/modules/RO2RW/system/bin/RO2RW /data/adb/modules/RO2RW/system/bin/ro2rw
    chmod 777 /data/adb/modules/RO2RW/RO2RW.files/*
    chmod 777 /data/adb/modules/RO2RW/system/bin/*
    echo -e "\n"
    if [ -f /system/bin/RO2RW ] && (grep -q "magisk" /system/bin/RO2RW); then
        echo -e " - Complete updating RO2RW"
        echo -e " - You can use script. \n - Open any terminal, give su \n   permission, and write RO2RW or ro2rw"
    else
        echo -e " - Complite, please reboot you device"
        echo -e " - After reboot, you can use script. \n - Open any terminal, give su \n   permission, and write RO2RW or ro2rw"
    fi
    sleep 1
    echo -e "\n"
    echo -e " - TG group: @MFPupdate\n - TG chat: @PocoF3DFE\n - Author: @LeeGarChat"

    exit 0
    ;;
esac

read_main_dir(){

full_path="$1"
while true ; do 
    full_path="$(dirname "$full_path")"
    low_dir="${full_path%\/*}"
    [ -z "$low_dir" ] && break
done
echo "$full_path"

}

(mountpoint -q /data) || { 
    mount /data || {
    umount /data
    }
}
(mountpoint -q /data) && {
    TMP_NEO=/data/local/TMP_NEO
    TMP_IMGS=/data/local/TMP_NEO/imgs
    NEO_LOGS=/data/media/0/NEO.LOGS
    check_size_main_path=/data
} || {
    TMP_NEO=/dev/TMP_NEO
    TMP_IMGS="$(read_main_dir "$arg3")/NEO.IMGS/imgs"
    NEO_LOGS="$(read_main_dir "$arg3")/NEO.LOGS"
    check_size_main_path=$(read_main_dir "$arg3")
    #my_print "Need mount data, OTG and encrypted data not supported"
    #exit 123
}


if [ -d $TMP_IMGS ]; then
    for file in $TMP_IMGS/*; do
        [ -d $file ] && {
            while (mountpoint -q $file); do
                umount -fl $file >>/dev/null
            done
        }
    done
fi
magisk_on_system=false
case $4 in
    magisk) magisk_on_system=true ;;
    *) magisk_on_system=false ;;
esac

rm -rf $TMP_NEO

mkdir -pv $TMP_NEO/ &>>/dev/null
mkdir -pv $TMP_IMGS/ &>>/dev/null
LOG=$TMP_NEO/log.file.txt

getprop &>>$LOG

ls /dev/block/by-name/* /dev/block/* /dev/block/mapper/* &>>$LOG

cd "$TMP_NEO"
$magisk_on_system && {
    cp -R /data/adb/modules/RO2RW/RO2RW.files/* $TMP_NEO/
} || {
    unzip -o "$arg3" -d "$TMP_NEO" &>>$LOG || \
    unzip -o "$arg3" &>>$LOG
}
cp $TMP_NEO/arm64/bootctl $TMP_NEO/arm32/
cp $TMP_NEO/arm64/erofs $TMP_NEO/arm32/

chmod -R 777 $TMP_NEO &>>$LOG
chmod 777 $TMP_NEO/arm32/* &>>$LOG
chmod 777 $TMP_NEO/arm32/lib/* &>>$LOG
chmod 777 $TMP_NEO/arm64/* &>>$LOG
chmod 777 $TMP_NEO/arm64/lib/* &>>$LOG

case "$(file /system/bin/sh)" in
    *"symbolic link"*)
        case "$(file $(readlink /system/bin/sh))" in
        *"32-bit "*" arm"*) arch=arm32
        ;;
        *"64-bit "*" arm64"*) arch=arm64
        ;;
        esac
        
    ;;
    *"32-bit "*" arm"*) arch=arm32
    ;;
    *"64-bit "*" arm64"*) arch=arm64
    ;;
esac


sed -i 's|VER="EXAMPLE"|VER="'$VER'"|' $TMP_NEO/install.sh
sed -i 's|RSTATUS="EXAMPLE"|RSTATUS="'$RSTATUS'"|' $TMP_NEO/install.sh
sed -i 's|#EXAMPLE_SH|#!'$TMP_NEO/$arch'/bash|' $TMP_NEO/install.sh
sed -i 's|arch="EXAMPLE"|arch='$arch'|' $TMP_NEO/install.sh

$TMP_NEO/$arch/bash $TMP_NEO/install.sh "$1" "$2" "$3" "$4" "$5"
exit $?
