#!/usr/bin/env bash
_scriptname="writeIMG"
set -e
set -u
image="sensio_CG3_3-2.img.gz"
tools=(
	kpartx
	klibc-utils
)

function println { printf '%s\n' "$*"; }
function error { println "Error: $*" >&2; }
function step { println "==> $*"; }

################################################################################
# Check Paritions                                                              #
################################################################################
step "Checking for existing partitions"
dev=$(lsblk | grep -B2 sd[a-b]2 | head -n1 | awk '{ print $1 }')
partitionC=$(lsblk | grep "$dev" | tail -n+2 | wc -l)


if (( $partitionC > 0 )) && ! [[ -z $dev ]]; then
	step "Paritions found. Cleaning..."
	str="d\n\n"
	for ((i=1;i<$partitionC;i++)); do
		if (( $partitionC > 1 )) && (( $i != $partitionC )); then
			str="${str}d\n\n"
		else
			str="${str}d\n"
		fi
	done
	str="${str}w\n\nq\n"
	echo -e "$str" | fdisk "/dev/$dev" >/dev/null 2>&1
fi

################################################################################
# Write image                                                                  #
################################################################################
step "Checking for image"
if [[ -f $image ]]; then
	step "Writing image"
	if gunzip <$image | pv >/dev/sda; then
		step "Checking partitions"
		dev=$(lsblk | grep -B2 sda2 | head -n1 | awk '{ print $1 }')
		partitionC=$(lsblk | grep "$dev" | tail -n+2 | wc -l)
		(( $partitionC == 2 )) && println "Paritions OK"
	else
		error "Failed to flash image"
		exit 1
	fi
else
	error "Image file not found"
	exit 1
fi

################################################################################
# Reboot                                                                       #
################################################################################

step "Rebooting in 1 minute"
shutdown -r 10
