ExtUtils_Manifest

# NAME

ExtUtils::Manifest - utilities to write and check a MANIFEST file

# SYNOPSIS

require ExtUtils::Manifest;

`ExtUtils::Manifest::mkmanifest;`

`ExtUtils::Manifest::manicheck;`

`ExtUtils::Manifest::filecheck;`

`ExtUtils::Manifest::fullcheck;`

`ExtUtils::Manifest::skipcheck;`

`ExtUtild::Manifest::manifind();`

`ExtUtils::Manifest::maniread($file);`

`ExtUtils::Manifest::manicopy($read,$target,$how);`

# DESCRIPTION

Mkmanifest() writes all files in and below the current directory to a file named in the global variable $ExtUtils::Manifest::MANIFEST (which defaults to `MANIFEST`) in the current directory. It works similar to

        find . -print

but in doing so checks each line in an existing `MANIFEST` file and includes any comments that are found in the existing `MANIFEST` file in the new one. Anything between white space and an end of line within a `MANIFEST` file is considered to be a comment. Filenames and comments are seperated by one or more TAB characters in the output. All files that match any regular expression in a file MANIFEST.SKIP (if such a file exists) are ignored.

Manicheck() checks if all the files within a `MANIFEST` in the current directory really do exist.

Filecheck() finds files below the current directory that are not mentioned in the `MANIFEST` file. An optional file MANIFEST.SKIP will be consulted. Any file matching a regular expression in such a file will not be reported as missing in the `MANIFEST` file.

Fullcheck() does both a manicheck() and a filecheck().

Skipcheck() lists all the files that are skipped due to your MANIFEST.SKIP file.

Manifind() retruns a hash reference. The keys of the hash are the files found below the current directory.

Maniread($file) reads a named `MANIFEST` file (defaults to `MANIFEST` in the current directory) and returns a HASH reference with files being the keys and comments being the values of the HASH.

Manicopy($read,$target,$how) copies the files that are the keys in the HASH %$read to the named target directory. The HASH reference $read is typically returned by the maniread() function. This function is useful for producing a directory tree identical to the intended distribution tree. The third parameter $how can be used to specify a different methods of ``copying''. Valid values are `cp`, which actually copies the files, `ln` which creates hard links, and `best` which mostly links the files but copies any symbolic link to make a tree without any symbolic link. Best is the default.

# MANIFEST.SKIP

The file MANIFEST.SKIP may contain regular expressions of files that should be ignored by mkmanifest() and filecheck(). The regular expressions should appear one on each line. A typical example:

        \bRCS\b
        ^MANIFEST\.
        ^Makefile$
        ~$
        \.html$
        \.old$
        ^blib/
        ^MakeMaker-\d

# EXPORT_OK

`&mkmanifest`, `&manicheck`, `&filecheck`, `&fullcheck`, `&maniread`, and `&manicopy` are exportable.

# GLOBAL VARIABLES

`$ExtUtils::Manifest::MANIFEST` defaults to `MANIFEST`. Changing it results in both a different `MANIFEST` and a different MANIFEST.SKIP file. This is useful if you want to maintain different distributions for different audiences (say a user version and a developer version including RCS).

<$ExtUtils::Manifest::Quiet> defaults to 0. If set to a true value, all functions act silently.

# DIAGNOSTICS

All diagnostic output is sent to `STDERR`.

Not in MANIFEST: file
  is reported if a file is found, that is missing in the `MANIFEST` file which is excluded by a regular expression in the file MANIFEST.SKIP .

No such file: file
  is reported if a file mentioned in a `MANIFEST` file does not exist.

MANIFEST: $!
  is reported if `MANIFEST` could not be opened.

Added to MANIFEST: file
  is reported by mkmanifest() if $Verbose is set and a file is added to MANIFEST. $Verbose is set to 1 by default.

# SEE ALSO

ExtUtils::MakeMaker which has handy targets for most of the functionality.

# AUTHOR

Andreas Koenig <koenig@franz.ww.TU-Berlin.DE>