#!/bin/sh

# ex :
# ~$ test.sh 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# [||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||] 100.00%

barre_progression ()
{
	nb_iterations=$1
	liste_length=$2
	pourcent=`echo "scale=2;($nb_iterations * 100) / $liste_length" | bc`
	pourcent=`printf "% 3.2f" "$pourcent"`
	
	chaine="$pourcent"
	nb_etoiles=`echo "scale=0;$chaine / $diviseur_barre" | bc`
	etoiles=""
	while test $nb_etoiles -gt 0
	do
		etoiles="${caractere_barre}${etoiles}"
		nb_etoiles=`echo "$nb_etoiles - 1" | bc`
	done
	etoiles=`printf "[%-${largeur_barre}s]" "$etoiles"`
	pourcentage=`printf "%7s" "$chaine"`
	#echo "\r${etoiles}${pourcentage}%\r\c"
	printf "%b%b%b" "\r${etoiles}" "${pourcentage}" "%\r\c"
}

# INITIALISATION DE LA BARRE DE PROGRESSION
init_progress_bar ()
{
	# caractere qui sera affiche dans la barre de progression
	caractere_barre="|"
	
	# detection de l'OS
	os=`uname -s | tr [a-z] [A-Z]`
	
	# recuperation de la largeur en caracteres du terminal
	if test "$os" = "LINUX"
	then
		largeur_ecran=`stty -a | grep columns | cut -d ' ' -f7 | tr -d ';'`
	elif test "$os" = "SUNOS"
	then
		largeur_ecran=`stty | grep columns | cut -d ' ' -f6 | tr -d ';'`
	else
		echo "Systeme d'exploitation incompatible, programme stoppe"
		exit 1
	fi
	
	# calcul de la largeur optimale de la barre de progression 
	largeur_barre=`echo "$largeur_ecran - 7 - 2 - 1" | bc`
	diviseur_barre=`echo "scale=2;100 / $largeur_barre" | bc`
	
	# protection des variables
	readonly largeur_ecran largeur_barre diviseur_barre caractere_barre
}

# gestion de la langue de l'environnement
LC_NUMERIC=C

init_progress_bar

liste_length=$#
nb_iterations=0
if test $liste_length -gt 0
then
	for i in $@ 
	do
		nb_iterations=`echo "$nb_iterations + 1" | bc`
		barre_progression "$nb_iterations" "$liste_length"
		# sleep 1
	done
fi

echo " "