#!/bin/bash

# Verificamos los argumentos:
help() {
    echo "#> ${0}: Visor CSV para terminal basado en column"
    echo ">> Opcionalmente pasar parámetros para indicar que deseamos hacer:"
    echo -e "\t'-d': Delimitador. Caracter delimitador del CSV (por defecto una coma ',')"
    echo -e "\t'-f': File. Fichero a mostrar"
    echo "#> Uso: $0 [-d ;] [-f fichero] [fichero]"
    echo -e "Ej. ${0} '-d' ';' -f /tmp/fichero.csv"
    exit 1
}

function check_exit_fichero() {
    [[ ! -f "$FICHERO" ]] && \
    echo "Error: El archivo '$FICHERO' no existe." && \
    help
}

[[ "${#}" == 0 || "${1}" == "-h" || "${1}" == "--help" ]] && help

DELIMITADOR=","
while getopts :hd:f: OPT; do
    case "${OPT}" in
        d) DELIMITADOR="${OPTARG}" ;;
        f) FICHERO="${OPTARG}"
        check_exit_fichero ;;
        \?) help ;;
        :) help ;;
        h | *) help ;;
    esac
done

if [[ ! "${FICHERO}" ]] ; then
    FICHERO="${1}"
    check_exit_fichero
fi

column -t -s"${DELIMITADOR}" "${FICHERO}" | less -S