#!/bin/bash
#
# SPDX-License-Identifier: GPL-2.0+
#

function get_devname() {
    lsblk -rno MAJ:MIN,KNAME | while read majmin kname; do
        if [ "$majmin" = "$1" ]; then
            echo "$kname"
            return 0
        fi
    done

    return 1
}

ROOT_DEVICE=$(df / | tail -n1 | cut -f1 -d ' ')
ROOT_TYPE=$(lsblk $ROOT_DEVICE -no TYPE)
if [ "$ROOT_TYPE" != "part" ] ; then
    echo "Rootfs not on a partition"
    exit 0
fi

ROOT_MAJMIN=$(lsblk $ROOT_DEVICE -no MAJ:MIN | tr -d ' ')
PARENT_MAJMIN=$(cd -P /sys/dev/block/$ROOT_MAJMIN/; cd ..; cat dev)
PARENT_DEVICE=/dev/$(get_devname $PARENT_MAJMIN)

DISK=$PARENT_DEVICE
# Hack alert: We assume the rootfs is on a single-digit partition number
PART="${ROOT_DEVICE: -1}"

set -e

# Grow root partition
growpart $DISK $PART

if [ -d /.snapshots ]; then  # btrfs
    btrfs filesystem resize max /.snapshots
else                         # ext4
    resize2fs $ROOT_DEVICE

    # Create swap file
    fallocate -l 500M /swap
    fallocate -l 500M -z /swap
    chmod 0600 /swap
    mkswap /swap
    echo '/swap swap swap defaults 0 0' >> /etc/fstab
    swapon -a
fi

systemctl disable JeOS-firstboot || true
