Une interface de ligne de commande est un outil puissant pour les développeurs et les administrateurs. Cet outil vous aide à automatiser les activités de routine et vous permet d’accéder facilement à toute la puissance d’un langage de programmation. Il existe de nombreuses interfaces de ligne de commande différentes, mais aujourd’hui, nous allons voir comment créer une CLI en utilisant Python et une bibliothèque appelée click.

Qu’est-ce que le CLI ?

L’interface de ligne de commande (CLI) est une manière d’interagir avec un programme informatique où l’utilisateur tape une commande dans un terminal de texte. Un programme qui nécessite que l’utilisateur tape des commandes est souvent appelé interface de ligne de commande, langage de commande ou interface de terminal. Par exemple, l’interpréteur Python peut être appelé à l’aide de la commande python. Les systèmes d’exploitation peuvent également disposer d’une interface de ligne de commande permettant de contrôler certaines fonctions, comme l’imagerie disque avec la commande dd dans les systèmes d’exploitation de type Unix. En Python, on peut accéder à un programme via la ligne de commande en créant un script Python, appelé CLI (command-line interface).

Conditions préalables :

Créez un environnement virtuel :

Pour créer l’environnement virtuel, utilisez la commande suivante dans votre terminal ou votre invite de commande

mkdir cli
cd cli

Créer un environnement virtuel

python3 -m venv cli

Activez l’environnement dans Windows

cli\Scripts\activate.bat

Activer l’environnement sous Linux

source cli/bin/activate

Click:

Click est un paquetage Python qui permet aux applications d’avoir des interfaces uniques et personnalisées, construites de manière organisée et composable. Il permet aux développeurs de configurer et d’étendre l’interface avec un minimum d’effort et fournit des valeurs par défaut judicieuses qui permettent une configuration rapide.

Il vise à rendre le processus d’écriture d’outils en ligne de commande rapide et amusant, ainsi que flexible afin d’éviter toute frustration liée à l’impossibilité d’implémenter une API CLI prévue.

Vous pouvez installer click en utilisant la commande suivante dans votre terminal.

pip install click

Exemple -1 :

Ce que nous faisons faire à ce CLI est que si quelqu’un tape son nom pendant l’exécution du script, il dira en retour hello et ensuite le nom de l’utilisateur. Vous comprendrez mieux si vous regardez la sortie.

import click

@click.command()
@click.argument("name")
def main(name):
    print(f'Hello {name}')

if __name__ == "__main__":
    main()

Explication du code :

  1. Importez la bibliothèque de clics.
  2. Attachez le décorateur à la fonction principale. Et développez notre exemple en paramétrant le nom à l’aide d’un décorateur click.command.
  3. Ajout du deuxième décorateur click.argument pour spécifier le nom de la variable qui va contenir l’argument que nous allons passer.

Sortie :

Comme vous pouvez le constater, notre premier petit CLI fonctionne parfaitement. Nous allons maintenant ajouter quelques fonctions supplémentaires à ce CLI.

import click

@click.command()
@click.argument("name")
@click.option('--number', type=int)
def main(name, number):
    for i in range(number):
        print(f'Hello {name}')

if __name__ == "__main__":
    main()

Cet exemple est plus ou moins similaire au précédent mais ici nous avons ajouté un décorateur supplémentaire click.option qui spécifie également le type de données et nous l’ajoutons dans la boucle for afin qu’il puisse le retourner plusieurs fois dans la sortie.

Sortie

Comme vous pouvez le voir, nous pouvons maintenant donner une option dans la ligne de commande et améliorer notre fonctionnalité.

L’un des aspects intéressants du clic est qu’il vous permet d’incorporer un massage d’aide progressif. Si nous nous mettons à la place de l’utilisateur final, nous pouvons nous demander s’il est familier avec le script ou s’il connaît bien le codage. Alors ce qu’ils peuvent faire, laissez-moi vous le montrer.

L’utilisateur peut utiliser le paramètre –help pour générer une sortie dynamique. En dehors de la boîte, le clic tente de fournir une sorte d’assistance sur ce que vous pouvez faire avec le script.

Comme vous pouvez le voir dans la sortie, ce clic vous donne quelques astuces d’utilisation supplémentaires du script, il vous donne également les options. Rappelez-vous que cette sortie est générée dynamiquement, donc si votre script est différent de celui-ci, la sortie sera également différente.

Vous pouvez également ajouter le message d’aide dans le script afin que l’utilisateur final puisse mieux comprendre le cli.

import click

@click.command()
@click.argument('name')
@click.option('--number', type=int, help="please enter the number of time you want to show the message")
def main(name, number):
    '''
    write your help message here
    '''
    for i in range(number):
        print(f'Hello {name}')

if __name__ == "__main__":
    main()

Sortie

Comme vous pouvez le constater, l’utilisateur final saura exactement ce qu’il doit saisir pour utiliser le cli.

Exemple -2 :

Dans cet exemple, nous allons créer une CLI afin que l’utilisateur ne puisse saisir que des valeurs spécifiques.

import click

@click.command()
@click.option('--weather', type=click.Choice(['sunny', 'rainy', 'snowy']), help="Please select the weather type")
def main(weather):
    print(f'My fav weather is {weather}')

if __name__ == "__main__":
    main()

Le code est très simple, ce que nous avons fait ici est simplement d’utiliser le décorateur click.option qui est disponible dans la bibliothèque clicked et le reste est le même que l’exemple précédent.

Sortie

Exemple 3 : Créer une CLI avec un groupe de commandes

Il s’agit d’un exemple de restaurant où les utilisateurs veulent commander le déjeuner ou le dîner et savoir s’ils préfèrent la pizza aux hamburgers. Vous comprendrez mieux cela en regardant le résultat.

import click

# creating group
@click.group()
def cli():
    pass

# creating subgroup for lunch
@cli.group()
def lunch():
    pass

# creating subgroup for dinner
@cli.group()
def dinner():
    pass

@click.command()
def burger():
    print(f'Enjoy your meal!')

@click.command()
def pizza():
    print(f'Enjoy your meal!')

lunch.add_command(burger)
dinner.add_command(burger)
lunch.add_command(pizza)
dinner.add_command(pizza)


if __name__ == "__main__":
    cli()

Ici, nous créons un groupe de commandes que l’utilisateur final pourra utiliser et cliquer sur le paramètre group.

Sortie

Comme vous pouvez le voir maintenant, l’utilisateur a la possibilité de sélectionner le dîner ou le déjeuner, puis le plat qu’il souhaite commander.

Voici une astuce pour rendre votre ligne de commande plus intéressante. Nous allons utiliser ici une bibliothèque Python appelée color que vous pouvez installer en utilisant la commande suivante.

pip install color

Importez maintenant la bibliothèque dans votre code comme ceci 

from colorama import Fore, Back, Style

Définissez ensuite la couleur dans l’instruction print comme suit 

print(Fore.GREEN + f'Enjoy your meal!')

Et c’est tout ! Vous générez maintenant la sortie de la console en couleur comme vous l’avez défini. C’est simple et rapide à générer, mais cela donne à votre message plus de caractère et de personnalité que le bon vieux texte en noir et blanc.

Le mot de la fin

Dans cet article de blog, nous avons appris à créer des CLI à l’aide de python et de la bibliothèque click. Les CLI peuvent s’avérer utiles dans plusieurs situations différentes, et nous avons expliqué quelques situations différentes ici en vous donnant des exemples. Nous avons également utilisé la bibliothèque colors pour ajouter de la couleur à la sortie.