#!/bin/bash
#~ set -e

RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
LT_BLUE='\033[0;34m'

NC='\033[0m' # No Color

repo="https://f-droid.org/repo/"
repo2="https://bubu1.eu/fdroid/repo/"
repo3="https://fdroid.tetaneutral.net/fdroid/repo/"
repo4="https://mirror.cyberbits.eu/fdroid/repo/"
repo5="https://ftp.fau.de/fdroid/repo/"
repo6="https://ftp.osuosl.org/pub/fdroid/repo/"
repo7="https://mirror.scd31.com/fdroid/repo/"
repo8="https://plug-mirror.rcac.purdue.edu/fdroid/repo/"
repo9="https://mirrors.tuna.tsinghua.edu.cn/fdroid/repo/"
repo10="https://mirrors.nju.edu.cn/fdroid/repo/"
repo11="https://mirror.kumi.systems/fdroid/repo/"
repo12="https://ftp.lysator.liu.se/pub/fdroid/repo/"
repo13="https://mirror.librelabucm.org/fdroid/repo/"

microg="https://microg.org/fdroid/repo"
microg_dir="tmp/microg"

nanolx="https://nanolx.org/fdroid/repo"
nanolx_dir="tmp/nanolx"

newpipe="https://archive.newpipe.net/fdroid/repo/"
newpipe_dir="tmp/newpipe"

# Device type selection	
if [ "$1" == "" ]; then
PS3='Which device type do you plan on building?: '
echo -e ${YELLOW}"(default is 'ABI:x86_64 & ABI2:x86')"
TMOUT=10
options=("ABI:x86_64 & ABI2:x86"
		 "ABI:arm64-v8a & ABI2:armeabi-v7a"
		 "ABI:x86")
echo -e "Timeout in $TMOUT sec."${NC}
select opt in "${options[@]}"
do
	case $opt in
		"ABI:x86_64 & ABI2:x86")
			echo "you chose choice $REPLY which is $opt"
			MAIN_ARCH="x86_64"
			SUB_ARCH="x86"	
			break
			;;
		"ABI:arm64-v8a & ABI2:armeabi-v7a")
			echo "you chose choice $REPLY which is $opt"
			MAIN_ARCH="arm64-v8a"
			SUB_ARCH="armeabi-v7a"
			break
			;;
		"ABI:x86")
			echo "you chose choice $REPLY which is $opt"
			MAIN_ARCH="x86"
			break
			;;
		*) echo "invalid option $REPLY";;
	esac
done
if [ "$opt" == "" ]; then
	MAIN_ARCH="x86_64"
	SUB_ARCH="x86"	
fi
fi

if [ "$1" == "1" ]; then
	echo "ABI:x86_64 & ABI2:x86 was preselected"
	MAIN_ARCH="x86_64"
	SUB_ARCH="x86"	
fi
if [ "$1" == "2" ]; then
	echo "ABI:arm64-v8a & ABI2:armeabi-v7a was preselected"
	MAIN_ARCH="arm64-v8a"
	SUB_ARCH="armeabi-v7a"
fi
if [ "$1" == "3" ]; then
	echo "ABI:x86 & ABI2:x86 was preselected"
	MAIN_ARCH="x86"
fi

addCopy() {
	addition=""
	if [ "$native" != "" ]
	then
		unzip bin/$1 "lib/*"
		if [ "$native" == "$MAIN_ARCH" ];then
			addition="
LOCAL_PREBUILT_JNI_LIBS := \\
$(unzip -olv bin/$1 |grep -v Stored |sed -nE 's;.*(lib/'"$MAIN_ARCH"'/.*);\t\1 \\;p')
			"
		fi
		if [ "$native" == "$SUB_ARCH" ];then
			addition="
LOCAL_MULTILIB := 32
LOCAL_PREBUILT_JNI_LIBS := \\
$(unzip -olv bin/$1 |grep -v Stored |sed -nE 's;.*(lib/'"$SUB_ARCH"'/.*);\t\1 \\;p')
			"
		fi
	fi
    if [ "$2" == com.google.android.gms ] || [ "$2" == com.android.vending ] ;then
        addition="LOCAL_PRIVILEGED_MODULE := true"
    fi
cat >> Android.mk <<EOF
include \$(CLEAR_VARS)
LOCAL_MODULE := $2
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := bin/$1
LOCAL_MODULE_CLASS := APPS
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_OVERRIDES_PACKAGES := $3
$addition
include \$(BUILD_PREBUILT)

EOF
echo -e "\t$2 \\" >> apps.mk
}

