URL: https://linuxfr.org/forums/programmation-python/posts/scripts-avec-une-double-interface-cli-cgi Title: Scripts avec une double interface CLI / CGI Authors: gouttegd Date: 2014年10月15日T19:09:11+02:00 License: CC By-SA Tags: Score: 4 Bonjour, Dans le cadre de mon activité de biologiste et en qualité de « geek du labo », je ~~développe~~ bricole occasionnellement quelques scripts Python pour automatiser certaines tâches. Malheureusement, mes collègues ne peuvent guère en profiter tant que ces scripts s’utilisent en ligne de commande uniquement. Leur dire d’utiliser un truc en ligne de commande pour se simplifier la vie, c’est un peu comme dire à un enfant d’aller chez le dentiste pour ne plus avoir mal aux dents : le remède est peut-être bon mais il donne l’impression d’être pire que le mal. Du coup, j’ai modifié un de ces scripts pour qu’il puisse fonctionner en deux modes : un mode « CLI » (ligne de commande) pour moi, et un mode « CGI » pour mes collègues, où le script appelé sans arguments génère un formulaire HTML basique qui, une fois complété, rappelle le script avec en arguments le contenu du formulaire. Ce script est installé sur une des machines du labo, et est rendu accessible sur le réseau local par un serveur Apache avec mod_cgi. Pour ce premier essai, j’ai fait les choses à la main et à LA RACHE. En gros, au début du script, je détecte la présence de la variable d’environnement `GATEWAY_INTERFACE` qui m’indique si je suis en mode CGI, et le cas échéant je détourne l’exécution vers une fonction qui s’occupe, soit de générer le formulaire HTML, soit d’extraire les arguments de la requête CGI. Sinon, par défaut je parse les arguments de la ligne de commande. Comme l’expérience est concluante (mes collègues sont plus disposés à utiliser une interface web qu’une interface CLI, et moi ça ne me fait toujours qu’un script à ~~développer~~ bricoler), j’aimerais à présent faire la même chose de façon plus automatique. En gros, je voudrais n’avoir qu’à _décrire_ d’une façon ou d’une autre les arguments attendus par le script, puis appeler une seule fonction magique qui détecterait le mode d’invocation du script (CGI ou CLI), obtiendrait les arguments de la façon appropriée (en parsant la ligne de commande ou par un formulaire HTML) et me renverrait les arguments prêts à être utilisés. Je n’ai pas trouvé de modules Python qui feraient ça. Il y a [une flambée de « CLI Application Framework »](https://news.ycombinator.com/item?id=7642942) pour faciliter le parsing de la ligne de commande, mais aucun d’eux ne semble permettre un double usage CLI/CGI. Je suis donc à deux doigts de m’atteler à la tâche et de ~~développer~~ bricoler moi-même le module de mes rêves mais, n’étant pas particulièrement sujet au syndrome NIH, je voudrais d’abord vous demander si vous connaissez déjà un tel module, ou une autre solution similaire. Secondairement, pensez-vous qu’un tel module pourrait intéresser du monde, dans l’hypothèse où il n’existerait pas déjà un ? Merci.