# vim: filetype=sh

do_part_probe() {
	partx -u ${1} \
		|| partprobe ${1}
	sleep 1
}

do_repart() {
	local DISK=${1}
	local SWAP_SIZE=${2}

	PNUM=$(lsblk -no PARTN ${ROOTPART})
	if [ -z $PNUM ]; then
		PNUM=$(echo ${ROOTPART} | grep -oE '[0-9]+$')
	fi

	TOTAL_SECTORS=$(($(lsblk -dbno SIZE ${DISK}) / 512))

	ROOT_START=$(lsblk -no START ${ROOTPART})
	ROOT_SECTORS=$((TOTAL_SECTORS - ROOT_START))

	if [ ! -z ${SWAP_SIZE} ]; then
		SWAP_SECTORS=$(($(numfmt --from=iec ${SWAP_SIZE}) / 512))
		ROOT_SECTORS=$((TOTAL_SECTORS - ROOT_START - SWAP_SECTORS))
		SWAP_START=$((ROOT_START + ROOT_SECTORS))
	fi

	echo ",${ROOT_SECTORS}," \
		| sfdisk --force --no-reread ${DISK} -N ${PNUM}

	if [ ! -z ${SWAP_SIZE} ]; then
		echo "${SWAP_START},,82" \
			| sfdisk --force --no-reread --append ${DISK}
	fi

	do_part_probe ${DISK}

	if [ ! -z ${SWAP_SIZE} ]; then
		SWAPPART=$(lsblk -lno NAME --paths ${DISK} | tail -1)
	fi

	resize2fs ${ROOTPART}
}

do_setup_ssh() {
	echo "Re-initializing SSH host keys and access configuration..."
	rm -f /etc/ssh/ssh_host* \
		&& ssh-keygen -A

	echo "Applying ODROID-specific SSH overrides..."

	local SSH_DROPIN="/etc/ssh/sshd_config.d/99-odroid.conf"

	mkdir -p /etc/ssh/sshd_config.d/
	cat>${SSH_DROPIN}<<__EOF
# Created by odroid-firstboot for easy remote access
PasswordAuthentication yes
__EOF
	chmod 644 ${SSH_DROPIN}
}

do_swap_on() {
	local UUID=${1}
	[ -z ${UUID} ]&& UUID=$(uuidgen)

	echo "Initializing swap on ${SWAPPART}..."
	mkswap --force ${SWAPPART}
	mkswap --uuid ${UUID} ${SWAPPART}

	sed -i "/swap/d" /etc/fstab

	printf "UUID=\"%s\"\tnone\tswap\tsw\t0\t0\n" \
		${UUID} >> /etc/fstab

	swapon -a
}

