#!/bin/bash -e
#
# (c) Joel Fernandes <joel@joelfernandes.org>

VERSION=v0.99e

spath="$(dirname "$(readlink -f "$0")")"
# spath=$( cd "$(dirname "$0")" ; pwd -P )
curdir=$( pwd -P )
source $spath/utils/support
source $spath/utils/banners

# Set default vars
DISTRO=buster; ARCH=arm64
ADB="adb"
SKIP_DEVICE=0			# Skip device preparation
INSTALL_BCC=0			# Decide if BCC is to be installed

# Default packages
DEFAULT_PACKAGES+="bash
ca-certificates"

EXTRA_FILES="none"

config_full_build() {
	for f in $(ls $spath/packages); do source $spath/packages/$f; done;
}

# Parse command line parameters
if [ $# -lt 1 ]; then usage; fi; POSITIONAL=()
while [[ $# -gt 0 ]]; do key="$1";

# If its shell mode, any future args become shell's args
if [ "x$ASHELL" == "x1" ]; then
	if [ -z "$SHELL_ARGS" ]; then
		SHELL_ARGS=$key
	else
		SHELL_ARGS="$SHELL_ARGS $key"
	fi
	shift || true; continue
fi

case $key in
    prepare) PREPARE=1;  shift || true;    ;;
    shell) ASHELL=1;     shift || true;     ;;
    remove) REMOVE=1;     shift || true;     ;;
    git-pull) GIT_PULL=1; shift || true; ;;
    pull) PULL=1; shift || true; break	;;
    push) PUSH=1; shift || true; break	;;
    --arch) ARCH=$2; shift || true; shift || true; ;;
    --archive) TARF=$2; shift || true; shift || true; ;;
    --tracers) source $spath/packages/tracers; shift || true; ;;
    --compilers) source $spath/packages/compilers; shift || true; ;;
    --editors) source $spath/packages/editors; shift || true; ;;
    --scheduler) source $spath/packages/scheduler; shift || true; ;;
    --fullbuild) config_full_build; shift || true; ;;
    --download) DOWNLOAD=1; shift || true; ;;
    --bcc) source $spath/packages/bcc; shift || true;     ;;
    --kernelsrc) KERNELSRC="$2"; shift || true;     shift || true;     ;;
    --skip-install) SKIP_INSTALL=1; shift || true; ;;
    --kernel-headers-targz) KERNELHDRS=$2; shift || true;	shift || true;	;;
    --tempdir) TDIR="$2"; shift || true;     shift || true;     ;;
    --buildtar) BTAR=1; TARDIR="$2"; shift || true;     shift || true;     ;;
    --device|-s) ADB="$ADB -s $2"; shift || true; shift || true; ;;
    --build-image) BI=1; BUILD_IMAGEF=$2; SKIP_DEVICE=1; shift || true; shift || true; ;;
    --debug) set -x; shift || true; ;;
    *) c_error "Unknown option ($1)"; usage; ;;
esac
done

[ -z $ASHELL ] && box_out "androdeb: $VERSION"

if [ ! -z $BTAR ] && [ -z $TARDIR ]; then
	TARDIR=$spath
fi

if [ ! -z "$GIT_PULL" ]; then
	c_info "Updating androdeb by git pull"
	cd $spath
	git pull
	c_info "Done."
	exit 0
fi

if [ ! -z "$PULL" ]; then
	if [ $1 == "-a" ]; then
		PRESERVE="-a"
		c_info "Preserving filestamps and mode"
		shift || true
	fi
	file_count=`count_sources $@`
	i=0
	while [ $i -lt $file_count ]; do
		files["$i"]=/data/androdeb/debian/$1
		shift || true
		i=$((i + 1))
	done
	$ADB pull $PRESERVE "${files[@]}" "$@"
	exit 0
fi

if [ ! -z "$PUSH" ]; then
	file_count=`count_sources $@`
	i=0
	while [ $i -lt $file_count ]; do
		files["$i"]=$1
		shift || true
		i=$((i + 1))
	done
	dest=/data/androdeb/debian/$1
	$ADB push $sync "${files[@]}" $dest
	exit 0
fi

if [ -z "$ASHELL" ] && [ -z "$REMOVE" ] && [ -z "$PACKAGES" ]; then
	c_info "No packages specified, so I'm going to build/install all packages (--fullbuild)"
	config_full_build
fi

if [[ ! -z ${TARDIR+x} ]] && [[ ! -d $TARDIR ]]; then die 7 "Tar dir specified doesn't exist"; fi

