#!/bin/sh
# addagenda - Invite l'utilisateur  inclure un nouvel vnement pour
#   le script agenda.

agendafile="$HOME/.agenda"

isDayName()
{
  # renvoie 0 si tout va bien, 1 en cas d'erreur
  case $(echo $1 | tr '[[:upper:]]' '[[:lower:]]') 
    in sun*|mon*|tue*|wed*|thu*|fri*|sat*) retval=0 ;;
    * ) retval=1 ;;
  esac
  return $retval
}

isMonthName() 
{  
  case $(echo $1 | tr '[[:upper:]]' '[[:lower:]]') in
    jan*|feb*|mar*|apr*|may*|jun*)    return 0        ;;
    jul*|aug*|sep*|oct*|nov*|dec*)    return 0        ;;
    * ) return 1      ;;
  esac
}

normalize()
{
  # Renvoie la chane en mettant une majuscule  l'initiale et en passant les
  #   deux lettres suivantes en minuscules.
  echo -n $1 | cut -c1  | tr '[[:lower:]]' '[[:upper:]]' 
  echo  $1 | cut -c2-3| tr '[[:upper:]]' '[[:lower:]]'
}

if [ ! -w $HOME ] ; then 
  echo "$0: je ne peux crire dans votre rpertoire personnel ($HOME)" >&2 
  exit 1
fi

echo "Agenda: Le pense-bte d'Unix"
echo "  note: tapez les dates en anglais"
echo -n "Date de l'vnement (jour mois, jour mois anne, ou nom du jour): "
read word1 word2 word3 junk

if isDayName $word1 ; then
  if [ ! -z "$word2" ] ; then  
    echo "Mauvais format de nom de jour: ne prcisez que le nom du jour." >&2  
    exit 1
  fi
  date="$(normalize $word1)"

else

  if [ -z "$word2" ] ; then
    echo "Mauvais format de nom de jour: nom de jour inconnu" >&2
    exit 1
  fi

  if [ ! -z "$(echo $word1|sed 's/[[:digit:]]//g')" ]  ; then  
    echo "Mauvais format de date: spcifiez d'abord le nom du jour puis son numro" >&2  
    exit 1
  fi

  if [ "$word1" -lt 1 -o "$word1" -gt 31 ] ; then  
    echo "Mauvais format de date: le numro du jour doit tre compris entre 1 et 31" >&2  
    exit 1
  fi

  if ! isMonthName $word2 ; then
    echo "Mauvais format de date: nom de mois inconnu." >&2
    exit 1
  fi

  word2="$(normalize $word2)"

  if [ -z "$word3" ] ; then
    date="$word1$word2"
  else
    if [ ! -z "$(echo $word3|sed 's/[[:digit:]]//g')" ] ; then 
      echo "Mauvais format de date: le troisime champ doit tre une anne." >&2 
      exit 1
    elif [ $word3 -lt 2000 -o $word3 -gt 2500 ] ; then 
      echo "Mauvais format de date: l'anne doit tre comprise entre 2000 et 2500" >&2 
      exit 1
    fi  
    date="$word1$word2$word3" 
  fi 
fi

echo -n "Description sur une ligne: " 
read description

# Prt  consigner les donnes dans le fichier

echo "$(echo $date|sed 's/ //g')|$description" >> $agendafile

exit 0
