#!/bin/bash

# Obtener el tipo de tabla de particiones

find_part_type() {
    # blkid /dev/sda -o value | grep "^gpt$"
    if blkid "${1}" -o value | grep -q "^gpt$" ; then
        echo "gpt"
    else
        echo "msdos"
    fi
}

convert_to_grub_format() {
    local device="$1"
    # NVMe device || SATA device || error
    if [[ "$device" =~ ^(/dev/nvme)([0-9]+)(n[0-9]+)p([0-9]+)$ ]] ; then
        local disk_num="${BASH_REMATCH[2]}"
        local part_type="$(find_part_type "${BASH_REMATCH[1]}${disk_num}${BASH_REMATCH[3]}")"
        local part_num="${BASH_REMATCH[4]}"
        echo "Disco: ${BASH_REMATCH[1]}${disk_num}${BASH_REMATCH[3]}"
        elif [[ "$device" =~ ^(/dev/sd)([a-z])([0-9]+)$ ]] ; then
        local disk_num="${BASH_REMATCH[2]}"
        local part_type="$(find_part_type "${BASH_REMATCH[1]}${disk_num}")"
        local part_num="${BASH_REMATCH[3]}"
        echo "Disco: ${BASH_REMATCH[1]}${disk_num}"
    else
        echo "Problemas para detectar el disco"
        return 1
    fi
    echo "hd${disk_num},${part_type}${part_num}"
}

if [[ "${1}" ]] ; then
    # Uso del script
    #convert_to_grub_format "/dev/nvme0n1p2"
    #convert_to_grub_format "/dev/sda1"
    convert_to_grub_format "${1}"
else
    # grub-probe --target=device /boot | xargs -I{} /tmp/ej1 {}
    convert_to_grub_format "$(grub-probe --target=device /boot)"
fi