Projet mkd/mkddocu.sh

De Wiki EELL.

(Différences entre les versions)
m (Création de la page)
m (NEWS : Retouches)
 
(20 versions intermédiaires masquées)
Ligne 1 : Ligne 1 :
-
<!-- {{Modèle:Pas fini/autre}} -->
+
<!-- --> {{Modèle:Pas fini/autre}}
<small>[[Projet mkd/Fichiers en développement|Retour aux fichiers en développement &rarr;]]</small>
<small>[[Projet mkd/Fichiers en développement|Retour aux fichiers en développement &rarr;]]</small>
-
== Fichiers de la fonction tri() ==
+
== 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 ===
 +
{{Boîte déroulante/début|titre=Documentation du manuel de mkddocu.sh (créé le 24 février 2014)}}
 +
<pre style="color:blue">
 +
#!/bin/bash
 +
#P File mkddocu writed by Clara Jimenez 2013-12-15
 +
#P Fichier modifié par JPL le 22/02/2014 pour une version plus universelle
 +
#P Util : Create any debian package for mkd for multi-lang programming languages
 +
#
 +
#D Fichier mkddocu.sh
 +
#D -----------------------------------------------------------------------------
 +
#D Documentation : Manuel mkddocu(1)
 +
#D Cette commande doit être placée dans le répertoire /usr/bin
 +
#D
 +
#D NOM
 +
#D    mkddocu  -  Cette commande shell génère la documentation informatique de tout fichier de
 +
#D    projet reconnu par la commande mkd
 +
#D
 +
#D SYNOPSYS
 +
#D    mkddocu [nom] [-s]
 +
#D
 +
#D DESCRIPTION
 +
#D    La commande mkd associée à mkddocu, extrait les commentaires  dotés  d'un  caractère  de
 +
#D    repère.
 +
#D    Si  des  fichiers  de langage C sont présents, mkddocu génère un fichier d'entête global
 +
#D    (header) du projet informatique.
 +
#D
 +
#D    Caractère de repère
 +
#D      D - Extrait la documentation générale.
 +
#D      T - Extrait le document des directives de tests.
 +
#D      P - Extrait un document utile aux mainteneurs.
 +
#D
 +
#D OPTIONS
 +
#D    nom    Cette option permet de choisir un nom de  projet  différent  du  nom  par  défaut
 +
#D          project.  Si nom est le caractère '?' la commande affiche la syntaxe.
 +
#D
 +
#D    -s      Cette  option  génère  le  fichier  des  chaînes  de caractères et le fichier des
 +
#D          chaînes de caractères utiles aux traductions avec gettext et poedit.
 +
#D
 +
#D VALEURS RETOURNÉES
 +
#D    0 : Fin normale à la fin de l'exécution de la commande.
 +
#D    1 : Fin normale après l'affichage de la syntaxe de la commande.
 +
#D    -1 : Sortie sans sauvegarde de la série de documents dans Backups.
 +
#D
 +
#D EXEMPLES :
 +
#D    L'auto documentation de cette commande se crée  en  renommant  pour  l'usage  mkddocu.sh
 +
#D    L'extension importe peu, la commande sera gérée par bash. Les fichiers sans extension ou
 +
#D    avec l'extension .bash ne sont pas pris en compte.
 +
#D    compte.
 +
#D    Lancer la commande 'mkddocu.sh mkddocu -s'
 +
#D    Le répertoire maintenance/mkddocu contiendra la documentation
 +
#D    Les répertoires de projet sont générés par séries et peuvent avoir été sauvegardés  dans
 +
#D    un répertoire Backups si le nombre de fichiers de projet de la série ont atteind la lim‐
 +
#D    ite BACKUPSMAX
 +
#D    Pour les essais on peut se limiter à BACKUPSMAX=2 (3 'backups' par série.)
 +
#D
 +
#D REMARQUES
 +
#D    BACKUPSMAX est normalement fixé à 9 mais peut être modifié par édition du fichier.
 +
#D
 +
#D VOIR AUSSI
 +
#D    mkd(1) gettext(1) poedit(1)
 +
#D
 +
#D TÉLÉCHARGEMENTS
 +
#D    http://edeulo.free.fr
 +
#D
 +
#D AUTEURS
 +
#D    Clara, JPL
 +
#D    Email : http://edeulo.free.fr/contacts/formmail.php
 +
#D
 +
#D BUGS
 +
#D    Rapports de bugs : http://edeulo.free.fr/phpBB3/index.php
 +
#D
 +
</pre>
 +
{{Boîte déroulante fin}}
 +
 
 +
=== La commande shell ===
 +
{{Boîte déroulante/début|titre=Fichier de la commande shell mkddocu.sh (créé le 24 février 2014)}}
 +
<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>
 +
{{Boîte déroulante fin}}
 +
 
 +
=== Directive des tests ===
 +
{{Boîte déroulante/début|titre=Directive des tests (mkddocu.sh créé le 24 février 2014)}}
 +
