#!/sbin/sh
## 余空

#########
# 初始化
#########
umask 022
Start_Time=$(date "+%Y-%m-%d %H:%M:%S")
Print_Time=$(date "+%m.%d %H:%M")

TMPDIR=/dev/tmp
rm -rf $TMPDIR 2>/dev/null
mkdir -p $TMPDIR

_grep_prop() {
  local REGEX="s/$1=//p"
  shift
  local FILES=$@
  [[ -z $FILES ]] && FILES="/system/build.prop /vendor/build.prop /product/build.prop"
  sed -n $REGEX $FILES 2>/dev/null | head -n 1
}

Model=$(_grep_prop ro\.product\.model)
[[ -z $Model ]] && Model=$(_grep_prop ro\.product\.vendor\.model)
Brand=$(_grep_prop ro\.product\.model)
[[ -z $Brand ]] && Brand=$(_grep_prop ro\.product\.vendor\.brand)
Kernel=$(uname -r)
Rom=$(getprop ro.build.display.id)
Device=$(getprop ro.product.device)
SDK=$(getprop ro.build.version.sdk)
Hardware=$(getprop ro.boot.hardware)
CPU_ABI=$(getprop ro.product.cpu.abi)
Android=$(getprop ro.build.version.release)
Market_Name=$(getprop ro.product.marketname)
Version=$(getprop ro.build.version.incremental)
[[ -e /sys/block/sda/size ]] && ROM_TYPE="UFS" || ROM_TYPE="eMMC"
[[ -e /proc/scsi/scsi ]] && UFS_MODEL=$(sed -n 3p /proc/scsi/scsi | awk '/Vendor/{print $2}') && Particles=$(sed -n 3p /proc/scsi/scsi | awk '/Vendor/{print $4}') || UFS_MODEL="unknown"

