Mon premier module sur le CPAN

Date de publication:
Durée de lecture estimée:

Après pas mal d'années de programmation avec Perl, je me suis enfin décidé à prendre du temps pour contribuer au langage en partageant via le CPAN, un premier module.

Dans le cadre d’un projet dont la finalité était de construire un nouvel annuaire LDAP à partir de données provenant d’une base de données et d’un ancien LDAP, j’ai eu besoin de réaliser une petite barre de progression permettant de suivre en temps réel l’évolution du traitement. Ce gadget fonctionne dans le terminal et n’utilise aucune dépendance. Visuellement, le composant ressemble à ceci :

Writing Files       [##########          ] 50%

Cette barre de progression est constituée d’une seule classe. Un ensemble de tests unitaires permet de valider son comportement. Ce mini projet était donc idéal pour apprendre à diffuser un module via le CPAN.

Pour cela, je suis parti d’un excellent tutorial dont je vous recommande la lecture. Comme recommandé dans la rubrique Make you own CPAN distribution, j’ai utilisé Minilla qui est un outil dédié à la création d’un module CPAN et surtout un logiciel de gestion de son cycle de vie. Il prend en charge :

  • la création du squelette de votre projet,
  • la mise à jour en temps réel des fichiers de configuration,
  • la production de la documentation,
  • la synchronisation de votre projet avec son dépôt Git,
  • le suivi des contributeurs,
  • le test de l’installation de votre module,
  • le déploiement et les mises à jour sur le CPAN.

Mais avant de vous lancer dans la programmation de votre module, je vous recommande de créer votre compte sur le serveur PAUSE (The [Perl programming] Authors Upload Server). Ce compte est indispensable pour avoir le droit de publier sur le CPAN et surtout, il permet de bénéficier d’une adresse mail sur le domaine cpan.org. Celle ci sera une redirection vers votre adresse privée et évitera de diffuser publiquement votre email sur la page de votre module. Dans son arborescence, il vous faut donc utiliser les commandes Git git config user.name et git config user.email pour indiquer à Git cette adresse sur le domaine cpan.org. Minilla l’utilisera pour la génération du manifeste et de la documentation de votre projet.

Mon module est maintenant disponible sur le CPAN et il se nomme Console:ProgressBar. Si vous voulez l’utiliser, il vous suffit d’utiliser la commande cpanm Console::ProgressBar.

use Console::ProgressBar;

# Création d'une barre de progression pour une tâche composée de 20 étapes
my $p = Console::ProgressBar->new('Writing files',20);

# pour chaque étape complétée, l'index de la barre de progression est incrémentée
# et la barre de progression est affichée à la position courante du curseur
for(my $i=1; $i <= 20; $i++) {
    $p->next()->render();
}

Construire ce premier module a été une excellente expérience. J’ai découvert de nouveaux aspects de Perl. Avoir la possibilité d’installer un module via la commande cpanm ou via Carton est bien plus professionnel que de l’inclure à la main. Et surtout, j’ai beaucoup apprécié les retours positifs de plusieurs membres de la communauté Perl.