echo -e "${LT_BLUE}# Setting Up${NC}"
rm -Rf apps.mk lib
cat > Android.mk <<EOF
LOCAL_PATH := \$(my-dir)

EOF
echo -e 'PRODUCT_PACKAGES += \\' > apps.mk

mkdir -p bin

#downloadFromFdroid packageName overrides
downloadFromFdroid() {
	mkdir -p tmp
    [ "$oldRepo" != "$repo" ] && rm -f tmp/index.xml
    oldRepo="$repo"
	if [ ! -f tmp/index.xml ];then
		#TODO: Check security keys
		failed_count=0
		array=( $repo $repo2 $repo3 $repo4 $repo5 $repo6 $repo7 $repo8 $repo9 $repo10 $repo11 $repo12 $repo13 )
		for url in $repo $repo2 $repo3 $repo4 $repo5 $repo6 $repo7 $repo8 $repo9 $repo10 $repo11 $repo12 $repo13 ; do
			echo -e "${GREEN}# Trying: $url ${NC}"
			if wget --connect-timeout=10 --tries=2 ${url}index.jar -O tmp/index.jar; then
				unzip -p tmp/index.jar index.xml > tmp/index.xml
				echo -e "${GREEN}# Downloaded from $url ${NC}"
				failed=
				repo=${url}
				passed=true
				break
			elif [ "$failed" ]; then
				echo -e "${YELLOW}# $url broken ${NC}"
				failed=true
				failed_count=$((failed_count+1))
			else
				echo -e "${YELLOW}# $url failed ${NC}"
				failed=true
				failed_count=$((failed_count+1))
			fi
			
		done
		echo -e "${Yellow}# Total mirrors: ${#array[@]} ${NC}"
		echo -e "${RED}# Failed $failed_count mirrors ${NC}"
		if [ "$failed_count" == "${#array[@]}" ]; then
			echo -e "${RED}# Failed too many mirrors: $failed_count ${NC}"
			exit
			
		fi
	fi
	
	index=1
	apk="$(xmlstarlet sel -t -m '//application[id="'"$1"'"]/package['$index']' -v ./apkname tmp/index.xml)"
	native="$(xmlstarlet sel -t -m '//application[id="'"$1"'"]/package['$index']' -v ./nativecode tmp/index.xml)"
	if [ "$native" != "" ]
	then
		index=1
		while true
		do
			apk="$(xmlstarlet sel -t -m '//application[id="'"$1"'"]/package['$index']' -v ./apkname tmp/index.xml)"
			native="$(xmlstarlet sel -t -m '//application[id="'"$1"'"]/package['$index']' -v ./nativecode tmp/index.xml)"
			if [ "$native" != "" ] && [ "$(echo $native | grep $MAIN_ARCH)" != "" ]
			then
				native=$MAIN_ARCH
				echo -e "${YELLOW}# native is $native ${NC}"
				break
			fi
			if [ "$native" == "" ]
			then
				echo -e "${YELLOW}# native is blank or $native ${NC}"
				break
			fi
			index=$((index + 1))
		done
		if [ "$native" != "$MAIN_ARCH" ]
		then
			index=1
			while true
			do
				apk="$(xmlstarlet sel -t -m '//application[id="'"$1"'"]/package['$index']' -v ./apkname tmp/index.xml)"
				native="$(xmlstarlet sel -t -m '//application[id="'"$1"'"]/package['$index']' -v ./nativecode tmp/index.xml)"
				if [ "$native" != "" ] && [ "$(echo $native | grep $SUB_ARCH)" != "" ]
				then
					native=$SUB_ARCH
					echo -e "${YELLOW}# native is $native ${NC}"
					break
				fi
				index=$((index + 1))
			done
			if [ "$native" != "$SUB_ARCH" ]
			then
				echo -e "${RED} $1 is not available in $MAIN_ARCH nor $SUB_ARCH ${NC}"
				exit 1
			fi
		fi
	fi
    if [ ! -f bin/$apk ];then
        while ! wget --connect-timeout=10 $repo/$apk -O bin/$apk;do sleep 1;done
    else
		echo -e "${GREEN}# Already grabbed $apk ${NC}"
    fi
	addCopy $apk $1 "$2"
}

downloadStuff() {
	    what="$1"
		where="$2"
		
		while ! wget --connect-timeout=10 --tries=2 "$what" -O "$where";do sleep 1;done
}

