#!/bin/bash
# dib-lint: disable=dibdebugtrace

set -exu
set -o pipefail

root_dev=$(df -P / | tail -n 1 | awk '/.*/ { print $1 }')

if [ -z "${root_dev}" ]; then
    echo "*** Root device not found?"
    exit 1
fi

udev_root=$(udevadm info --query=all --name $root_dev)

part=$(grep ID_PART_ENTRY_DISK <<< "${udev_root}" | cut -d= -f2)
if [ -z "${part}" ]; then
    echo "*** Root partition not found!"
    exit 1
fi
part_no=$(grep ID_PART_ENTRY_NUMBER <<< "${udev_root}" | cut -d= -f2)
if [ -z "${part_no}" ]; then
    echo "*** Root partition number not found!"
    exit 1
fi

disk=$(find /sys/dev/block -name ${part})
disk="/dev/$(source ${disk}/uevent; echo $DEVNAME)"

set +e
growpart $disk $part_no
# Error code 1 means no change
if [ "$?" -le 1 ]; then
    # always return true because this might not work if were are non ext4
    resize2fs $root_dev || true
fi
