NAME

pause-checkperms - check PAUSE permissions are consistent for all modules in a dist

SYNOPSIS

pause-checkperms --user NEILB

DESCRIPTION

pause-checkperms looks at the PAUSE permissions for all modules in CPAN distributions, and lets you know if they're consistent. It will typically be used to check all your CPAN distributions. My PAUSE id is NEILB, so I'd run the following:

pause-checkperms --user NEILB

This will check all dists where I have permissions for at least one module in the dist. It will only display details of distributions where the permissions are inconsistent. At the time I was writing this script, it would generate the following output for me:

PAUSE-Permissions
  PAUSE::Permissions                 |      NEILB
  PAUSE::Permissions::Entry          |      NEILB
  PAUSE::Permissions::EntryIterator  |      NEILB
  PAUSE::Permissions::Module         | ANDK neilb
  PAUSE::Permissions::ModuleIterator |      NEILB

This shows that I'm the owner of all modules in the PAUSE-Permissions dist, except for PAUSE::Permissions::Module, which ANDK is the owner of, and I have co-maint permissions. The owner's PAUSE id is shown in upper case, and co-maints are listed in lower case.

The permissions shown above are problematic for two reasons:

  • Neither ANDK or NEILB can grant co-maint permissions for the whole distribution. Only the owner of a module can grant co-maint.

  • Even though he owns one module, ANDK couldn't release this distribution. If he tried to, the indexing stage of PAUSE would fail for the modules where ANDK doesn't have permissions.

    In search.cpan.org this would then be flagged as

    * * UNAUTHORISED RELEASE * *

    You can use the PAUSE web interface to correct any inconsistent permissions. In this case I'll have to ask ANDK to transfer ownership of PAUSE::Permissions::Module to me.

If you don't specify a user, pause-checkperms will check all distributions on CPAN.

PAUSE Permissions model

The PAUSE permissions model is based on modules and not distributions. If you're not familiar with the PAUSE permissions model, read the documentation for PAUSE::Permissions, which explains it.

CAVEAT

This is my first attempt writing an App:: module and partner script using MooX::Options. It feels all wrong, but I've been wanting to release a tool to do this for a while, so I'm sucking it and seeing.

Feel free to suggest better ways to do this.

SEE ALSO

App::PAUSE::Comaint comes with a comaint script which you can use to give someone co-maint permission for modules that you're owner of.

App::PAUSE::CheckPerms contains the body of this script.

PAUSE::Permissions lets you iterate over all PAUSE permissions data. It also details the PAUSE permissions model.

PAUSE::Packages lets you iterate over all distributions on CPAN, getting a list of modules in each distribution.

REPOSITORY

https://github.com/neilbowers/App-PAUSE-CheckPerms

AUTHOR

Neil Bowers <neilb@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2013 by Neil Bowers <neilb@cpan.org>.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.