Catmandu-BagIt
view release on metacpan or search on metacpan
NAME
Catmandu::BagIt - Low level Catmandu interface to the BagIt packages.
SYNOPSIS
use Catmandu::BagIt;
# Assemble a new bag
my $bagit = Catmandu::BagIt->new;
# Force a previous version and checksum algorithm
my $bagit = Catmandu::BagIt->new(version => '0.97' , algorithm => 'md5');
# Read an existing
my $bagit = Catmandu::BagIt->read($directory);
$bag->read('t/bag');
printf "path: %s\n", $bagit->path;
printf "version: %s\n" , $bagit->version;
printf "encoding: %s\n" , $bagit->encoding;
printf "size: %s\n", $bagit->size;
printf "payload-oxum: %s\n", $bagit->payload_oxum;
printf "tags:\n";
for my $tag ($bagit->list_info_tags) {
my @values = $bagit->get_info($tag);
printf " $tag: %s\n" , join(", ",@values);
}
printf "tag-sums:\n";
for my $file ($bagit->list_tagsum) {
my $sum = $bagit->get_tagsum($file);
printf " $file: %s\n" , $sum;
}
# Read the file listing as found in the manifest file
printf "file-sums:\n";
for my $file ($bagit->list_checksum) {
my $sum = $bagit->get_checksum($file);
printf " $file: %s\n" , $sum;
}
# Read the real listing of files as found on the disk
printf "files:\n";
for my $file ($bagit->list_files) {
my $stat = [stat($file->path)];
printf " name: %s\n", $file->filename;
printf " size: %s\n", $stat->[7];
printf " last-mod: %s\n", scalar(localtime($stat->[9]));
}
my $file = $bagit->get_file("mydata.txt");
my $fh = $file->open;
while (<$fh>) {
....
}
close($fh);
print "dirty?\n" if $bagit->is_dirty;
if ($bagit->complete) {
print "bag is complete\n";
}
else {
print "bag is not complete!\n";
}
if ($bagit->valid) {
print "bag is valid\n";
}
else {
print "bag is not valid!\n";
}
if ($bagit->is_holey) {
print "bag is holey\n";
}
else {
print "bag isn't holey\n";
}
if ($bagit->errors) {
print join("\n",$bagit->errors);
}
# Write operations
$bagit->add_info('My-Tag','fsdfsdfsdf');
$bagit->add_info('My-Tag',['dfdsf','dfsfsf','dfdsf']);
$bagit->remove_info('My-Tag');
$bagit->add_file("test.txt","my text");
$bagit->add_file("data.pdf", IO::File->new("/tmp/data.pdf"));
$bagit->remove_file("test.txt");
$bagit->add_fetch("http://www.gutenberg.org/cache/epub/1980/pg1980.txt","290000","shortstories.txt");
$bagit->remove_fetch("shortstories.txt");
if ($bagit->errors) {
print join("\n",$bagit->errors);
exit;
}
unless ($bagit->locked) {
$bagit->write("bags/demo04"); # fails when the bag already exists
( run in 1.215 second using v1.01-cache-2.11-cpan-14f38c9f855 )