#!/data/data/com.termux/files/usr/bin/bash

unset LD_PRELOAD LD_LIBRARY_PATH

AM_APK_PATH="/data/data/com.termux/files/usr/libexec/termux-am/am.apk"
AM_APK_TMP_PATH="/data/data/com.termux/cache/termux-am/am.apk"

echo
echo "You are going to reset your Termux installation."
echo
echo "This script will erase everything under \$PREFIX. All files in that directory will be lost, that includes packages, configuration files, databases, etc."
echo
echo "Termux home directory as well as data in your shared or external storage will not be removed and left as-is."
echo

read -re -p "Do you want to continue ? (y/n) " CHOICE

if ! [[ $CHOICE =~ (Y|y) ]]; then
	echo "Leaving \$PREFIX intact."
	exit 1
else
	HAS_TERMUX_AM=false

	if [ -f "$AM_APK_PATH" ]; then
		HAS_TERMUX_AM=true

		echo "Preserving package 'termux-am' for later use..."

		if [ -d "/data/data/com.termux/cache" ]; then
			/system/bin/rm -rf "/data/data/com.termux/cache/termux-am"
			/system/bin/mkdir -p "/data/data/com.termux/cache/termux-am"
			/system/bin/cp "$AM_APK_PATH" "$AM_APK_TMP_PATH"

			# In case copying am.apk failed.
			if [ ! -e "$AM_APK_TMP_PATH" ]; then
				HAS_TERMUX_AM=false
			fi
		fi
	fi

	echo "Erasing '/data/data/com.termux/files/usr'..."
	/system/bin/chmod -R 700 "/data/data/com.termux/files/usr" >/dev/null 2>&1
	/system/bin/rm -rf "/data/data/com.termux/files/usr"
	echo "Done. You need to close Termux application now."

	if ! $HAS_TERMUX_AM; then
		echo "Terminating all sessions..."
		/system/bin/killall -9 "$SHELL"
	else
		# - https://github.com/termux/TermuxAm/commit/598a9c06
		if [ -w "$AM_APK_TMP_PATH" ]; then
			chmod 0400 "$AM_APK_TMP_PATH"
		fi

		export CLASSPATH="$AM_APK_TMP_PATH"
		/system/bin/app_process -Xnoimage-dex2oat / "com.termux.termuxam.Am" stopservice "com.termux/com.termux.app.TermuxService"
	fi
fi
