#! /bin/bash

#### Différents tests pour vérifier que les arguments du script sont corrects
#2.b Il y en a au moins 2
if [ $# -lt 2 ] ; then
    echo "Erreur : Argument manquant"
    echo
    ./readme.sh
    exit 2
fi    

#2.c recupération de l'opération à appliquer
op="$1"
interactif="false"

if [ "$op" = "len" ] ; then
    op='l'
elif [ "$op" = "mir" ]; then
    op='m'
elif [ "$op" = "sum" ]; then
    op='s'
elif [ "$op" = "bin" ]; then
    op='b'
elif [ "$op" = "dec" ]; then
    op='d'
elif [ "$op" = "i" ] || [ $op = "int" ]; then
    interactif="true"
    echo "Saisissez une opération parmi l, m, s, b, d ; ou c pour mettre fin au mode interactif."	
    echo -n "> "
    read op
fi    

#2.e, 2.f test si les arguments suivants sont des entiers positifs
#entiers en vérifiant qu'une somme avec l'argument ne renvoie pas d'erreur
shift
args=$@

for i in $args; do
    isnum="$(expr 0 + "$i" 2>/dev/null)"
    if [ -z "$isnum" ] ; then
        echo "Erreur : Argument non entier"
        echo
        ./readme.sh
        exit 2
    fi

    if [ "$i" -lt 0 ] ; then
        echo "Erreur : Argument négatif"
        echo
        ./readme.sh
        exit 2
    fi
done
#### Fin des tests sur les arguments

while true; do     
    #2.g exécuter l'opération sur chaque nombre
    case "$op" in
        l)
            for i in $args; do
                ./len.sh "$i"
            done
            ;;

        m)
            for i in $args; do
                ./mirror.sh "$i"
            done
            ;;

        s)
            for i in $args; do
                ./sum_digit.sh "$i"
            done
            ;;

        b)
            for i in $args; do
                ./decimal_to_binary.sh "$i"
            done
            ;;

        d)
            for i in $args; do
                ./binary_to_decimal.sh "$i"
            done
            ;;

        c)
            exit 0;;
        *)
            echo "Erreur : Opération inconnue"
            echo
            ./readme.sh
            exit 2
    esac

    if [ $interactif = "true" ] ; then
        echo
        echo "Saisissez une nouvelle opération parmi l, m, s, b, d ; ou c pour mettre fin au mode interactif."	
        echo -n "> "
        read op
    else
        break
    fi
done

