cook_bom(1)

NAME
cook_bom - bill of materials

SYNOPSIS
cook_bom [ option... ] dirname [ outfile ]
cook_bom -Help
cook_bom -VERSion

DESCRIPTION
The cook_bom program is used to scan a directory and generate a cookbook fragment containing a bill of materials for that directory. It also includes a recursive reference, via an ``#include-cooked'' directive, to the bills of materials for nested directories.

Output is sent to the standard output unless an output filename is specified.

OPTIONS
The following options are understood:

-DIRectory pathname
    This option may be used to specify a directory search path, similar to cook(1) [search_list] functionality.

-Help
    Provide some help with using the cook_bom program.

-IGnore string
    This option may be used to specify filename patterns to be ignored. It may be given as many times as required.

-PREfix string
    This option may be manipulate the name of the manifest files. Defaults to the empty string if not set.

-SUFfix string
    This option may be manipulate the name of the manifest files. Defaults to ``/manifest.cook if not set.

-VERSion
    Print the version of the cook_bom program being executed.

All other options will produce a diagnostic error.

EXAMPLE
The intended use of this command is to automatically generate a project file manifest in an efficient way. If you have a cookbook of the form
    all_files_in_. = ;
    #include manifest.cook
    manifest = [all_files_in_.];
    set fingerprint mkdir unlink;
    %0manifest.cook: ["if" [in "%0" ""] "then" "." "else" "%0"]
    {
            cook_bom
                    [addprefix '--dir=' [search_list]]
                    "--ignore='*~'"
                    [need]
                    [target]
                    ;
    }
At the end of this fragment, the manifest variable contains a complete list of all files in the directory tree. This variable may then be taken apart with the match_mask function to build ingredients lists.

The constructed manifest.cook files work for both whole-project and recursive (not recommended) builds.