NAME
    CPAN::Checksums - Write a CHECKSUMS file for a directory as on CPAN

SYNOPSIS
      use CPAN::Checksums qw(updatedir);
      my $success = updatedir($directory);

INCOMPATIBILITY ALERT
    Since version 1.0 the generation of the attribute "shortname" is turned
    off by default. It was too slow and was not used as far as I know, and
    above all, it could fail on large directories. The shortname feature can
    still be turned on by setting the global variable $TRY_SHORTNAME to a
    true value.

DESCRIPTION
    updatedir takes a directory name as argument and writes a typical
    CHECKSUMS file in that directory as used on CPAN unless a previously
    written CHECKSUMS file is there that is still valid. Returns 2 if a new
    CHECKSUMS file has been written, 1 if a valid CHECKSUMS file is already
    there, otherwise dies. Please note, that CPAN CHECKSUMS files ignore
    filenames matching "/readme$/i".

    Setting the global variable $CAUTION causes updatedir() to report
    changes of files in the attributes "size", "mtime", "md5", or "md5-ungz"
    to STDERR.

    By setting the global variable $TRY_SHORTNAME to a true value, you can
    tell updatedir() to include an attribute "shortname" in the resulting
    hash that is 8.3-compatible. Please note, that updatedir() in this case
    may be slow and may even fail on large directories, because it will
    always only try 1000 iterations to find a name that is not yet taken and
    then give up.

    Setting the global variable $SIGNING_KEY makes the generated CHECKSUMS
    file to be clear-signed by the command specified in $SIGNING_PROGRAM
    (defaults to "gpg --clearsign --default-key "), passing the signing key
    as an extra argument. The resulting CHECKSUMS file should look like:

        0&&<<''; # this PGP-signed message is also valid perl
        -----BEGIN PGP SIGNED MESSAGE-----
        Hash: SHA1

        # CHECKSUMS file written on ... by CPAN::Checksums (v...)
        $cksum = {
            ...
        };

        __END__
        -----BEGIN PGP SIGNATURE-----
        ...
        -----END PGP SIGNATURE-----

    note that the actual data remains intact, but two extra lines are added
    to make it legal for both OpenPGP and perl syntax.

PREREQUISITES
    DirHandle, IO::File, Digest::MD5, Compress::Zlib, File::Spec,
    Data::Dumper, Data::Compare

AUTHOR
    Andreas Koenig, andreas.koenig@anima.de; GnuPG support by Autrijus Tang

SEE ALSO
    perl(1).

