#!/bin/sh
# setdate - Interface conviviale  la commande date. 

# Date demande la syntaxe: [[[[[cc]yy]mm]dd]hh]mm[.ss]

askvalue()
{
  # $1 = nom du champ, $2 = valeur par dfaut, $3 = valeur maximale
  # $4 = longueur requise, en caractres ou chiffres

  echo -n "$1 [$2] : "
  read answer
  if [ ${answer:=$2} -gt $3 ] ; then
    echo "$0: $1 $answer est invalide"; exit 0
  elif [ "$(( $(echo $answer | wc -c) - 1 ))" -lt $4 ] ; then
    echo "$0: $1 $answer est trop court; veuillez spcifier $4 chiffres"; exit 0
  fi
  eval $1=$answer
}

eval $(date "+nyear=%Y nmon=%m nday=%d nhr=%H nmin=%M")

askvalue annee   $nyear 3000 4 
askvalue mois    $nmon  12   2 
askvalue jour    $nday  31   2 
askvalue heures  $nhr   24   2 
askvalue minutes $nmin  59   2

squished="$annee$mois$jour$heures$minutes"
# ou, sur un systme Linux:
# squished="$mois$jour$heures$minutes$annee"

echo "Je passe la date  $squished."
echo "Vous devrez peut-tre taper votre mot de passe sudo:" 
sudo date $squished

exit 0
