Le Lundi 9 Mai 2005 20:51, Chicha a écrit :
> Ce qui semble poser problème c'est la présentation à l'écran des erreurs
> (l'indentation).

Non, ce qui pose problème, c'est le nombre de niveaux de « détails » qui n'est 
pas suffisant. C'est totalement indépendant de la manière dont les messages 
sont présentés à l'écran.

> Pour moi les niveaux qu'on avait choisit au départ sont bons : QUIET,
> ERROR, WARNING, INFO, DETAIL, FULL.
> Un niveau 1,2,3,..., N n'a aucun sens du point de vue de l'utilisateur
> car il ne sait pas à l'avance ce qu'il va rencontrer comme message.
> Je ne vois pas comment un utilisateur peut utiliser Ncooker -v4
> <command> plutôt que Ncooker -v3. Le seul sens que ça à c'est au niveau
> visuel : je veux 3 indentations ou 4 car je sais que j'aurais plus ou
> moins d'infos.

Je ne suis pas du tout d'accord avec cette dernière phrase :-D

Je serais très surpris que l'utilisateur associe l'option « -v » avec l'aspect 
visuel des messages. Si c'était l'option « -C|--no-color », là ok. Le nom de 
l'option indique clairement un rapport avec la couleur. Mais l'option 
« -v|--verbose » n'indique nullement un rapport avec l'aspect visuel des 
messages, mais bien dans quelle proportion Ncooker doit être « bavard ».

Pour moi, chaque niveau de verbosité permet d'afficher des précisions 
supplémentaires, des détails sur les opérations sous-jascentes qui 
constituent l'opération plus générale affiché par le niveau de verbosité 
précédent. Je m'explique :-) :

C'est un peu comme la table des matières d'un livre. Celle-ci présente les 
chapitres du livre, et pour chacun d'eux ses sous-chapitres, etc. Les 
sous-chapitres indiquent le découpage logique, et par conséquent le 
« détail », d'un chapitre. Pour renforcer ce découpage, plusieurs éléments 
peuvent être utilisés. Ça peut être des éléments structurels comme la 
numérotation :

1. Les outils Nasgaia ............ 3
1.1. Ncooker ......................... 3
1.2. Nsetup ........................... 10

ou des éléments visuels comme l'indentation :

Les outils Nasgaia ............ 3
    Ncooker ........................ 3
    Nsetup .......................... 10

(voire les deux :

1. Les outils Nasgaia ............ 3
    1.1. Ncooker ..................... 3
    1.2. Nsetup ....................... 10)

Dans le cas où ce sont des éléments visuels, on comprend que l'indentation 
utilisée indique que Ncooker et Nsetup sont des éléments constitutifs des 
Outils Nasgaia. Leur présence, leur indication dans la table des matières, ne 
fait que détailler, apporter des précisions sur ce que regroupe la notion 
plus générale Outils Nasgaia.

Pour moi, c'est exactement la même chose pour les messages de Ncooker, sauf 
qu'on peut choisir le niveau de détails à afficher : -v 1 n'affiche que les 
chapitres, -v 2 affiche les chapitres et les sous-chapitres, etc. Le nombre 
utilisé correspond donc à un niveau de « détails », et n'a rien à voir avec 
l'aspect visuel de ces messages, qui reste à la discrétion de Ncooker.

Exemple :

$ Ncooker -v 1 pack working_dir
Creation of the working_dir package ... [ OK ]

$ Ncooker -v 2 pack working_dir
Creation of the working_dir package ...
    Checking working_dir directory content ... [ OK ]
    Preparing packaging environment ... [ OK ]
    Create "working_dir" NBUILD package ... [ OK ]
    Cleaning packaging environment ... [ OK ]

On voit que le fait de demander à Ncooker d'être plus « explicite » permet de 
savoir en quoi consiste l'opération générale « Creation of the working_dir 
package ». On pourrait obtenir la même chose en utilisant une numérotation au 
lieu d'une indentation :

$ Ncooker -v 1 pack working_dir
1. Creation of the working_dir package ... [ OK ]

$ Ncooker -v 2 pack working_dir
1. Creation of the working_dir package ...
1.1. Checking working_dir directory content ... [ OK ]
1.2. Preparing packaging environment ... [ OK ]
1.3. Create "working_dir" NBUILD package ... [ OK ]
1.4. Cleaning packaging environment ... [ OK ]

Ça montre bien que l'option -v influe sur le niveau de détails affichés, et 
non sur l'aspect visuel.


> Ncooker -v INFO pack foobar
>
> packing foobar.........    <-- Verbosité INFO
>     checking foobar.....   <-- Verbosité INFO
>
> Ncooker -v DETAIL pack foobar
>
> packing foobar.........    <-- Verbosité INFO
>     checking foobar.....   <-- Verbosité INFO
>        checking build file   <-- Verbosité DETAIL
>
>
> Ncooker -v INFO check foobar.nbuild
>
> checking foobar.....   <-- Verbosité INFO
>
> Ncooker -v DETAIL check foobar.nbuild
>
> checking foobar.....   <-- Verbosité INFO
>     checking build file   <-- Verbosité DETAIL
>
>
> Voilà ce que je souhaiterai obtenir.

Je trouve le principe intéressant, mais je pense pas qu'il soit applicable :-) 
Il a des inconvénients, par exemple :

(1) $ Ncooker -v INFO pack foobar

packing foobar.........    <-- Verbosité INFO
    checking foobar.....   <-- Verbosité INFO

(2) $ Ncooker -v INFO check foobar.nbuild

checking foobar.....   <-- Verbosité INFO

On voit que, bien que le même niveau de verbosité INFO soit utilisé, les 
commandes (1) et (2) n'affichent pas le même niveau de détails. On sait que 
ce sont bien des messages de niveau INFO parce que tu le précises à coté, 
mais pour (1), on dirait qu'un niveau de détail supplémentaire est affiché 
avec « checking foobar ».


Ton exemple pour « Ncooker -v DETAIL pack foobar » n'est pas complet. On 
devrait obtenir qqchose comme :

(3) $ Ncooker -v DETAIL pack foobar

packing foobar.........    <-- Verbosité INFO
    checking foobar.....   <-- Verbosité INFO
        checking build file   <-- Verbosité DETAIL
    creating packaging environment <-- Verbosité DETAIL
    Create "working_dir" NBUILD package <-- Verbosité DETAIL
    Cleaning packaging environment <-- Verbosité DETAIL

Là, on voit qu'il y a un problème. Les trois derniers messages ne s'affichent 
qu'au niveau DETAIL alors que leur présentation laisse à penser qu'ils 
devraient déjà s'afficher au niveau INFO (ce qui n'est pas le cas, voir 
l'exemple (1) ).

Si on joue sur la présentation pour les indenter comme « checking build 
file », on va croire que ce sont des étapes qui font partie de « checking 
foobar », ce qui n'est pas le cas. Donc ça ne va pas.
Si on les transforme en message de niveau INFO, on va obtenir ceci pour le 
niveau de versosité INFO :

$ Ncooker -v INFO pack foobar

packing foobar.........    <-- Verbosité INFO
    checking foobar.....   <-- Verbosité INFO
    creating packaging environment <-- Verbosité INFO
    Create "working_dir" NBUILD package <-- Verbosité INFO
    Cleaning packaging environment <-- Verbosité INFO

C'est mieux, mais on accentue encore plus le premier problème : pourquoi 
a-t-on autant de message affichés pour Pack, et pas pour Check alors que 
c'est le même niveau INFO ? :-)

Je trouve que cette solution apporte beaucoup d'incohérences.  Je ne suis donc 
pas convaincu :-)


Pour ce qui est de la solution que j'ai proposé, je suis d'accord avec toi que 
des noms de niveaux comme 1, 2, 3 ... sont beaucoup moins parlant que INFO, 
DETAIL et FULL (ce qui ne veut pas dire qu'ils ne le sont pas du tout :-) A 
nous aussi de faire en sorte que ce soit clair dans l'aide). Je me suis 
inspiré de certains outils en ligne de commande qui utilisent le principe 
suivant :

$ tool -v  <--- 1 niveau de détail (v pour verbose)
$ tool -vv  <--- 2 niveaux de détail
$ tool -vvv <--- 3 niveaux de détail
...

Je vais regarder quelles sont les solutions adoptées par d'autres outils ...

++
Gontran

Répondre à