#!/bin/bash

# Handle rootless install
[ -d '/var/jb/Applications/iCleaner.app' ] && PREFIX='/var/jb' || PREFIX=''

# Paths
CLI_SCRIPT="${PREFIX}/usr/bin/icleaner"
APP_BUNDLE="${PREFIX}/Applications/iCleaner.app"
ICLEANER="${APP_BUNDLE}/iCleaner"
ICLEANER_EXE="${APP_BUNDLE}/iCleaner_exe"
ICLEANER_LAUNCHER="${APP_BUNDLE}/iCleaner_launcher"

# Software version
if type sw_vers &>/dev/null; then
	SW_VER=$(sw_vers -productVersion)
	SW_VER=(${SW_VER//./ })
	printf -v SW_VER '%02d%02d' ${SW_VER[0]} ${SW_VER[1]}
else
	SW_VER='9999'
fi

# Correct executable depends on software version
if [[ ${SW_VER} < 0600 ]]; then
	EXE_NAME='iOS4_iCleaner'
elif [[ ${SW_VER} < 0900 ]]; then
	EXE_NAME='iOS6_iCleaner'
else
	EXE_NAME='iCleaner'
fi

EXES=("${CLI_SCRIPT}")
SUID_EXES=()

if [[ ${SW_VER} < 1003 ]]; then
	# Volume is not APFS
	if [[ -L "${ICLEANER_LAUNCHER}" ]]; then
		# Stashed, unstash
		STASH_DIR="$(dirname "$(readlink -f "${ICLEANER_LAUNCHER}")")"
		STASHED_ICLEANER="${STASH_DIR}/iCleaner"

		UNSTASH_DIR='/usr/libexec/icleaner'
		UNSTASHED_ICLEANER="${UNSTASH_DIR}/iCleaner"

		rm -f "${UNSTASH_DIR}" &>/dev/null  # Ensure there is no file there
		mkdir -p "${UNSTASH_DIR}"

		mv "${STASH_DIR}/${EXE_NAME}" "${UNSTASHED_ICLEANER}"
		rm -f "${STASHED_ICLEANER}"
		ln -s "${UNSTASHED_ICLEANER}" "${STASHED_ICLEANER}"

		SUID_EXES+=("${UNSTASHED_ICLEANER}")
	else
		# Not stashed, move executables to correct location
		mv "${APP_BUNDLE}/${EXE_NAME}" "${ICLEANER_EXE}"
		mv "${ICLEANER_LAUNCHER}" "${ICLEANER}"

		SUID_EXES+=("${ICLEANER_EXE}")
	fi

	# The launcher is there either way
	EXES+=("${ICLEANER}")
else
	# Volume is APFS, keep everything as-is
	SUID_EXES+=("${ICLEANER}")
fi

# Remove unnecessary executables
rm -f "${APP_BUNDLE}"/iOS*_iCleaner "${ICLEANER_LAUNCHER}"

# Set permissions
chown root:wheel "${EXES[@]}" "${SUID_EXES[@]}"
chmod 755 "${EXES[@]}"
chmod 6755 "${SUID_EXES[@]}"

exit 0
