Blame examples/updateTree.pl
|
Packit |
0bf95d |
# Shows how to update a Zip in place using a temp file.
|
|
Packit |
0bf95d |
#
|
|
Packit |
0bf95d |
# usage:
|
|
Packit |
0bf95d |
# perl [-m] examples/updateTree.pl zipfile.zip dirname
|
|
Packit |
0bf95d |
#
|
|
Packit |
0bf95d |
# -m means to mirror
|
|
Packit |
0bf95d |
#
|
|
Packit |
0bf95d |
# $Id: updateTree.pl,v 1.2 2003/11/27 17:03:51 ned Exp $
|
|
Packit |
0bf95d |
#
|
|
Packit |
0bf95d |
use Archive::Zip qw(:ERROR_CODES);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
my $mirror = 0;
|
|
Packit |
0bf95d |
if ($ARGV[0] eq '-m') { shift; $mirror = 1; }
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
my $zipName = shift || die 'must provide a zip name';
|
|
Packit |
0bf95d |
my $dirName = shift || die 'must provide a directory name';
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# Read the zip
|
|
Packit |
0bf95d |
my $zip = Archive::Zip->new();
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
if (-f $zipName) {
|
|
Packit |
0bf95d |
die "can't read $zipName\n" unless $zip->read($zipName) == AZ_OK;
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# Update the zip
|
|
Packit |
0bf95d |
$zip->updateTree($dirName, undef, undef, $mirror);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# Now the zip is updated. Write it back via a temp file.
|
|
Packit |
0bf95d |
exit($zip->overwrite());
|
|
Packit |
0bf95d |
} else # new zip
|
|
Packit |
0bf95d |
{
|
|
Packit |
0bf95d |
$zip->addTree($dirName);
|
|
Packit |
0bf95d |
exit($zip->writeToFileNamed($zipName));
|
|
Packit |
0bf95d |
}
|