mooc/www/sys/fs/usr/script/old/libeval-1.184.sh

114 lines
2.4 KiB
Bash

#!/bin/bash
# Auteur: Pascal Anelli
# 06 juin 2020
set -u
log="$(mktemp)"
res=0
#===================================================================
function xfinish
{
echo "";
echo "Interruption de l evaluateur";
exit 1;
}
#===================================================================
trap xfinish SIGINT SIGTERM
# global var: line
function readline
{
read -e -p 'Tapez votre commande maintenant $ ' -r line
}
# argument 1: challenge name
# global var: log
function banniere {
echo "** Evaluation du challenge $1 **" | tee $log
}
# global var: challenge, log, rep, scriptname
function firstcheck {
banniere $challenge
step false "debut - retour sous la forme oui ou"
if [ ! -f $rep/$scriptname ] || [ ! -x $rep/$scriptname ]
then
echo "Attention: Votre script doit s'appeler $scriptname, etre dans le repertoire $rep et etre executable" >&2
exit 1
fi
}
function vraifaux {
if test "$1" -eq 0 ; then
echo "true"
else
echo "false"
fi
}
# argument 1: cmd or (true, false) (State for this step)
# argument 2: Associated message to step
# argument 3: Optional, true for a fatal error = exit from eval
# global var: log
# step must be true to continue to be incremented
function step() {
local fatal=${3:-false}
local etat=non
# step return : true or false
$1 && { etat="oui" ; ((res++)) ; } #number of steps good
echo "Pas: $res" "$2 : $etat" |tee -a $log
if $fatal && ! $1 ; then
echo -e " ERREUR Fatale : Votre reponse ne respecte pas les consignes. \n La suite de l'evaluation ne peut etre effectuee"
exit 1
fi
}
# argument 1: String to check
# return true if the argument is an integer
function isinteger {
[[ "$1" =~ ^-?[0-9]+$ ]]
}
function code() {
echo -n $(echo "$1" | md5sum| cut -c4-6)
}
# argument 1: the string to hash by md5sum
function status() {
echo "Le code de l'evaluation a saisir est : " $(code "$1")
}
# argument: target directory
function isrep {
if [ "$1" != $(pwd) ]
then
echo "Le répertoire courant doit etre $1"
echo " ERREUR Fatale : la suite de l'evaluation ne peut etre effectuee"
exit 1
fi
}
# argument 1 : max step number
# argument 2: Prefix string
function codechecker {
echo -n "listcode = [ '000'"
for ((i=1; i<=$1; i++)); do
echo -n ", " \'$(code "${2}_$i")\'
done
echo " ]"
exit 0
}
#=====================================================================