if [ -z $BI ]; then
	[ -z $ASHELL ] && c_info "Looking for device.."
	do_adb_root "$ADB"

	if [ $? -ne 0 ]; then
		c_error "adb root failed, make sure:"
		c_error " * If multiple devices connected, provide --device <serialno>  (or -s <serialno>)"
		c_error " * Try to run \"adb root\" manually and see if it works. Typically this needs a userdebug build."
		c_error ""
		c_error "Note: adb can be typically obtained using the android-tools-adb or the adb"
		c_error "packages on your distro, or by installing the Android SDK."
		die 3 "Exiting."
	fi
else
	[ ! -z $BUILD_IMAGEF ] || die 8 "--build-image passed but no image file provided"
fi

if [ ! -z "$REMOVE" ]; then
	die_if_no_androdeb "Nothing to remove."
	$ADB shell /data/androdeb/device-umount-all || true;
	$ADB shell rm -rf /data/androdeb; exit 0; fi

##########################################################
#  SHELL
##########################################################
if [ ! -z ${ASHELL+x} ]; then
	set +e; $ADB shell ls /data/androdeb/debian/.bashrc > /dev/null 2>&1
	if [ $? -ne 0 ]; then
	   die 2 "Device doesn't have an androdeb environment, run \"./androdeb prepare\" first";
	fi; set -e

	if [ ! -z ${SHELL_ARGS+x} ]; then
		# Explanation of quotes:
		# Outer quote is so that androdeb's bash passes the SHELL_ARGS as a single
		# argument to $ADB shell. Inner quotes is so that run-command can receive all
		# the args even though they may be separated by spaces. \m/
		$ADB shell -t /data/androdeb/run-command "\"$SHELL_ARGS\""
	else
		$ADB shell -t /data/androdeb/run
	fi

	exit 0
fi

##########################################################
#  PREPARE 
##########################################################

