#!/sbin/sh

OUTFD=2
CONF_BACKUP="/data/media/0/nanodroid_backups/config_$(date +%Y%m%d-%H.%M.%S)"
VERSION=22.8.20200901

ui_print() {
	echo -n -e "ui_print $1\n" >> /proc/self/fd/$OUTFD
	echo -n -e "ui_print\n" >> /proc/self/fd/$OUTFD
}

is_mounted() {
	if [ ! -z "$2" ]; then
		cat /proc/mounts | grep $1 | grep $2, >/dev/null
	else
		cat /proc/mounts | grep $1 >/dev/null
	fi
	return $?
}

setup_add () {
	if grep -q "item.1.${1}=1" "${setup_prop}"; then
		ui_print "  <>> enable property: ${2}"
		echo "${2}=1" >> "${nanodroid_setup}"
	else
		ui_print "  <>> disable property: ${2}"
		echo "${2}=0" >> "${nanodroid_setup}"
	fi
}

apps_add () {
	if grep -q "item.1.${1}=1" "${apps_prop}"; then
		ui_print "  <>> mark for installation: ${2}"
		echo "${2}" >> "${nanodroid_apps}"
	fi
}

overlay_add () {
	if grep -q "item.1.${1}=1" "${debloat_prop}"; then
		ui_print "  <>> mark for debloating: ${2}"
		echo "${2}" >> "${nanodroid_overlay}"
	fi
}

aromapath="/tmp/aroma-data"
setup_prop="${aromapath}/setup.prop"
store_prop="${aromapath}/store.prop"
apps_prop="${aromapath}/apps.prop"
debloat_prop="${aromapath}/debloat.prop"
location_prop="${aromapath}/location.prop"
nlp_prop="${aromapath}/nlp.prop"
ug_prop="${aromapath}/ug.prop"
fd_prop="${aromapath}/fd.prop"
sh_prop="${aromapath}/shellutil.prop"
init_prop="${aromapath}/initd.prop"
sync_prop="${aromapath}/gsync.prop"

ui_print " "
ui_print "****************************"
ui_print " NanoDroid                  "
ui_print " Setup Wizard               "
ui_print " ${VERSION}                 "
ui_print "****************************"
ui_print " "

ui_print " > Creating Configuration files"

if (is_mounted /data); then
	mount -orw,remount /data >/dev/null
else	mount -orw /data >/dev/null
fi

if grep -q "selected.1=1" "${location_prop}"; then
	ui_print " > saving configuration in: /data/media/0"
	configpath="/data/media/0"
elif grep -q "selected.1=2" "${location_prop}"; then
	if [ -d "/external_sd" ]; then
		ui_print " > saving configuration in: /external_sd"
		configpath="/external_sd"
	elif [ -d "/sdcard1" ]; then
		ui_print " > saving configuration in: /sdcard1"
		configpath="/sdcard1"
	else
		ui_print " > saving configuration in: /data/media/0"
		configpath="/data/media/0"
	fi
elif grep -q "selected.1=3" "${location_prop}"; then
	ui_print " > saving configuration in: /data"
	configpath="/data"
fi

nanodroid_apps="${configpath}/.nanodroid-apps"
nanodroid_overlay="${configpath}/.nanodroid-overlay"
nanodroid_setup="${configpath}/.nanodroid-setup"

for setupfile in ${nanodroid_apps} ${nanodroid_overlay} ${nanodroid_setup}; do
	if [ -f ${setupfile} ]; then
		mkdir -p "${CONF_BACKUP}"
		mv "${setupfile}" "${CONF_BACKUP}"
	fi

	touch ${setupfile}
done

ui_print " "
ui_print " < Installer Configuration"

setup_add 1 nanodroid_apps
setup_add 2 nanodroid_overlay
setup_add 3 nanodroid_mapsv1
setup_add 4 nanodroid_forcesystem
setup_add 5 nanodroid_bash

if grep -q "selected.1=1" "${store_prop}"; then
	ui_print "  <>> setting property: nanodroid_play [None]"
	echo "nanodroid_play=00" >> "${nanodroid_setup}"
elif grep -q "selected.1=2" "${store_prop}"; then
	ui_print "  <>> setting property: nanodroid_play [Play Store]"
	echo "nanodroid_play=10" >> "${nanodroid_setup}"
