TECHNOS

Créer une application ligne de commande de type console (partie 1)

Une application en ligne de commande

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 https://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’identifiant du repository

Lors de ce tuto, nous allons mettre en œuvre 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

Une 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

 1    import cmd2
 2    
 3    class TravisConsole(cmd2.Cmd):
 4    
 5        def rien(self):
 6            pass
 7    
 8    
 9    if __name__ == '__main__':
10        console = TravisConsole()
11        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

 1import cmd2
 2
 3class TravisConsole(cmd2.Cmd):
 4
 5    def do_version(self, args):
 6        print "Version 1.0"
 7        return True
 8
 9
10if __name__ == '__main__':
11    console = TravisConsole()
12    console.cmdloop()

On lance la commande, et à l’invite de la console, il suffit de saisir version, pour voir s’afficher le résultat

comments powered by Disqus