#!/bin/bash
# lastact: [arturo@2024-2-29]
# desc: script que configura en los PPDs indicados lo necesario para hacer uso de códigos

FICHFUNCS="/usr/bin/vx-funcs-bash"
[ -f "${FICHFUNCS}" ] && . "${FICHFUNCS}" "null"

# 0) Comprobamos si se solicita ayuda y se muestra:
function printers_set_codusers_help() {
    DESCRIPCION="Configura en los PPDs pasados como parámetro lo necesario para hacer uso de códigos:
    1. '--konica-segumiento-cuenta' => Account Track: Modifica las directivas DefaultKMSectionManagement: True;DefaultKMAccPass: Custom.1234;
    2. '--konica-user-authentication' => User Authentication: Modifica las directivas
    3. '-i|--input' 'nombre_fichero.ppd' => Permite indicar el nombre del archivo PPD que se usará para generar el archivo de salida
    4. '-o|--output' 'nombre_fichero.ppd' => Permite indicar el nombre del archivo de salida
    Como resultado se obtiene un nuevo PPD junto al original con los cambios solicitados."
    EJEMPLOS=( "${0} \"-i|--input\" \"ruta_fichero_in.ppd\" \"-o|--output\" \"ruta_fichero_out.ppd\" \"--konica-segumiento-cuenta\" ..." )
    EJEMPLOS+=( "${0} \"-i|--input\" \"ruta_fichero_in.ppd\" \"-o|--output\" \"ruta_fichero_out.ppd\" \"--konica-user-authentication\" ..." )
    vx-show_help_script "${0}" "${DESCRIPCION}" "${EJEMPLOS[@]}"
}

# 1) Comprobamos si se pide ayuda de como usar el comando:
vx-check_need_help && printers_set_codusers_help && exit 0

# 2) Definimos las variables y funciones locales que se usarán más adelante:

function asignar_directivas() {
    for EL in "DefaultKMSectionManagement:True" "DefaultKMAccPass:Custom.1234" ; do
        _DIRECTIVA="${EL%:*}"
        _VALOR="${EL#*:}"
        if grep -Eq "${_DIRECTIVA}:" "${ORIGEN}" ; then
            [[ -f "${DESTINO}" ]] && cp "${ORIGEN}" "${DESTINO}"
            sed -i "s/${_DIRECTIVA}: .*/${_DIRECTIVA}: ${_VALOR}/g" "${DESTINO}" && \
            echo "#> ${DESTINO}: ${_DIRECTIVA} => ${_VALOR}"
        else
            echo "#> Error: ${ORIGEN} no tiene la directiva ${_DIRECTIVA}. No se ha asignado ${_VALOR}"
        fi
    done
}

function konica_seguimiento_cuenta() {
    asignar_directivas "DefaultKMSectionManagement:True" "DefaultKMAccPass:Custom.1234"
}

function konica_user_authentication() {
    asignar_directivas "DefaultKMAuthentication:Private" "DefaultKMAuthServer:1" "DefaultKMAuthUser:None" "DefaultKMAuthPass: Custom.1234"
}

[ -z "${2}" ] && printers_set_codusers_help && exit 1

# Obtenemos la ruta absoluta del archivo PPD para determinar la ruta del archivo de salida
until [ -z "${1}" ] ; do
    # 3) Comprobamos a través del primer parámetro la acción a realizar:
    OPCION="${1}"
    case "${OPCION}" in
        "-i"|"--input")
            shift
            ORIGEN="${1}"
            RUTA_ABSOLUTA="$(vx-funcs-bash vx-obtener_ruta_absoluta "${ORIGEN}")" || \
            {
                echo "#> La ruta del archivo PPD ${ORIGEN} no es correcta, revísala."
                continue
            }
            DIR="$(dirname "${RUTA_ABSOLUTA}")"
            NOMBRE="$(vx-nombre_fichero-sin_extension "${ORIGEN}")"
            echo "#> Fichero original: ${ORIGEN}"
        ;;
        "-o"|"--oputput" )
            shift
            DESTINO="${DIR}/${1}"
            cp -f "${ORIGEN}" "${DESTINO}"
            echo "#> Fichero destino: ${DESTINO}"
        ;;
        "--konica-segumiento-cuenta" )
            konica_seguimiento_cuenta
        ;;
        "--konica-user-authentication" )
            konica_user_authentication
        ;;
        * )
            printers_set_codusers_help
            exit 1
        ;;
    esac
    shift
done
exit 0