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

- NAME
- SYNOPSIS
- DESCRIPTION
- MANIFEST.SKIP
- EXPORT_OK
- GLOBAL VARIABLES
- DIAGNOSTICS
- SEE ALSO
- AUTHOR

# 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;

        ExtUtils::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 separated 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. It only reports discrepancies and exits silently if MANIFEST and the tree below the current directory are in sync.

`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()` returns 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. Blank lines and lines which start with `#` in the `MANIFEST` file are discarded.

`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. Blank lines and lines which start with `#` are skipped. Use `\#` if you need a regular expression to start with a sharp character. 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

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

# AUTHOR

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

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