In article <
tamt6m$2338$1@cabale.usenet-fr.net>,
Olivier Miakinen <om+
news@miakinen.net> wrote:
Le 13/07/2022 18:24, Thomas a écrit :
mais surtout, Est-ce que, à ton avis en tant qu'usager, ceci est
acceptable (c'est ça qu'Olivier avait soulevé) ?
$ ./rapid gui_file -v
Unexpected switch -v
Usage: ./rapid [-v] [gui_file]
./rapid [-v] -ni [-od output_directory] gui_file ...
Pour moi, il est tout à fait normal de refuser une option -v après
le premier argument qui n'est pas une option (gui_file).
je disais à Alain qu'amha il faut le faire si on veut "rester dans
l'esprit" de getopt(),
mais si je te comprend bien, ça n'a tellement pas d'importance qu'il ne
faut pas que je m'embête avec ça ? :-)
Cela dit, le message « Unexpected switch -v » est inapproprié. Selon
que ta syntaxe accepte ou non plus d'un fichier, ce sera soit :
File not found '-v' (sauf bien sûr si le fichier -v existe)
soit :
No more than one file! (gui_file -v)
j'ai tendance à penser qu'en l'absence de "--", tout argument commençant
par "-" est une option, et que, sorties de la zone prévue pour elles,
elles sont mal positionnées.
ça me parait un peu cafouilleux de dire : les noms de fichier commençant
par "-" sont autorisés, à condition d'en trouver un qui ne commence pas
par "-" à mettre en 1er.
en gros, mon éducation Ada c'est : "avertir l'usager qu'il a peut-être
fait une erreur, et le laisser corriger - plutôt que de choisir une
interprétation, et de prendre l'initiative de faire qqch que peut-être
il ne voulait pas".
je sais que les dev C ont une toute autre approche ...
typiquement, si je passe à getopt() plus tard, la même ligne de commande
changera de signification, sans qu'aucune des 2 ne fasse une erreur ...
ce qui me parait dangereux.
$ ./rapid -ni -od p -v u
Unexpected switch -v
Usage: ./rapid [-v] [gui_file]
./rapid [-v] -ni [-od output_directory] gui_file ...
Là ça me semble brutal pour l'utilisateur. Tant que tu en es à parser
des options et pas des fichiers, il n'y a à mon avis aucune raison
de refuser une option -v
j'ai oublié de demander en passant : je peux garder le même "Usage:"
même s'il laisse penser que l'ordre est important ? l'important c'est
qu'en réalité ça ne soit pas le cas ?
$ ./rapid -od p -ni -v u
Unexpected switch -od
Usage: ./rapid [-v] [gui_file]
./rapid [-v] -ni [-od output_directory] gui_file ...
Là aussi, encore que ta syntaxe est assez particulière. Comme Nicolas
je ne sais pas ce que fait ton logiciel et je ne l'utiliserai sans
doute jamais,
et je vous remercie tous de prendre du temps pour moi malgré ça :-))
(ce que j'espère au fond, c'est qu'un jour vous trouviez mon logiciel
utile et que vous constatiez le résultat de vos "contributions")
seulement je crois comprendre que l'option -od ne peut
exister que dans le cas où tu as déjà l'option -ni,
oui.
rappelles-toi, tu m'avais suggéré :
usage: rapid [-v] [ gui_file | -ni [-od dir] gui_file... ]
ce qui me semble
peu habituel.
ah ! ....
Te serait-il possible d'accepter l'option -od dans tous les cas lors du
parsing, en disant juste 'attention cette option ne fait rien dans cette
version de la syntaxe' ? Bon, je ne suis pas sûr que ce soit une bonne
idée non plus.
tu veux dire, faire un avertissement au lieu d'une erreur ?
actuellement il fait un avertissement pour les options inconnues,
ce que j'ai transformé en erreur parce que ça me parait bcp plus sur
(voir plus haut).
Ou alors tu changes la syntaxe pour qu'il y ait *une* sous-commande
obligatoire, plus les paramètres optionnels, et enfin les paramètres
positionnels. Par exemple :
Usage: ./rapid i [-v] gui_file
./rapid ni [-v] [-od output_directory] gui_file...
oui, comme dans svn :-)
intéressant :-)
dans le fil "Gérer soi-même ses numéros de version" j'ai indiqué que je
voulais faire un "split" (ou un "fork", je ne sais pas comment tu
appelles ça), ce qui réglerais ce pb,
mais :
- j'essaye de faire en sorte que chaque commit soit du bon code en
fonction de mes connaissances du moment (et si possible même si je sais
que ça ne va pas durer, si ça ne demande pas trop de travail),
- il se peut que j'en ai besoin de toutes façons, si je demande à mon
"rapid-ni" de savoir faire d'autres choses, pour éviter de multiplier
les exécutables.
du coup, si je comprend bien :
- l'usage est que la sous-commande est sans "-", obligatoire, et tjr au
début,
- ensuite, les paramètres optionnels, tous avec "-" et tous
interchangeables,
- enfin les paramètres positionnels -> ça peut être autre chose qu'une
liste de fichiers ? pourquoi "positionnels" ?
(et d'après toi ils peuvent commencer par "-" sauf le 1er ?)
usage: rm [-f | -i] [-dPRrvW] file ...
qu'est-ce que ça signifie ?
Les options -i et -f sont contradictoires : l'une demande confirmation
à chaque fichier alors que l'autre dit au contraire d'y aller par force
sans aucune demande de confirmation. Elles sont donc exclusives.
merci :-)
-- RAPID maintainerhttp://savannah.nongnu.org/projects/rapid/