LancementProjet.sh

#=FG ==================================================================
#=15/10/08=============================================================
#
# SCRIPT DE DEPLOIEMENT D'UN NOUVEAU PROJET
#
#======================================================================
#======================================================================
#
# o Le Script va créer les répertoires de base d'un projet 
# o Créer des "Templates" (modèles de fichiers) à compléter par le 
#   developpeur
#======================================================================

# Le premier et seul argument du script est le nom du programme
NOMPROG=$1
#On désigne un auteur du projet et la date de création
Auteur=`whoami`
Jour=`date +%A ` 
JourNum=`date +%d`
Mois=`date +%B` 
Annee=`date +%Y`
#
echo "\n Deploiement du projet " $NOMPROG "\n" 

#----------------------------------------------------------------------
# A) Création des répertoires
#----------------------------------------------------------------------
mkdir $NOMPROG
cd $NOMPROG
#Dossier d'exemples
mkdirhier EX/EX1
mkdirhier EX/EX2
mkdirhier EX/EX3
#Dossier de Manuel
mkdir MAN
#Dossier de sources
mkdir SRC

#Dossier de verifications
mkdir .CHK
chmod 774 .CHK
#Dossier des exécutables
mkdir BIN

#----------------------------------------------------------------------
# B) Remplissage des dossiers
#----------------------------------------------------------------------

#B.1) MAN
cd MAN
cat >README.TXT <<EOF
==================================================
$NOMPROG créé le $Jour $JourNum $Mois $Annee
==================================================
Ce repertoire contient le manuel du programme:
EOF

cat >${NOMPROG}.tex <<EOF
%ici on déclare le type de document
\documentclass[a4paper,12pt]{article}
%appel de package servant aux accents français
\usepackage[T1]{fontenc}
\usepackage[french]{french} % sous unix décommenter cette ligne et commenter la suivante
%\usepackage[french]{babel} %sous linux/windows décommentez cette ligne commentez la precedente
%Description de l'auteur et du titre du document
\author{$Auteur}
\title{$NOMPROG}

%-Mise en page-------------------------------------------------------------------
%Marges
\hoffset=                       0cm         % marge gche = 2.54cm + X cm
\oddsidemargin=         0pt                 % espace entre marge gche et corps
\marginparsep=          0cm                 % espace entre marge  à dte et corps
\marginparwidth=        0cm                 % marge à droite
\voffset=                -1.5cm             % marge haut = 2.54 + X cm

%Corps
\textheight=             23cm               % longueur du corps
\textwidth=              16cm               % largeur du corps

%entete et pied de pages
\headheight=            2.1cm               % taille entete
\headsep=                   0.5cm           % espace entre entete et corps
\topmargin=                 0cm             % espace entre marge haut et entete
\footskip=              2.5cm               % taille pied de page

%--------------------------------------------------------------------------------

\begin{document}
%on donne un titre à ce document et une date
\maketitle
%le document se structure en section/sous section qui commencent par le mot clef
%\section{} ou \subsection{} Le titre de la section est entrée entre accolades.

%Une liste est un environnement commençant par \begin{itemize} et finissant par 
%\end{itemize}
%Voici un exemple à recopier, décommenter (on enlève les % de début de ligne) et compléter
%    \begin{itemize}
%    \item Un 1er élement
%    \item Un second élément
%    \end{itemize} 

%Un tableau se code comme dans l'exemple suivant
%

%    \begin{table}[htbp!]
%    \begin{tabular}{cccccc} %on a autant de c que de colonnes, chaque colonne est séparée par &
%    Variable & N  &  V1 & $ V2  & Min & Max \\  %la fin de ligne est symbolisée par \\
%    
%   \hline  %un trait horizontal
%   pe                   & 30. &   0.0193 &   0.0470 &   0.0000 &   0.1650\\
%   pm                   & 30. &  31.0693 &  12.7785 &   7.0600 &  49.7520\\
%   \end{tabular} 
%    \caption{ici on met une légende}
%    \end{table}

 \section*{Introduction}

Que va-t-on faire

\section{Données en entrée}
Que va-t-on utiliser ? Description des données, illustrations par des morceaux de fichiers

\begin{itemize}
\item Un 1er élement
\item Un second élément
\end{itemize} 

\subsection{Description du premier élément}
 Que contient cet élément.
Un exemple de cet élément  mis dans un environement verbatim

