Catmandu-BagIt

 view release on metacpan or  search on metacpan

README  view on Meta::CPAN

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 )