Projet mkd/mkddocu.sh

De Wiki EELL.

(Différences entre les versions)
m (Document initial : correction)
m (La commande shell : copie)
Ligne 80 : Ligne 80 :
=== La commande shell ===
=== La commande shell ===
-
{{Boîte déroulante/début|titre=doc mkddocu.sh créé le 28 février 2014}}
+
{{Boîte déroulante/début|titre=commande shell mkddocu.sh créé le 28 février 2014}}
-
<pre style="color:blue>
+
<pre style="color:black">
 +
#!#/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
</pre>
</pre>
{{Boîte déroulante fin}}
{{Boîte déroulante fin}}

Version du 26 février 2014 à 15:54

Cette page n'est pas finie. Veuillez considérer le plan et le contenu comme incomplets et en préparation, temporaires et sujets à caution. Si vous souhaitez participer, il vous est recommandé de consulter sa page de discussion au préalable.

Retour aux fichiers en développement →

Sommaire

mkddocu.sh

Dans sa version finale le fichier sera renommé mkddocu et copié dans les répertoires /usr/bin (ou /usr/local/bin)

Document initial

La commande shell

Directive des tests

Test des paramètres d'entrée

Test de la boucle des sauvegardes

Test de la reconnaissance des fichiers C

== Analyse globale ==
Outils personnels