function do_cleanup() {
	rm -rf $TDIR/*; if [ $MKTEMP -eq 1 ]; then rm -rf $TDIR; fi
}

function push_unpack_headers() {
	die_if_no_androdeb "Couldn't update headers."

	c_info "Storing kernel headers into androdeb /kernel-headers/"
	$ADB shell rm -rf /data/androdeb/debian/kernel-headers/
	$ADB shell mkdir  /data/androdeb/debian/kernel-headers/
	run_quiet $ADB push $TDIR_ABS/kh.tgz /data/androdeb/
	$ADB shell tar -xvf /data/androdeb/kh.tgz -C /data/androdeb/debian/kernel-headers/ > /dev/null
	$ADB shell rm /data/androdeb/kh.tgz
}

function push_unpack_tarred_headers() {
	die_if_no_androdeb "Couldn't update headers."

	$ADB shell rm -rf /data/androdeb/debian/kernel-headers/
	$ADB shell mkdir  /data/androdeb/debian/kernel-headers/

	c_info "Pushing headers tar onto device"
	run_quiet $ADB push $1 /data/androdeb/

	c_info "Storing kernel headers into androdeb root directory"
	$ADB shell tar -xvf /data/androdeb/$(basename $1) -C /data/androdeb/debian/ > /dev/null

	$ADB shell rm /data/androdeb/$(basename $1)
}

function all_done_banner() {
	c_info "All done! Run \"androdeb shell\" to enter environment"
}

# Prepare is the last command checked
if [ -z "$PREPARE" ]; then usage; fi

if [ ! -z "$TARF" ] && [ ! -f $TARF ] && [ -z "$DOWNLOAD" ]; then die 5 "archive provided doesn't exist"; fi

if [ ! -z "$KERNELSRC" ] && [ ! -d $KERNELSRC ]; then die 6 "Kernel source directory provided doesn't exist"; fi

if [ ! -z "$KERNELHDRS" ] && [ ! -f $KERNELHDRS ]; then die 7 "Kernel headers tar.gz doesn't exist"; fi

print_prepare_banner

# Where do we want to store temporary files
MKTEMP=0; if [[ -z ${TDIR+x} ]]  || [[ ! -d "${TDIR}" ]]; then
	TDIR=`mktemp -d`; MKTEMP=1; fi
rm -rf $TDIR/*
TDIR_ABS=$( cd "$TDIR" ; pwd -P )

if [ ! -z "$DOWNLOAD" ]; then
   c_info "Downloading Androdeb from the web..."; c_info ""
   # Github dropped tar gz support! ##?#??#! Now we've to zip everything.
   curl -L https://github.com/joelagnel/androdeb/releases/download/$VERSION/androdeb-fs.tgz.zip --output $TDIR_ABS/androdeb-fs.tgz.zip;
   unzip -e $TDIR_ABS/androdeb-fs.tgz.zip -d $TDIR_ABS/
   TARF=$TDIR_ABS/androdeb-fs.tgz; fi

OUT_TMP=$TDIR/debian; rm -rf $OUT_TMP; mkdir -p $OUT_TMP

# Unpack the supplied kernel headers tar.gz directly into androdeb root
if [ ! -z "$KERNELHDRS" ]; then
	c_info "Building updating kernel headers from supplied tar.gz ($KERNELHDRS)"

	# Is header tar gz update the only thing left to do?
	if [[ ! -z "$SKIP_INSTALL" ]]; then
		c_info "Skipping install"
		push_unpack_tarred_headers $KERNELHDRS; do_cleanup; all_done_banner; exit 0; fi

	tar -xvf $KERNELHDRS -C $OUT_TMP/ > /dev/null
fi

# Package kernel headers
if [ ! -z "$KERNELSRC" ]; then
	c_info "Building and updating kernel headers from kernel source dir ($KERNELSRC)"
	$spath/bcc/build-kheaders-targz.sh ${KERNELSRC} $TDIR_ABS/kh.tgz > /dev/null

	# Is header update the only thing left to do?
	if [[ ! -z "$SKIP_INSTALL" ]]; then
		c_info "Skipping install"
		push_unpack_headers; do_cleanup; all_done_banner; exit 0; fi

	mkdir $OUT_TMP/kernel-headers
	tar -xvf $TDIR_ABS/kh.tgz -C $OUT_TMP/kernel-headers/ > /dev/null
fi

# Build FS from existing tar, very simple.
if [ ! -z "$TARF" ]; then
	c_info "Using archive at $TARF for filesystem preparation"
	$ADB shell mkdir -p /data/androdeb/

	c_info "Pushing filesystem to device.."
	run_quiet $ADB push $TARF /data/androdeb/deb.tar.gz

	c_info "Pushing addons to device.."
	run_quiet $ADB push $spath/addons/* /data/androdeb/

	c_info "Unpacking filesystem in device.."
	run_quiet $ADB shell /data/androdeb/device-unpack

	if [ ! -z "$KERNELHDRS" ]; then push_unpack_tarred_headers $KERNELHDRS; fi
	if [ ! -z "$KERNELSRC" ]; then push_unpack_headers; fi

	do_cleanup; all_done_banner; exit 0
fi

PACKAGES+="$DEFAULT_PACKAGES"
c_info "Using temporary directory: $TDIR"

if [[ $EUID -ne 0 ]]; then c_info "The next stage runs as sudo, please enter password if asked."; fi

ex_files=$(mktemp); echo $EXTRA_FILES > $ex_files

sudo $spath/buildstrap $ARCH $DISTRO $TDIR $OUT_TMP \
		"$(make_csv "$PACKAGES")"\
		$ex_files $INSTALL_BCC $SKIP_DEVICE
rm $ex_files

# If we only wanted to prepare a rootfs and don't have
# a device connected, then just echo that and skip cleanup
if [ $SKIP_DEVICE -eq 1 ]; then
	c_info "Device preparation is being skipped for the selected options"
	c_info "any builds that need to happen on device may be cloned but not built."

	if [ ! -z $BI ]; then
		sudo $spath/buildimage $OUT_TMP $(dirname $BUILD_IMAGEF)/$(basename $BUILD_IMAGEF)
		sudo chmod a+rw $(dirname $BUILD_IMAGEF)/$(basename $BUILD_IMAGEF)
		c_info "Your .img has been built! Enjoy!"
	fi

	do_cleanup
	exit 0
fi

# Push tar to device and start unpack
$ADB shell mkdir -p /data/androdeb/
$ADB push $TDIR/deb.tar.gz /data/androdeb/
$ADB push $spath/addons/* /data/androdeb/
$ADB shell /data/androdeb/device-unpack

# Build BCC and install bcc on device if needed
if [ $INSTALL_BCC -eq 1 ]; then
	$ADB shell /data/androdeb/run-command /bcc-master/build-bcc.sh;
fi

do_cleanup

# Extract a tar of the built, compiled and installed androdeb env
if [[ ! -z ${TARDIR+x} ]]; then
	c_info "Creating and pulling tarball of androdeb env from device"
	$ADB shell /data/androdeb/build-debian-tar
	$ADB pull /data/androdeb/androdeb-fs.tgz $TARDIR/
	$ADB shell rm /data/androdeb/androdeb-fs.tgz; fi

all_done_banner