\begin{verbatim}
1   2  3  FR5619216360  FR5619216053  FR2294020202
\end{verbatim}

\section{Etapes du programme, ce qu'on fait}
Ce programme comporte X étapes 
\begin{enumerate}
  \item La lecture des paramètres et des fichiers nécessaires
  \item La lecture des génotypes
  \item La résolution des phases pour les marqueurs homozygotes
  \item La résolution des phases si la probabilité de transmission est connue
  \item Attribution aléatoire de phase dans les autres cas
  \item On vérifie ensuite la cohérence des phases parentales basées
  sur les descendants
  \item on compare les phases obtenues selon que l'on se base sur
  l'information des parents ou celles des descendants.

\end{enumerate}

 \section{Fichiers ou données en sortie}

Idem fichiers en entrée...

%fin du document
%reste à compiler sous emacs C-c C-f -> compilation
%C-c C-v voir fichier DVI 
%C-c C-p imprimer le fichier

%Sous unix utiliser la commande PDFTex  fichier.tex

\end{document}
EOF

 cd ..

#B.2) SRC

cd SRC
cat >${NOMPROG}.f90<<EOF
program ${NOMPROG}

!=$Auteur==============================================================
!=${JourNum}=${Mois}=${Annee}===================================================
!
! ${NOMPROG}
!
!======================================================================
! But : de ce programme
!======================================================================
! Paramètres : de ce programme
!======================================================================

implicit none

end program ${NOMPROG}
EOF

cat >Makefile <<EOF
#=FG===========================================================
#makefile minimal pour programme aux fonctionnalités
#minimales.
#==============================================================

#--------------------------------------------------------------
#Déclarations variables utiles
#--------------------------------------------------------------
#on déclare ici le nom du programme principal, le compilateur
#et enfin le répertoire des exécutables et du manuel
PROG=${NOMPROG}
COMP=xlf90
BINDIR=../BIN
dirMan=../MAN/

#--------------------------------------------------------------
#Options de compilations
#--------------------------------------------------------------
#On écrit ici les options de compilations, ainsi que les chemins 
#vers les librairies utiles

#FF=

#--------------------------------------------------------------
#Début des règles
#--------------------------------------------------------------

\$(PROG):         
    \$(COMP) -o \$(PROG) \$(PROG).f90
    cp \$(PROG) \$(BINDIR)

#-Nettoyage----------------------------------------------------
clean:
    rm -f *.o *.a *.mod *~

#-Partie documentation-----------------------------------------

doc:
    latex2e   \$(dirMan)\$(PROG).tex 
    dvips   \$(PROG).dvi -o \$(PROG).ps
    ps2pdf \$(PROG).ps 
    rm -rf *.dvi *.ps *.log *.aux
    mv \$(PROG).pdf \$(dirMan)\$(PROG).pdf

docview:
    acroread \$(dirMan)\$(PROG).pdf

#-Partie vérification de la compilation------------------------
check:
    ../.CHK/ScriptCHK.sh

#-Archivage----------------------------------------------------
ARCH:clean    
    tar -cvf ../../\$(PROG).tar ../../\$(PROG)
    gzip ../../\$(PROG).tar 

EOF
cd ..

#B.3) .CHK
cd .CHK
cat > ScriptCHK.sh<<EOF
#################################################################
# Script de vérification du programme ${NOMPROG}
#################################################################
# Le but est de réaliser un ensemble de tests sur les exemples 
# et de comparer les résultats à des résultats standards
################################################################

#1) Cas exemple 1

#on rentre dans le répertoire d'exemple 1
cd EX/EX1

#Ecriture du fichier des paramètres pour le programme
cat >${NOMPROG}.par <<FIN
Les fichiers necessaires
FIN

#appel du programme exécutable
../BIN/${NOMPROG} <${NOMPROG}.par >${NOMPROG}.out

#Comparaison avec résultats normaux
diff ${NOMPROG}.out ../../.CHK/SortiesNormales1 >D1 
echo "Différences avec les résultats normaux" 
echo ------------------------------------------
cat D1
echo ------------------------------------------
#nettoyage
rm -f D1
rm -f ${NOMPROG}.out

# On fait la même chose pour les autres exemples

EOF

cd ..

#Gestion des droits
chmod -R 774 ./SRC*
#Gestion des droits
chmod -R 774 .CHK/*