elif grep -q "selected.1=3" "${store_prop}"; then
	ui_print "  <>> setting property: nanodroid_play [Aurora Store]"
	echo "nanodroid_play=20" >> "${nanodroid_setup}"
elif grep -q "selected.1=4" "${store_prop}"; then
	ui_print "  <>> setting property: nanodroid_play [Fake Store]"
	echo "nanodroid_play=01" >> "${nanodroid_setup}"
elif grep -q "selected.1=5" "${store_prop}"; then
	ui_print "  <>> setting property: nanodroid_play [Aurora + Fake Store]"
	echo "nanodroid_play=21" >> "${nanodroid_setup}"
elif grep -q "selected.1=6" "${store_prop}"; then
	ui_print "  <>> setting property: nanodroid_play [Play + Aurora Store]"
	echo "nanodroid_play=30" >> "${nanodroid_setup}"
fi

if grep -q "item.1.1=1" "${nlp_prop}"; then
	nlp_Dejavu=1
else	nlp_Dejavu=0
fi

if grep -q "item.1.2=1" "${nlp_prop}"; then
	nlp_Ichnaea=1
else	nlp_Ichnaea=0
fi

if grep -q "item.1.3=1" "${nlp_prop}"; then
	nlp_Apple=1
else	nlp_Apple=0
fi

if grep -q "item.1.4=1" "${nlp_prop}"; then
	nlp_Radiocell=1
else	nlp_Radiocell=0
fi

ui_print "  <<> nanodroid_nlpackend [Dejavu: ${nlp_Dejavu}|Ichnaea: ${nlp_Ichnaea}|Apple: ${nlp_Apple}|Radiocell: ${nlp_Radiocell}]"
echo "nanodroid_nlpbackend=${nlp_Dejavu}${nlp_Ichnaea}${nlp_Apple}${nlp_Radiocell}" >> "${nanodroid_setup}"

if grep -q "selected.1=1" "${ug_prop}"; then
	ui_print "  <>> setting property: nanodroid_microg [None]"
	echo "nanodroid_microg=0" >> "${nanodroid_setup}"
elif grep -q "selected.1=2" "${ug_prop}"; then
	ui_print "  <>> setting property: nanodroid_microg [Full]"
	echo "nanodroid_microg=1" >> "${nanodroid_setup}"
elif grep -q "selected.1=3" "${ug_prop}"; then
	ui_print "  <>> setting property: nanodroid_microg [Minimal]"
	echo "nanodroid_microg=2" >> "${nanodroid_setup}"
fi

if grep -q "selected.1=1" "${fd_prop}"; then
	ui_print "  <>> setting property: nanodroid_fdroid [None]"
	echo "nanodroid_fdroid=0" >> "${nanodroid_setup}"
elif grep -q "selected.1=2" "${fd_prop}"; then
	ui_print "  <>> setting property: nanodroid_fdroid [Official]"
	echo "nanodroid_fdroid=1" >> "${nanodroid_setup}"
elif grep -q "selected.1=3" "${fd_prop}"; then
	ui_print "  <>> setting property: nanodroid_fdroid [Aurora Droid]"
	echo "nanodroid_fdroid=2" >> "${nanodroid_setup}"
elif grep -q "selected.1=4" "${fd.prop}"; then
	ui_print "  <>> setting property: nanodroid_fdroid [Official + Aurora Droid]"
	echo "nanodroid_fdroid=3" >> "${nanodroid_setup}"
fi

if grep -q "item.1.1=1" "${sync_prop}"; then
	ui_print "  <<> setting property: nanodroid_gsync=1"
	echo "nanodroid_gsync=1" >> "${nanodroid_setup}"
else
	ui_print "  <<> setting property: nanodroid_gsync=0"
	echo "nanodroid_gsync=0" >> "${nanodroid_setup}"
fi

if grep -q "item.1.2=1" "${sync_prop}"; then
	ui_print "  <<> setting property: nanodroid_swipe=1"
	echo "nanodroid_swipe=1" >> "${nanodroid_setup}"
else
	ui_print "  <<> setting property: nanodroid_swipe=0"
	echo "nanodroid_swipe=0" >> "${nanodroid_setup}"
fi

