dennisangemi / frictionless2md

A tool to convert frictionless datapackage (YAML or JSON) to markdown
MIT License
3 stars 0 forks source link

Add support to long options #33

Closed dennisangemi closed 1 year ago

dennisangemi commented 1 year ago

For example --file or --output

#!/bin/bash

while getopts ":f:" opt; do
    case ${opt} in
        f | file)
            file_path=${OPTARG}
            ;;
        # ...
    esac
done
shift $((OPTIND -1))

# Resto dello script...

alternative here

#!/bin/bash

# Funzione per mostrare l'aiuto
show_help() {
    echo "Esempio di CLI con opzioni"
    echo "Utilizzo: nome_script.sh [opzioni]"
    echo ""
    echo "Opzioni disponibili:"
    echo "  -a, --opzione-a                   Descrizione opzione A"
    echo "  -b, --opzione-b                   Descrizione opzione B"
    echo "  -c VAL, --opzione-c VAL           Descrizione opzione C (richiede un valore)"
    echo "  -d VAL, --opzione-d VAL           Descrizione opzione D (richiede un valore)"
    echo "  -h, --help                        Mostra questo messaggio di aiuto"
    echo ""
}

# Legge le opzioni passate alla CLI
while [[ $# -gt 0 ]]; do
    key="$1"

    case $key in
        -a|--opzione-a)
            opzione_a=true
            shift
            ;;
        -b|--opzione-b)
            opzione_b=true
            shift
            ;;
        -c|--opzione-c)
            if [[ -n $2 ]]; then
                opzione_c="$2"
                shift 2
            else
                echo "Errore: l'opzione -c/--opzione-c richiede un valore"
                exit 1
            fi
            ;;
        -d|--opzione-d)
            if [[ -n $2 ]]; then
                opzione_d="$2"
                shift 2
            else
                echo "Errore: l'opzione -d/--opzione-d richiede un valore"
                exit 1
            fi
            ;;
        -h|--help)
            show_help
            exit 0
            ;;
        *)
            echo "Errore: opzione non valida: $1"
            exit 1
            ;;
    esac
done

# Utilizzo delle opzioni
if [[ $opzione_a ]]; then
    echo "Opzione A attivata"
fi

if [[ $opzione_b ]]; then
    echo "Opzione B attivata"
fi

if [[ -n $opzione_c ]]; then
    echo "Opzione C: $opzione_c"
fi

if [[ -n $opzione_d ]]; then
    echo "Opzione D: $opzione_d"
fi
dennisangemi commented 1 year ago

sembra che il builtin getopts non possa gestire long options. Vedo in futuro come fare

dennisangemi commented 1 year ago

To do: