Groups | Search | Server Info | Login | Register


Groups > fr.comp.os.unix > #7970

Re: règle pour écrire les "usage: ..."

From Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid>
Newsgroups fr.comp.os.unix
Subject Re: règle pour écrire les "usage: ..."
Date 2022-07-13 13:45 +0200
Organization Université de Strasbourg
Message-ID <871qupxml4.fsf@universite-de-strasbourg.fr.invalid> (permalink)
References (3 earlier) <87a69ix9rl.fsf@universite-de-strasbourg.fr.invalid> <62cc5318$0$18751$426a34cc@news.free.fr> <tahkuf$6ob$1@cabale.usenet-fr.net> <875yk3xsbg.fsf@universite-de-strasbourg.fr.invalid> <62ce256c$0$22264$426a34cc@news.free.fr>

Show all headers | View raw


Thomas <fantome.forums.tDeContes@free.fr.invalid> writes:

> par ex, que diriez vous si je décidais de rendre dir obligatoire ?
> usage: rapid [-v] -ni dir gui_file ...
> au lieu de
> usage: rapid [-v] -ni [-od dir] gui_file ...

C'est à toi de décider.

> https://semver.org/
> qu'il faut attendre la prochaine version majeure pour changer les 
> options ?

Pour une application, ajouter ou modifier le sens des options est selon
moi une changement d'API.

>> accepter "-vn" comme "-v -n",
>> accepter "-odir" comme "-o dir",
>
> est-ce que c'est qqch que les usagers utilisent bcp, ça ?
> parce que moi je trouve ça plutôt embêtant, avec notamment :
> "-onv" = "-o -n -v", ou
> "-onv" => dir = "nv" ?

La seconde. Si un argument contient plusieurs options, la première
nécessitant un argument d'option s'impose : l'argument de l'option est
soit la suite, soit l'argument suivant.

-onv => -o nv
-nvo dir => -n -v -o dir
-nvovn => -n -v -o vn

>> Tellement pratique qu'on cherche rarement ailleurs. Par contre cela
>> oblige à la fin à vérifier la cohérence (si il y a une option -o il faut
>> qu'il y ait aussi l'option -n).
>
> donc il faut gérer l'erreur à ce moment là (-o en trop ou -n manquant ?).
> il faut aussi vérifier s'il y a des options non autorisées qui ont été 
> utilisées, vérifier je ne sais pas bien comment s'il y a bien eu un 
> argument pour -o, ...

Bon c'est quand même pas la mer à boire. Voilà ce que ça donnerait (dans
un langage imaginaire)

    # argc et tableau argv fournis (arguments du prog à partir de 1)
    optind = 1
    opt_v = opt_ni = opt_od = False
    dir = "/valeur/par/défaut"
    # analyser toutes les options
    while optind < argc and argv[optind][0] == "-":
        if argv[optind] in ["-v", "--verbose"]:
            opt_v = True; optind += 1
        elif argv[optind] in ["-ni", "--new-iork"]:
            opt_ni = True; optind += 1
        elif argv[optind] in ["-od", "--output-dir"] and optind+1 < argc:
            opt_od = True; dir = argv[optind+1]; optind += 2
        else:
            wtf ("option inconnue")
    # vérifier la cohérence
    if opt_n == False and opd_od == True:
        wtf ("-od sans -ni")
    if optind == argc:
        wtf ("pas de gui_file")

On peut affiner le cas d'erreur où "-od" est le dernier élément. On peut
aussi tester la duplication des options (si le opt_x est déjà True). On
peut aussi prévoir "-oddir" (ça complique le test et la logique pour
l'incrémentation de optind), etc.

Le test de cohérence final a exactement la meme structure que celui que
tu fais en analysant les arguments (sauf qu'il teste seulement les
différents booléens).

Si tu veux autoriser des options après les gui_files, c'est un peu plus
compliqué (il faut mémoriser la position du premier gui_file, et tout
décaler dès que tu trouves une option).

(À mon avis, ce n'est pas assez gratifiant pour se passer de getopt() ou
s'écarter de ses conventions, mais chacun son truc.)

> getopt(), en plus d'ajouter une dépendance

C'est Posix, il y a de fortes chances que la dépendance soit déjà
satisfaite.

-- Alain.

Back to fr.comp.os.unix | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

règle pour écrire les "usage: ..." Thomas <fantome.forums.tDeContes@free.fr.invalid> - 2022-07-09 01:59 +0200
  Re: règle pour écrire les "usage: ..." ST <st@unices.org> - 2022-07-09 04:26 +0000
    Re: règle pour écrire les "usage: ..." Thomas <fantome.forums.tDeContes@free.fr.invalid> - 2022-07-09 16:02 +0200
      Re: règle pour écrire les "usage: ..." Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid> - 2022-07-09 23:21 +0200
        Re: règle pour écrire les "usage: ..." Thomas <fantome.forums.tDeContes@free.fr.invalid> - 2022-07-11 18:43 +0200
          Re: règle pour écrire les "usage: ..." Olivier Miakinen <om+news@miakinen.net> - 2022-07-11 18:59 +0200
            Re: règle pour écrire les "usage: ..." Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid> - 2022-07-11 23:17 +0200
              Re: règle pour écrire les "usage: ..." Thomas <fantome.forums.tDeContes@free.fr.invalid> - 2022-07-13 03:52 +0200
                Re: règle pour écrire les "usage: ..." Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid> - 2022-07-13 13:45 +0200
                Re: règle pour écrire les "usage: ..." Thomas <fantome.forums.tDeContes@free.fr.invalid> - 2022-07-13 16:45 +0200
                Re: règle pour écrire les "usage: ..." Nicolas George <nicolas$george@salle-s.org> - 2022-07-13 15:24 +0000
                Re: règle pour écrire les "usage: ..." Thomas <fantome.forums.tDeContes@free.fr.invalid> - 2022-07-13 18:24 +0200
                Re: règle pour écrire les "usage: ..." Olivier Miakinen <om+news@miakinen.net> - 2022-07-13 18:51 +0200
                Re: règle pour écrire les "usage: ..." Thomas <fantome.forums.tDeContes@free.fr.invalid> - 2022-07-13 21:36 +0200
                Re: règle pour écrire les "usage: ..." Olivier Miakinen <om+news@miakinen.net> - 2022-07-13 23:40 +0200
                Re: règle pour écrire les "usage: ..." Nicolas George <nicolas$george@salle-s.org> - 2022-07-13 22:48 +0000
                Re: règle pour écrire les "usage: ..." Thomas <fantome.forums.tDeContes@free.fr.invalid> - 2022-08-09 20:48 +0200
                Re: règle pour écrire les "usage: ..." Nicolas George <nicolas$george@salle-s.org> - 2022-08-09 22:17 +0000
                Re: règle pour écrire les "usage: ..." Thomas <fantome.forums.tDeContes@free.fr.invalid> - 2022-08-14 02:14 +0200
                Re: règle pour écrire les "usage: ..." Nicolas George <nicolas$george@salle-s.org> - 2022-08-14 08:46 +0000
                Re: règle pour écrire les "usage: ..." Thomas <fantome.forums.tDeContes@free.fr.invalid> - 2023-04-19 03:27 +0200
                Re: règle pour écrire les "usage: ..." Thomas <fantome.forums.tDeContes@free.fr.invalid> - 2022-07-14 20:02 +0200
                Re: règle pour écrire les "usage: ..." Olivier Miakinen <om+news@miakinen.net> - 2022-07-14 20:55 +0200
                Re: règle pour écrire les "usage: ..." Marc SCHAEFER <schaefer@alphanet.ch> - 2022-07-14 19:06 +0000
                Re: règle pour écrire les "usage: ..." Thomas <fantome.forums.tDeContes@free.fr.invalid> - 2022-07-31 04:54 +0200
                Re: règle pour écrire les "usage: ..." Nicolas George <nicolas$george@salle-s.org> - 2022-07-13 17:23 +0000
                Re: règle pour écrire les "usage: ..." Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid> - 2022-07-13 19:15 +0200
                Re: règle pour écrire les "usage: ..." Thomas <fantome.forums.tDeContes@free.fr.invalid> - 2022-07-14 18:54 +0200
                Re: règle pour écrire les "usage: ..." Olivier Miakinen <om+news@miakinen.net> - 2022-07-14 20:33 +0200
                Re: règle pour écrire les "usage: ..." Thomas <fantome.forums.tDeContes@free.fr.invalid> - 2022-07-31 03:02 +0200
                Re: règle pour écrire les "usage: ..." Nicolas George <nicolas$george@salle-s.org> - 2022-07-13 14:10 +0000
            Re: règle pour écrire les "usage: ..." Thomas <fantome.forums.tDeContes@free.fr.invalid> - 2022-07-11 23:50 +0200
            Re: règle pour écrire les "usage: ..." Thomas <fantome.forums.tDeContes@free.fr.invalid> - 2022-08-14 03:07 +0200
  Re: règle pour écrire les "usage: ..." Olivier Miakinen <om+news@miakinen.net> - 2022-07-09 07:42 +0200
    Re: règle pour écrire les "usage: ..." Thomas <fantome.forums.tDeContes@free.fr.invalid> - 2022-07-09 15:38 +0200
      Re: règle pour écrire les "usage: ..." Olivier Miakinen <om+news@miakinen.net> - 2022-07-09 16:54 +0200

csiph-web