#downloadFromRepo repo repo_dir packageName overrides
downloadFromRepo() {
		repo="$1"
		repo_dir="$2"
		package="$3"
		overrides="$4"
				
		mkdir -p "$repo_dir"
	if [ ! -f "$repo_dir"/index.xml ];then
		downloadStuff "$repo"/index.jar "$repo_dir"/index.jar
		unzip -p "$repo_dir"/index.jar index.xml > "$repo_dir"/index.xml
	fi
	
		marketvercode="$(xmlstarlet sel -t -m '//application[id="'"$package"'"]' -v ./marketvercode "$repo_dir"/index.xml || true)"
		apk="$(xmlstarlet sel -t -m '//application[id="'"$package"'"]/package[versioncode="'"$marketvercode"'"]' -v ./apkname "$repo_dir"/index.xml || xmlstarlet sel -t -m '//application[id="'"$package"'"]/package[1]' -v ./apkname "$repo_dir"/index.xml)"
		downloadStuff "$repo"/"$apk" bin/"$apk"

		addCopy "$apk" "$package" "$overrides"
}


echo -e "${YELLOW}# grabbing F-Droid Apps${NC}"
# Terminal Emulator
#~ downloadFromFdroid com.termoneplus
#Navigation
#~ downloadFromFdroid net.osmand.plus
#Calendar
downloadFromFdroid ws.xsoh.etar "Calendar"
#Pdf viewer
#~ downloadFromFdroid com.artifex.mupdf.viewer.app
# Aurora App Store
downloadFromFdroid com.aurora.store
#Mail client
#~ downloadFromFdroid com.fsck.k9 "Email"
#Calendar/Contacts sync
downloadFromFdroid com.etesync.syncadapter
# Todo lists
#~ downloadFromFdroid org.tasks
#Fake assistant that research on duckduckgo
downloadFromFdroid co.pxhouse.sas
# Gallery App
downloadFromFdroid com.simplemobiletools.gallery.pro "Photos Gallery Gallery2"
# Aurora Fdroid
downloadFromFdroid com.aurora.adroid
# F-Droid App Store
#~ downloadFromFdroid org.fdroid.fdroid
#fdroid extension
downloadFromFdroid org.fdroid.fdroid.privileged
#Phonograph
#~ downloadFromFdroid com.kabouzeid.gramophone "Eleven"
#Alarmio
 downloadFromFdroid me.jfenn.alarmio "GoogleClock DeskClock"
#Mozilla Nlp
downloadFromFdroid org.microg.nlp.backend.ichnaea
#Nominatim Nlp
downloadFromFdroid org.microg.nlp.backend.nominatim
# EtchDroid USB Writer
#~ downloadFromFdroid eu.depau.etchdroid
# NewPipe (outdated)
downloadFromFdroid org.schabi.newpipe

#  Astian Apps
# Midori Browser
downloadFromFdroid org.midorinext.android "Browser2 QuickSearchBox"
# Astian Spika
# downloadFromFdroid org.astianspika.android
# Astian Cloud
# downloadFromFdroid org.astiancloud.android
# Astian VPN
# downloadFromFdroid org.astianvpn.android

#Web browser
#~ downloadFromFdroid org.mozilla.fennec_fdroid "Browser2 QuickSearchBox"
#icecat 
#~ downloadFromFdroid org.gnu.icecat "Browser2 QuickSearchBox"
#Public transportation
#~ downloadFromFdroid de.grobox.liberario
#Ciphered Instant Messaging
#downloadFromFdroid im.vector.alpha
#Nextcloud client
#~ downloadFromFdroid com.nextcloud.client
# Social Media Apps
#~ downloadFromFdroid org.mariotaku.twidere
#~ downloadFromFdroid com.pitchedapps.frost
#~ downloadFromFdroid com.keylesspalace.tusky

echo -e "${YELLOW}# grabbing MicroG Apps${NC}"
downloadFromRepo "$microg" "$microg_dir" com.google.android.gms
downloadFromRepo "$microg" "$microg_dir" com.google.android.gsf
downloadFromRepo "$microg" "$microg_dir" com.android.vending "Google Play Store"
downloadFromRepo "$microg" "$microg_dir" org.microg.gms.droidguard

echo -e "${YELLOW}# grabbing NanoLX Apps${NC}"
downloadFromRepo "$nanolx" "$nanolx_dir" is.xyz.mpv

#~ echo -e "${YELLOW}# grabbing NewPipe ${NC}"
#~ downloadFromRepo "$newpipe" "$newpipe_dir" org.schabi.newpip

echo -e "${LT_BLUE}# finishing up apps.mk${NC}"
echo >> apps.mk

echo -e "${YELLOW}# Cleaning up${NC}"
rm -Rf tmp

echo -e "${GREEN}# DONE${NC}"