if [[ $Android -ge 11 ]]; then
    PERSISTDIR=/dev/*/.magisk/mirror/persist
else
    PERSISTDIR=/sbin/.magisk/mirror/persist
fi


## 定义module.prop
id=MIUIhome
name="MIUI桌面补全"
version=v1.0
versionCode=1104902445
author=⁢এ曦ꦿ᭄࿐
description=基于ALPHA-4.22.0.2973-03051048内测桌面.目前包含:开启平滑动画.全机型完整模糊.全机型文件夹模糊.取消后台压暗效果.动画速度跟随系统.全机型水波纹下载特效.解锁更多桌面布局和缩放速度.为MIUI12增加移除应用图标功能.

Ver=版本：$version，刷入时间：$Print_Time


# 输出module.prop
echo "id=$id
name=$name
version=$Ver
versionCode=$versionCode
author=$author
description=$description" > $TMPDIR/module.prop


## 输出system.prop
echo 'ro.miui.backdrop_sampling_enabled=true' > $TMPDIR/system.prop


# 输出uninstall.sh
echo '#!/system/bin/sh
MODDIR=${0%/*}
tmp_list="MiuiHome"
dda=/data/dalvik-cache/arm
[[ -d $dda"64" ]] && dda=${dda}64
for i in $tmp_list; do
    rm -f $dda/system@*@${i}*
done

rm -rf /data/system/package_cache/*' > $TMPDIR/uninstall.sh


## 执行模块安装
on_install() {
    echo "______________"
    echo "  ※ 模块安装 ※"
    echo "¯¯¯¯¯¯¯¯¯¯¯¯¯¯"
    echo "- 正在刷入..."
    unzip -o "$ZIPFILE" 'system/*' -d $MODPATH >&2
    tmp_list="MiuiHome"
    dda=/data/dalvik-cache/arm
    [[ -d $dda"64" ]] && dda=${dda}64
    for i in $tmp_list; do
	    rm -f $dda/system@*@"$i"*
    done
    case "$CPU_ABI" in
        arm64*) Type=arm64 Wenj=arm64-v8a;;
        arm*) Type=arm Wenj=armeabi-v7a;;
        x86_64*) Type=x86_64 Wenj=x86_64;;
        x86*) Type=x86 Wenj=x86;;
    esac
    echo "- 你的设备为$Type架构"
    echo "- 正在解压APP并移动对应lib"
    mkdir -p $MODPATH/system/priv-app/MiuiHome/lib/$Type
    mkdir -p $MODPATH/MiuiHome
    unzip -o $MODPATH/system/priv-app/MiuiHome/MiuiHome.apk -d $MODPATH/MiuiHome >&2
    cp -rf $MODPATH/MiuiHome/lib/$Wenj/* $MODPATH/system/priv-app/MiuiHome/lib/$Type
    rm -rf $MODPATH/MiuiHome
    rm -rf /data/system/package_cache/*
    chmod 777 /data/user_de/0/com.miui.home/cache/debug_log
    rm -rf /data/user_de/0/com.miui.home/cache/debug_log
    touch /data/user_de/0/com.miui.home/cache/debug_log
    chmod 000 /data/user_de/0/com.miui.home/cache/debug_log
    echo "- 设置权限..."
    set_perm_recursive $MODPATH 0 0 0755 0644
}


## 不支持刷入
require_new_magisk() {
  echo
  echo "- 当前模块不支持此Magisk版本."
  echo "- 请安装 Magisk v20.4+!"
  echo
  echo "- 或Magisk环境不完整."
  echo "- 请修复Magisk环境!"
  echo
  exit 1
}


#########################
# 加载 util_functions.sh
#########################
ui_print() { echo "$1"; }
OUTFD=$2
ZIPFILE=$3

mount /data 2>/dev/null

unzip -o "$ZIPFILE" 'tools/*' -d $TMPDIR >&2

if [[ -f /data/adb/magisk/util_functions.sh ]]; then
    . /data/adb/magisk/util_functions.sh
else
    if [[ -f $TMPDIR/tools/util_functions.sh ]]; then
        . $TMPDIR/tools/util_functions.sh
    else
        ui_print "! 缺少预置脚本,无法完成刷入."
        exit 1
    fi
fi

[[ $MAGISK_VER_CODE -lt 20400 ]] && require_new_magisk

setup_flashable
mount_partitions
api_level_arch_detect

if $BOOTMODE; then
    boot_actions
else
    recovery_actions
fi

unzip -o "$ZIPFILE" module.prop -d $TMPDIR >&2
[[ ! -f $TMPDIR/module.prop ]] && abort "! 从 zip 中提取文件失败."

$BOOTMODE && MODDIRNAME=modules_update || MODDIRNAME=modules
MODULEROOT=$NVBASE/$MODDIRNAME
MODID=`grep_prop id $TMPDIR/module.prop`
MODPATH=$MODULEROOT/$MODID

rm -rf $MODPATH 2>/dev/null
mkdir -p $MODPATH
cp -r $TMPDIR/* $MODPATH/

print_modname() {
  echo "- Powered By Magisk"
  echo "_______________"
  echo "  ※ 作者信息 ※"
  echo "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯"
  echo " 8b        d8           88      a8P"
  sleep 0.02
  echo "  Y8,    ,8P            88    ,88'"
  sleep 0.02
  echo "   Y8,  ,8P             88  ,88\""
  sleep 0.02
  echo "    \"8aa8\"  88       88 88,d88'"
  sleep 0.02
  echo "     \`88'   88       88 8888\"88,"
  sleep 0.02
  echo "      88    88       88 88P   Y8b"
  sleep 0.02
  echo "      88    \"8a,   ,a88 88     \"88,"
  sleep 0.02
  echo "      88     \`\"YbbdP'Y8 88       Y8b"
  echo "_______________"
  echo "  ※ 模块信息 ※"
  echo "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯"
  echo "- 模块名称: $name"
  sleep 0.05
  echo "- 模块版本: $version"
  sleep 0.05
  echo "- 模块代号: $id"
  sleep 0.05
  echo "- 模块制作: 余空"
  sleep 0.05
  echo "_______________"
  echo "  ※ 系统详情 ※"
  echo "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯"
  sleep 0.05
  echo "- 厂商信息: $Brand"
  sleep 0.05
  echo "- 设备代号: $Device"
  sleep 0.05
  echo "- 设备型号: $Model"
  sleep 0.05
  echo "- 销售型号: $Market_Name"
  sleep 0.05
  echo "- 芯片型号: $Hardware $(($(cat /sys/devices/system/cpu/kernel_max) + 1))核"
  sleep 0.05
  echo "- 芯片架构: $CPU_ABI"
  sleep 0.05
  echo "- 安卓版本: Android $Android"
  sleep 0.05
  echo "- 系统版本: $Version"
  sleep 0.05
  echo "- 基线版本: $Rom"
  sleep 0.05
  echo "- 内存大小: $(cat /proc/meminfo | head -n 1 | awk '{print $2/1000}')MB"
  sleep 0.05
  echo "- 闪存类型: $ROM_TYPE"
  sleep 0.05
  echo "- 闪存颗粒: $UFS_MODEL $Particles"
  sleep 0.05
  echo "- 内核版本: $Kernel"
  sleep 0.1
}

print_modname
on_install

for TARGET in $REPLACE; do
    echo "- 正在删除目标文件: ${TARGET}."
    mktouch $MODPATH$TARGET/.replace
done

if $BOOTMODE; then
    mktouch $NVBASE/modules/$MODID/update
    cp -af $MODPATH/module.prop $NVBASE/modules/$MODID/module.prop
fi

if [[ -f $MODPATH/sepolicy.rule -a -e $PERSISTDIR ]]; then
    echo "- 安装自定义sepolicy补丁."
    PERSISTMOD=$PERSISTDIR/magisk/$MODID
    mkdir -p $PERSISTMOD
    cp -af $MODPATH/sepolicy.rule $PERSISTMOD/sepolicy.rule
fi

cd /
$BOOTMODE || recovery_cleanup
rm -rf $MODPATH/tools
rm -rf $TMPDIR

echo "_______________"
echo "  ※ 附加信息 ※"
echo "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯"
echo "- 刷入时间: $Start_Time"
End_Time=$(date "+%Y-%m-%d %H:%M:%S")
Duration=$(echo $((Sleep_Time + $(date +%s -d "${End_Time}") - $(date +%s -d "${Start_Time}"))) | awk '{t=split("60 秒 60 分 24 时 999 天",a);for(n=1;n<t;n+=2){if($1==0)break;s=$1%a[n]a[n+1]s;$1=int($1/a[n])}print s}')
echo "- 刷入耗时: $Duration"
echo "_______________"
echo "  ※ 刷入成功 ※"
echo "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯"
echo "- 请重启设备."
exit 0