i_scripts=""
grep -q "item.1.1=1" "${init_prop}" && i_scripts="${i_scripts} 10_sqlite"
grep -q "item.1.2=1" "${init_prop}" && i_scripts="${i_scripts} 20_fstrim"
grep -q "item.1.3=1" "${init_prop}" && i_scripts="${i_scripts} 30_logcat"
grep -q "item.1.4=1" "${init_prop}" && i_scripts="${i_scripts} 40_external_sd"
grep -q "item.1.5=1" "${init_prop}" && i_scripts="${i_scripts} 50_logscleaner"

ui_print "  <<> selected init scripts: ${i_scripts}"
echo "nanodroid_init=\"${i_scripts}\"" >> "${nanodroid_setup}"

s_utils=""
grep -q "item.1.1=1" "${sh_prop}" && s_utils="${s_utils} findfs"
grep -q "item.1.2=1" "${sh_prop}" && s_utils="${s_utils} findmnt"
grep -q "item.1.3=1" "${sh_prop}" && s_utils="${s_utils} hexdump"
grep -q "item.1.4=1" "${sh_prop}" && s_utils="${s_utils} lessecho"
grep -q "item.1.5=1" "${sh_prop}" && s_utils="${s_utils} lesskey"
grep -q "item.1.6=1" "${sh_prop}" && s_utils="${s_utils} lsblk"
grep -q "item.1.7=1" "${sh_prop}" && s_utils="${s_utils} lscpu"
grep -q "item.1.8=1" "${sh_prop}" && s_utils="${s_utils} lsipc"
grep -q "item.1.9=1" "${sh_prop}" && s_utils="${s_utils} lslocks"
grep -q "item.1.10=1" "${sh_prop}" && s_utils="${s_utils} lsns"
grep -q "item.1.11=1" "${sh_prop}" && s_utils="${s_utils} ncal"
grep -q "item.1.12=1" "${sh_prop}" && s_utils="${s_utils} whereis"

ui_print "  <<> selected shell utils: ${s_utils}"
echo "nanodroid_utils=\"${s_utils}\"" >> "${nanodroid_setup}"

ui_print " "
ui_print " < Installed Applications"

apps_add 1 Alarmio
apps_add 2 Amaze
apps_add 3 AnysoftKeyboard
apps_add 4 Blokada
apps_add 5 Frost
apps_add 6 HackersKeyboard
apps_add 7 K9Mail
apps_add 8 KeePassDX
apps_add 9 MPV
apps_add 10 NewPipe
apps_add 11 OAndBackupX
apps_add 12 Odyssey
apps_add 13 OpenCamera
apps_add 14 OpenKeyChain
apps_add 15 OpenLauncher
apps_add 16 OpenVPN
apps_add 17 TorBrowser
apps_add 18 PrivacyBrowser
apps_add 19 QKSMS
apps_add 20 SimpleCalendar
apps_add 21 SimpleGallery
apps_add 22 SmartPackKernelManager
apps_add 23 Termux
apps_add 24 Twidere
apps_add 25 XDALabs

ui_print " "
ui_print " < Debloated Applications"

overlay_add 1 BasicDreams
overlay_add 2 Browser
overlay_add 3 Calendar
overlay_add 4 Camera2
overlay_add 5 CMFileManager
overlay_add 6 DeskClock
overlay_add 7 Eleven
overlay_add 8 Email
overlay_add 9 Exchange2
overlay_add 10 FMRadio
overlay_add 11 Gallery2
overlay_add 12 Gello
overlay_add 13 Jelly
overlay_add 14 messaging
overlay_add 15 mGerrit
overlay_add 16 OmniSwitch
overlay_add 17 Phonograph
overlay_add 18 PhotoTable
overlay_add 19 Recorder
overlay_add 20 ResurrectionStats
overlay_add 21 Screencast
overlay_add 22 Slimperience
overlay_add 23 Snap
overlay_add 24 SnapdragonCamera
overlay_add 25 SoundRecorder
overlay_add 26 Stk
overlay_add 27 ViaBrowser
overlay_add 28 Wallpaper
overlay_add 29 WallpaperBackup
overlay_add 30 WallpaperPickerGoogle

ui_print " "
ui_print " >> Now flash the NanoDroid package of your choice!"
ui_print " "
ui_print " > Thanks for using NanoDroid"
ui_print " "
