#!#/bin/bash
#P Fichier mkddocu.sh
#P -----------------------------------------------------------------------------
#P Menu d'aide sommaire obtenu par la commande 'mkddocu ?'
#
if test $1; then
if [ $1 = "?" ]
then
echo " Syntax : "
echo " mkddocu [target_dir] [-s]"
echo " → example series with date : mkddocu 2014-02-22 "
echo " → without target_dir, name of target dir is 'project' "
echo " → with '-s' mkddocu make complete documentation. "
echo " target dir is writed in 'maintenance' directory : "
echo " → ./maintenance/2014-02-22/ "
echo " mkddocu ? for help "
echo " Note : "
echo " This command dépends on mkd command "
exit 1 #P Fin normale de l'utilisateur (ce n'est pas une erreur)
fi
fi
#P Affecttion des macros et des variables
#P BACKUPSMAX : Définition du nombre de sauvegardes d'une série avant la
#P sauvegarde globale dans un répertoire 'Backup'. (Valeur modifiable)
BACKUPSMAX=3
let i=1 #P compteur
str="false" #P false ou true
project="project" #P nom du fichier de projet .prj
#
#P -----------------------------------------------------------------------------
#P Gestion des paramètres d'entrée
#
if test $1
then
if test $2
then
if test $1 && [ $1 != "-s" ]
then
project=$1;
if [ $2 = "-s" ]; then str="true"; fi
else
if [ $1 = "-s" ]; then str="true"; project=$2; fi
fi
else
if test $1 && [ $1 != "-s" ] ; then project=$1; fi
if [ $1 = "-s" ]; then str="true"; fi
fi
fi
#
#P -----------------------------------------------------------------------------
#P Gestion de sauvegarde des séries (Transfert dans maintenance/Backup)
#
#P Créer la fonction 'sauvegarde'. (Noter que la varable i est globale)
function sauvegarde
{
if test -d maintenance/$project
then
mv maintenance/$project maintenance/$project.$i
fi
}
#Po Tant que l'on n'a pas atteind BACKUPSMAX
while ((i<=BACKUPSMAX));
do
#Po Si le répertoire de projet.i existe
if test -d maintenance/$project.$i
#Po alors:
then
#Po Si le nombre de répertoires projet.i de la série dépasse BACKUPSMAX
if [ $i = $BACKUPSMAX ]
then
#Po demander si il faut transférer la série dans de répertoire 'Backup'
echo "Last backup before maintenance : "
echo -n "Make backup in 'Backup' dir, yes ? Your choice : y ? "
read char
#Po si 'y' (yes)
if test $char && [ $char = "y" ]
#Po alors:
then
#Po Créer le répertoir Backup s'il y alieu et transférer la série .*
echo "create Backups dir if not exist"
install -d Backups
((i++))
sauvegarde
cp -rf maintenance/$project.* Backups/.
rm -rf maintenance/$project.*
clear
echo "Files in dir Backups"
ls -al Backups
else
echo "exit -1"
exit -1 #P En cas dappel par une commande : Fin sur erreur
fi
fi
#Po sinon: Sauvegarder le dernier répertoire par incrément d'extension
else
sauvegarde
fi
let i++
#break
done
#
#P -----------------------------------------------------------------------------
#P Préparation des répertoires de travail, maintenance et fichier de projet .prj
#
#P Clean, nettoyage des fichiers d'éditions *~
rm *.c~ #w ATTENTION ! à exécuter avec précaution
#P Créer du répertoire ./maintenance si il n'existe pas
install -d maintenance/$project
#P Créer le fichier de projet .prj pour tout langage de programmation
rm -f *.prj
ls -1 *.asm *.s *.bas *.vb *.bat *.c *.C *.h *.H *.D *.cc *.hh *.cp *.cs \
*.c# *.c++ *.h++ *.c-- *.h-- *.cpp *.hpp *.css *.pr *.pl *.php *.jav \
*.jse *.js *.f99 *.f *.pas *.p *.sh *.csh *.pl, *.rb *.py *.pyw *.pj \
*.prj > $project.prj
#
#P -----------------------------------------------------------------------------
#P Génération de la documentation :
#
#P Générer le fichier d'entête global .h si il existe des fichiers .c??
if test -r *.c* ; then cfiles="true"; fi
if test -r *.C* ; then cfiles="true"; fi
if test $cfiles; then
echo " → make header file, to ./maintenance/$project/$project.h, benchmark H"
mkd -Cjt H $project.prj ./maintenance/$project/$project.h
#Pw → Remarque d'ATTENTION pour copier manuellement le fichier d'entête .h
echo " → Warning : Copy manually header file in current source directory "
#Pw → ATTENTION ligne non validée : cp -f ./maintenance/$project/$project.h .
else
echo " C files not found "
fi
#
#en Make documentation with benchmark 'D'
#P Générer la 'documentation' avec le repère 'D'
#
echo " make documentation, find the programming style, benchmark 'D' "
echo " → ./maintenance/$project/$project-documentation.txt' "
mkd -fjt D $project.prj ./maintenance/$project/$project-documentation.txt
#
#en Make individuals tests directives document; style find add number of lines
#P Générer le fichier des directives des tests; avec numéro de ligne repère 'T'
#
echo " make tests document and tests directives with benchmark 'T' "
echo " → './maintenance/$project/$project-tests-directives.txt' "
mkd -fjnt T $project.prj ./maintenance/$project/$project-tests-directives.txt
#
#en Make maintainers documentation, add line number, benchmark 'P'
#P Générer le fichier destiné aux mainteneurs avec le repère 'P'
#
echo " make functions maintainers documentation with benchmark 'P' "
echo "→ '/maintenance/$project-maintainers-doc.txt' "
mkd -fjnt P $project.prj ./maintenance/$project/$project-maintainers-doc.txt
#
#P Si le paramètre '-s' est entrée à la commande:
#P Créer les fichiers : chaînes de caractères et chaînes pour gettext
#en If second parametre is "-s" then
#en Get all strings and select strings for translations
#
if [ $str = "true" ]; then
echo " make list of strings for tranlations benchmark '**' "
mkd -fpnjs '**' $project.prj ./maintenance/$project/strings.txt | \
grep gettext > ./maintenance/$project/strings-2-translations.txt
fi
#
#P -----------------------------------------------------------------------------
#P Afficher les recommandations de lecture des fichiers de maintenance
#
echo " See in working directory: ./maintenance/$project/$project/* "
ls -l ./maintenance/$project
#P Quitter avec un retour à la valeur 0
exit 0 #P Fin correcte normale