<pre style="color:orange">
 +
#T Fichier mkddocu.sh
 +
#T -----------------------------------------------------------------------------
 +
#T Tests : Ne peut fonctionner que si la commande mkd est installée.
 +
#T
 +
#T Test unitaire :
 +
#T ---------------
 +
#T Renommer mkddocu mkddocu.sh ou .csh
 +
#T Editer le fichier mkddocu.sh et modifier la valeur de BACKUPSMAX limiter
 +
#T cette valeur à 3 (4 sauvegardes indicées)
 +
#T
 +
#T La commande s'autoteste
 +
#T 1. Lancer 4 fois la commande ./mkddoccu (sans paramètre)
 +
#T 2. Vérifier la commande de boucle à chaque fois, elle doit incrémenter les
 +
#T    répertoires de projets project (le dernier), puis project.1, etc.
 +
#T    Après project.3 on doit vous demander si vous désirez préserver ces
 +
#T    fichiers dans un répertoire .Backups. Répondez oui : 'y' (yes)
 +
#T 3. Vérifier que le fichier .prj prend bien en charge tous les fichiers de
 +
#T    langages de programmation de la commande mkd. Pour cela il faut évidemment
 +
#T    disposer des fichiers nécessaires. On peut en trouver sur le site EELL
 +
#T    http://edeulo.free.fr/wiki/index.php/Projet_mkd/Fichiers_en_développement
 +
#T    Les fichiers en développement sont accompagnés de leurs tests unitaires,
 +
#T    notamment le fichier find.inc.c très sollicité par la commande mkddocu.
 +
#T    Trouver des exemples aussi sur wikipedia, wikibooks.
 +
#T 4. Essayer les commandes : (dans un 'Terminal' ou une 'Konsoke')
 +
#T    ./mkddocu.sh -s
 +
#T    ./mkddocu.sh mkddocu
 +
#T    ./mkddocu.sh mkddocu -s
 +
#T    ./mkddocu.sh -s mkddocu
 +
#T    Les commandes mkd ont été éprouvées par ailleurs. Vérifiez tout de même
 +
#T    que les fichiers générés sont bien conformes.
 +
#T 5. Vérifiez que les fichiers en langage C sont pris en compte quand ils sont
 +
#T    présents. les fichiers d'entête (.h) n'ont pas à être pris en compte.
 +
#T
 +
#T
 +
#T Tests d'intégration :
 +
#T ---------------------
 +
#T Pour ces tests il faut évidemment disposer de vrais fichiers de programmation
 +
#T dans différent langages mais cela a déjà été fait lors des tests
 +
#T d'intégration de la commande mkd.
 +
#T On peut trouver ces fichiers dans chaqu'un des fichiers de tests unitaires de
 +
#T la page wiki 'fichiers' en développement citée plus haut.
 +
#T
 +
</pre>
 +
{{Boîte déroulante fin}}
 +
 
 +
