#!/bin/bash
# Para que aborte en el caso de detectar algún fallo:
set -euo pipefail

# Disco donde está montada la raíz
## En vx-dga-c-ocs-debian-live:
## DESTINO="$(lsblk -ndo NAME,TYPE | grep disk | sort | head -n1 | awk '{print "/dev/"$1}')"
DESTINO_NAME="$(lsblk -no PKNAME "$(findmnt -n -o SOURCE /)" | head -n1)"
DESTINO="/dev/${DESTINO_NAME}"
PART_SISTEMA="$(lsblk -o NAME,FSTYPE -n -P "${DESTINO}" | awk -F'"' '/FSTYPE="ext4"/ {print "/dev/" $2}')"
PART_NUM="$(echo "${PART_SISTEMA}" | grep -o '[0-9]*$')"

echo "#> Disco destino: ${DESTINO}"
echo "#> Partición del sistema: ${PART_SISTEMA} (nº ${PART_NUM})"

# 1) Reubicar cabecera GPT de respaldo (solo si GPT)
PART_TABLE="$(blkid -p -s PTTYPE -o value "${DESTINO}" || true)"
if [ "${PART_TABLE}" = "gpt" ]; then
    echo "#> Moviendo cabecera GPT de respaldo al final del disco"
    sgdisk -e "${DESTINO}"
    sync
fi

# 2) Extender la partición
echo "#> Extendiendo la partición ${PART_NUM}"
## En vx-dga-c-ocs-debian-live:
## growpart hace lo mismo que gparted supuestamente de una manera más limpia:
## parted --script "${DESTINO}" resizepart "${PART_NUM}" 100%
growpart "${DESTINO}" "${PART_NUM}" || parted --script "${DESTINO}" resizepart "${PART_NUM}" 100%
sync

# 3) Extender el sistema de archivos
echo "#> Comprobando y extendiendo el sistema de archivos ext4"
e2fsck -fy "${PART_SISTEMA}"
resize2fs "${PART_SISTEMA}"
sync

echo "#> ¡Redimensionado completado con éxito!"

exit 0