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