== Test des paramètres d'entrée ==
 +
{{Boîte déroulante/début|titre=Commande des tests des paramètre d'entrée de mkddocu.sh (créé le 24 février 2014)}}
 +
<pre style="color:blue">
 +
#!/bin/bash
 +
#Fichier Tests_paramètre
 +
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
 +
      echo " Deux paramètres "
 +
      echo " Paramètres : 1=$1, 2=$2 "
 +
      if test $1 && [ $1 != "-s" ] ;
 +
      then
 +
        project=$1;
 +
        if [ $2 = "-s" ]; then str="true"; fi # Vérif que c'est bien -s
 +
      else
 +
        if [ $1 = "-s" ]; then str="true"; project=$2; fi
 +
      fi
 +
  else
 +
      echo " Un deul paramètre : $1 "
 +
      if test $1 && [ $1 != "-s" ] ; then project=$1; fi
 +
      if [ $1 = "-s" ]; then str="true"; fi
 +
  fi
 +
else echo " Pas de paramètre "
 +
fi
 +
echo " Projet : $project "
 +
echo " Strings ? : $str "
 +
</pre>
 +
{{Boîte déroulante fin}}
 +
 
 +
== Test de la boucle des sauvegardes ==
 +
{{Boîte déroulante/début|titre=Commande des tests de boucle mkddocu.sh (créé le 28 février 2014)}}
 +
<pre style="color:blue">
 +
#!/bin/bash
 +
# Tests_boucle_dans_mkddocu
 +
#
 +
# Help
 +
#
 +
if test $1; then
 +
  if [ $1 = "?" ]
 +
  then
 +
      echo " Syntax : "
 +
      echo " mkddocu [target_dir]"
 +
      echo "    → without target_dir, name of target dir is 'project' "
 +
      echo " mkddocu ? for help"
 +
      exit 1 # Used by
 +
  fi
 +
fi
 +
#
 +
# Target dir
 +
#
 +
BACKUPSMAX=3 #
 +
let i=1
 +
if test $1; then project=$1; else project="project"; fi
 +
#  then
 +
  # echo "Test files : $project.* for backup" #T debug
 +
  # echo "BACKUPSMAX=$BACKUPSMAX" #T
 +
  while ((i<=BACKUPSMAX));
 +
  do
 +
      # echo "$i" #T
 +
      if test -d $project.$i #T
 +
      then
 +
        # echo "$project.$i exist" #T
 +
#####################
 +
        if [ $i = $BACKUPSMAX ]
 +
        then
 +
            echo "Last backup $project.$i Make backup in backup dir, yes ?"
 +
            echo -n "your choice : y ? "
 +
            read char
 +
            if test $char &&  [ $char = "y" ]
 +
            then
 +
              echo "create Backups dir if not exist"
 +
              install -d Backups
 +
              # echo "cp -rf $project.* Backups/." #T
 +
              cp -rf  $project.* Backups/.
 +
              rm -rf $project.*
 +
              clear
 +
              echo "Files in dir Backups"
 +
              ls -al Backups
 +
            else
 +
              echo "exit -1"
 +
              exit -1
 +
            fi
 +
        # else echo "Continue"
 +
        fi
 +
#####################
 +
      else
 +
        # echo "$project.$i does not exist" #T
 +
        if test -d $project
 +
        then
 +
            # echo "$project exist and move dir $project to $project.$i"; #T
 +
            mv $project $project.$i
 +
        fi
 +
        #break
 +
      fi
 +
      let i++
 +
      #break
 +
  done
 +
 
 +
rm -Rf $project
 +
install -d $project
 +
# echo "Projet actuel : $project"
 +
echo "blabla" > $project/fichiertest
 +
echo ""
 +
# ls
 +
</pre>
 +
{{Boîte déroulante fin}}
 +
 
 +
== Test de la reconnaissance des fichiers C ==
 +
{{Boîte déroulante/début|titre=Commande des tests de reconnaissance des fichiers C (mkddocu.sh créé le 24 février 2014)}}
 +
<pre style="color:blue">
 +
#!/bin/bash
 +
#Fichier Tests-C
 +
if test -r *.c* ; then cfiles="true"; echo " Il y a des fichiers c* "; else echo " Pas de c*"; fi
 +
if test -r *.C* ; then cfiles="true"; echo " Il y a des fichiers C* "; else echo " Pas de C*"; fi
 +
if test $cfiles ; then echo " Il y a des fichiers c* ou C* "; else echo " Pas de c* ni C*"; fi
 +
</pre>
 +
{{Boîte déroulante fin}}
 +
 
 +
== Analyse globale ==
 +
 
 +
Les tests ayant été effectués au fur et à mesure il n'y a rien de spécial.
 +
 
 +
L'autotest a été pratiqué avec les commandes :
 +
* mkddocu (sans paramètre)
 +
* mkddocu mkddocu
 +
* mkddocu mkddocu -s
 +
* mkddocu -s mkddocu
 +
* mkddocu -s
 +
 
 +
Le test a aussi été effectué avec les fichiers des sources de mkd
 +
 
 +
Il n'y a pas eu d'autre test à ce jour (26 février 2014)
 +
 
 +
Cette commande reste en phase de tests ...
 +
 
 +
--[[Utilisateur:Eudelo|edeulo]] 26 février 2014 à 16:29 (UTC)
 +
 
 +
== NEWS ==
 +
 
 +
La version beta 140515 (7 avril 2014) corrige les inconvénients des versions précédentes.
 +
# '''Les traductions sont pleinement opérationnelles'''. Un fichier .po est disponible dans les sources.
 +
# '''L'obligation d'entrer un paramètre''' évite les exécutions non désirée.
 +
 
 +
=== Source des versions beta ===
 +
Downloads [http://edeulo.free.fr/pub/downloads_sources/mkd sources]
 +
 
 +
=== Distributions debian version beta ===
 +
Downloads [http://edeulo.free.fr/pub/mkd/dist dist]
 +
 
 +
[[Catégorie:Mkd]]

Version actuelle en date du 17 avril 2014 à 12:32

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

Les tests ayant été effectués au fur et à mesure il n'y a rien de spécial.

L'autotest a été pratiqué avec les commandes :

  • mkddocu (sans paramètre)
  • mkddocu mkddocu
  • mkddocu mkddocu -s
  • mkddocu -s mkddocu
  • mkddocu -s

Le test a aussi été effectué avec les fichiers des sources de mkd

Il n'y a pas eu d'autre test à ce jour (26 février 2014)

Cette commande reste en phase de tests ...

--edeulo 26 février 2014 à 16:29 (UTC)

NEWS

La version beta 140515 (7 avril 2014) corrige les inconvénients des versions précédentes.

  1. Les traductions sont pleinement opérationnelles. Un fichier .po est disponible dans les sources.
  2. L'obligation d'entrer un paramètre évite les exécutions non désirée.

Source des versions beta

Downloads sources

Distributions debian version beta

Downloads dist
Outils personnels