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.