Créer une application ligne de commande de type console (partie 1)
Objectifs
Le besoin est d’avoir une application type console qui va permettre d’interroger un web service en mode texte. On va définir les commandes suivantes :
- version : affiche la version de l’application
- save : sauvegarde des paramètres
- config : affiche la configuration
- set : permettre la valorisation d’un paramètre de configuration : url du serveur …
- jobs : affichage des informations du webservices.
Notre console sera une application client pour travis-ci.org. Elle affichera les jobs d’un repo travis. Je développe l’application en même temps que l’écriture de ce tuto.
Les variables :
- account : le compte
- repository : l’idenfiant du repository
Lors de ce tuto, nous allons mettre en oeuvre des services tiers (travis, ..) afin d’obtenir une chaine d’intégration continue pour cette application
Création de l’environnement de développement
L’utilisation d’un environnement python via virtualenv permet de mettre en place un environnement spécifique au projet sans se prendre la tête sur les versions et les dépendances des librairies. Afin de simplifier encore la création et l’utilisation de l’environnement virtuel, nous allons utiliser virtualenvwrapper.
L’installation de virtualenvwrapper se fait simplement via la commande pip
pip install virtualenvwrapper
La création de l’environnement se fait par :
mkvirtualenv travisclient
un fois les messages d’installation passés, vous devez avoir sur votre prompt un truc du genre
(travisclient)[cbrun@localhost travisclient]$
Pour réactiver l’environnement de développement, il suffit d’utiliser la commande workon suivi du nom de l’environnement. Dans notre cas, cela donne :
[cbrun@localhost travisclient]$workon travisclient
(travisclient)[cbrun@localhost travisclient]$
pour désactiver l’environnement, la commande est deactivate
Nous allons commencer le développement de notre console, pour cela, nous avons besoins de la librairie cmd2, et pour l’installer dans notre environnement virtuel, un bon coup de pip
pip install cmd2
Développement de notre console
Ci-dessous une console minimum
import cmd2
class TravisConsole(cmd2.Cmd):
def rien(self):
pass
if __name__ == '__main__':
console = TravisConsole()
console.cmdloop()
On peut lancer la console, et à minima utiliser les commandes fournies par la librairie (help par exemple)
(travisclient)[cbrun@localhost travisclient]$ python travisconsole.py
(Cmd) help
Documented commands (type help <topic>):
========================================
_load ed history list py save shortcuts
_relative_load edit l load r set show
cmdenvironment hi li pause run shell
Undocumented commands:
======================
EOF eof exit help q quit
(Cmd)
Création d’une commande pour notre console
Nous allons commencer par la commande version. La librairie cmd2 facilite grandement la tâche car pour notre commande, il suffit d’ajouter une fonction do_[notre commande], soit do_version et le tour est joué. Ce qui donne pour notre programme
import cmd2
class TravisConsole(cmd2.Cmd):
def do_version(self, args):
print "Version 1.0"
return True
if __name__ == '__main__':
console = TravisConsole()
console.cmdloop()
On lance la commande, et à l’invite de la console, il suffit de saisir version, pour voir s’afficher le résultat