#!/bin/sh
MAGISKTMP=/sbin
[ -d /sbin ] || MAGISKTMP=/debug_ramdisk
MAGISKBIN=/data/adb/magisk
if [ ! -d /data/adb ]; then
    mkdir -m 700 /data/adb
    chcon u:object_r:adb_data_file:s0 /data/adb
fi
if [ ! -d $MAGISKBIN ]; then
    # shellcheck disable=SC2174
    mkdir -p -m 755 $MAGISKBIN
    chcon u:object_r:system_file:s0 $MAGISKBIN
fi
ABI=$(getprop ro.product.cpu.abi)
for file in busybox magiskpolicy magiskboot magiskinit; do
    [ -x "$MAGISKBIN/$file" ] || {
        unzip -d $MAGISKBIN -oj $MAGISKTMP/stub.apk "lib/$ABI/lib$file.so"
        mv $MAGISKBIN/lib$file.so $MAGISKBIN/$file
        chmod 755 "$MAGISKBIN/$file"
    }
done
for file in util_functions.sh boot_patch.sh; do
    [ -x "$MAGISKBIN/$file" ] || {
        unzip -d $MAGISKBIN -oj $MAGISKTMP/stub.apk "assets/$file"
        chmod 755 "$MAGISKBIN/$file"
    }
done
for file in "$MAGISKTMP"/*; do
    if echo "$file" | grep -Eq "lsp_.+\.img"; then
        foldername=$(basename "$file" .img)
        mkdir -p "$MAGISKTMP/$foldername"
        mount -t auto -o ro,loop "$file" "$MAGISKTMP/$foldername"
        "$MAGISKTMP/$foldername/post-fs-data.sh" &
    fi
done
wait
for file in "$MAGISKTMP"/*; do
    if echo "$file" | grep -Eq "lsp_.+\.img"; then
        foldername=$(basename "$file" .img)
        umount "$MAGISKTMP/$foldername"
        rm -rf "${MAGISKTMP:?}/${foldername:?}"
        rm -f "$file"
    fi
done