Les fichiers META.json et META.yml des distributions CPAN sont des sources très importantes d'information automatisée. Par exemple, pour une distribution, ils peuvent indiquer :
Ces champs sont répertoriés dans la documentation du module CPAN::Meta::Spec.
Il n'y a pas de champ spécifié pour la liste des contributeurs de la distribution, mais il y a un moyen d'ajouter des champs personnalisés : il suffit de les préfixer avec x_ ou X_.
Pourquoi devrais-je lister les contributeurs aussi dans le fichier META ?
Certes, ils sont déjà inscrits :
- ou bien dans le fichier des modifications Changes
- ou bien dans la documentation POD du module
Mais, avoir cette liste dans les fichiers META permettra à quelqu'un de les extraire automatiquement afin par exemple de les afficher dans l'outil Meta CPAN.
Ainsi, il sera plus facile de trouver les endroits où une personne a contribué, même si elle n'a jamais publié un module.
Comment ?
J'ai demandé à David Golden qui a suggéré d'utiliser le nom x_contributors à la liste des contributeurs de la même manière qu'ils sont dans la section 'auteurs' dans la section POD du module (Nom <email>).
Voyons comment cela peut être réalisé par les principaux systèmes d'empaquetage !
ExtUtils::MakeMaker
La version la plus récente de Test::Strict a déjà cela dans l'appel de WriteMakefile :
META_MERGE => {
x_contributors => [
'Foo Bar <foo@bar.com>',
'Zorg <zorg@cpan.org>',
],
},
Module::Build
J'ai ajouté la section appropriée pour XML::Feed bien qu'elle n'ait pas été livrée depuis.
Ajouter le code suivant dans l'appel à Module::Build->new :
meta_merge =>
{
x_contributors => [
'Foo Bar <foo@bar.com>',
'Zorg <zorg@cpan.org>',
],
},
Module::Install
J'ai juste ajouté le code ci-dessous à la prochaine livraison de Padre, l'EDI de Perl :
Meta->add_metadata(
x_contributors => [
'Foo Bar <foo@bar.com>',
'Zorg <zorg@cpan.org>',
],
);
Dist::Zilla
Quand j'ai commencé à utiliser ce module, il n'y avait pas de façon manuelle pour ajouter un champ supplémentaire ayant plusieurs valeurs, mais David Golden a rapidement livré le module d'extension Dist::Zilla::Plugin::Meta::Contributors qui vous permet d'écrire ceci :
[Meta::Contributors]
contributor = Foo Bar <foo@bar.com>
contributor = Zorg <zorg@cpan.org>