#!/bin/bash

# strings
filename=''
md5sum=''
md5sum_computed=''
cmd='md5sum '

# ints
debugmode=0
nb_opt=0

#
nextoptval=""
optparams=$@

# opts.test()
for optparam in $optparams ; do
	#echo $optparam
	 nb_opt=$(( $nb_opt + 1 ))
done
#echo "nb_opt : $nb_opt"
if [[ nb_opt == 0 ]] ; then 
	echo "ERREUR :: impossible de travailler sans options. Le programme va s'arrêter.";
	exit 0
fi

# opts.double()
for optparam in $optparams ; do
#echo "optparam : $optparam , nextoptval : $nextoptval"
	## debugmode
	if [ "$nextoptval" = "debugmode" ] ; then
		case $optparam in 
			on ) debugmode=1
			 ;;
			* ) debugmode=0
       ;;
    esac
    nextoptval=""
	fi
	if [ "$optparam" = "--debugmode" ] ; then nextoptval="debugmode" ; fi 
	## pathmd5sum
	if [ "$nextoptval" = "pathmd5sum" ] ; then 
		cmd=$optparam$cmd ; 
		nextoptval="";
	fi 
	if [ "$optparam" = "--pathmd5sum" ] ; then nextoptval="pathmd5sum" ; fi 
	## filename
	if [ "$nextoptval" = "filename" ] ; then 
		filename=$optparam ; 
		cmd=$cmd$filename;
		nextoptval="";
	fi 
	if [ "$optparam" = "--filename" ] ; then nextoptval="filename" ; fi 
	if [ "$optparam" = "-f" ] ; then nextoptval="filename" ; fi 
	## md5tocheck
	if [ "$nextoptval" = "md5tocheck" ] ; then 
		md5sum=$optparam ; 
		nextoptval="";
	fi 
	if [ "$optparam" = "--md5tocheck" ] ; then nextoptval="md5tocheck" ; fi 
	if [ "$optparam" = "-m" ] ; then nextoptval="md5tocheck" ; fi 
#echo "optparam : $optparam , nextoptval : $nextoptval"
done

## filename.valid()
if [ "$filename" = "" ] ; then 
	echo "ERREUR :: impossible de travailler sans nom de fichier précisé. Le programme va s'arrêter."; 
	exit 0
fi

## md5sum.valid()
if [ "$md5sum" = "" ] ; then 
	echo "ERREUR :: impossible de travailler sans signature MD5 à vérifier. Le programme va s'arrêter."; 
	exit 0
fi

## cmd.process
if [[ "$debugmode" == 1 ]] ; then echo "cmd : $cmd"; fi
cmdresult=(`$cmd`)
if [[ "$debugmode" == 1 ]] ; then echo "cmdresult : $cmdresult"; fi

## final.process
if [[ "$debugmode" == 1 ]] ; then echo "md5tocheck : $md5sum"; fi
if [ "$cmdresult" = "$md5sum" ] ; 
	then echo "SUCCESS :: le fichier précisé correspond bien à la signature MD5."; 
	else echo "FAIL :: le fichier précisé ne correspond pas à la signature MD5.";
fi

## debugmode.print()
if [[ "$debugmode" == 1 ]] ; then 
	echo "debugmode : $debugmode";
	echo "cmd : $cmd";
	echo "filename : $filename";
	echo "md5sum : $md5sum";
fi

