Provided by: libarch-perl_0.5.2-3_all bug

NAME

       Arch::Inventory - class representing a tree inventory

SYNOPSIS

           use Arch::Inventory qw(:category :type);

           my $inv = Arch::Inventory->new;  # use cwd
           print Arch::Inventory->to_string($inv->get_root_entry), "\n";
           print $inv->get_listing;

       or (most commonly):

           use Arch::Tree;

           my $tree = Arch::Tree->new;
           my $inv = $tree->get_inventory;
           print $inv->get_listing;

DESCRIPTION

       Arch::Inventory generates a tree inventory.

       An inventory is a tree structure of elements, each representing a single directory entry
       of the source tree. Each inventory entry is described by an hash with the following
       fields:

       category
           The classification of the tree element. category can be one of TREE, SOURCE, PRECIOUS,
           BACKUP or JUNK.

       untagged
           A boolean value indicating whether the element was first classified as SOURCE but
           lacked an inventory id.

       type
           The tree element type. type can be one of FILE, DIRECTORY or SYMLINK.

       path
           The complete path to the tree element relative to the inventory base directory.

       id  The elements inventory id. May be "undef".

       children
           A hash of the elements direct children, idexed by their last path element.

           This field exists for elements of type DIRECTORY only.

       The category and type constants can be conveniently imported using the tags ":category"
       and ":type".

           use Arch::Inventory qw(:category :type);

METHODS

       The following methods are available:

       new, directory, get_root_entry, get_entry, get_listing, annotate_fs, foreach, dump,
       to_string.

       new [$dir]
           Create an inventory for $dir or the current directory if $dir is not specified.

       directory
           Returns the inventories base directory as passed to new.

       get_root_entry
           Returns the inventory element for the base directory.

           The root entry always has the following properties:

               $root = {
                   category => TREE,       # if {arch} exists, SOURCE otherwise
                   untagged => 1,
                   type     => DIRECTORY,
                   path     => '',
                   id       => undef,
                   children => { ... },
               }

       get_entry $path
       get_entry @path_elements
           Returns the inventory element for the specified path. The path may either be given as
           a single string or as a list of path elements.

           If the element does not exist "undef" is returned.

           Using an empty or no path is equivalent to calling get_root_entry.

       get_listing
           Generates a textual inventory listing equivalent to the output of

               tla inventory -tspbju -B --kind --ids --untagged

           Note: The output order is not equivalent to tla. Instead of strict ASCII order of path
           names, a directory entry is always directly followed by its child entries. Entries
           with the same parent entry are ASCII ordered.

       annotate_fs
       annotate_fs $entry
           Add filesystem information to $entry or every inventory entry if none is provided.
           This adds the fields stat and symlink to the annotated entries which contain the
           output of lstat and readlink respectively.

       foreach $coderef
           Execute $coderef for every inventory entry, passing the entry as $_[0].

       dump
           Generates a dump of the inventory structure using Data::Dumper.

       to_string $inventory_element
           Generates an inventory line for the inventory element as produced by tla.

BUGS

       Awaiting for your reports.

AUTHORS

       Mikhael Goikhman (migo@homemail.com--Perl-GPL/arch-perl--devel).

       Enno Cramer (uebergeek@web.de--2003/arch-perl--devel).

SEE ALSO

       For more information, see tla, Arch::Util.