3 # lbs-util: Tool for managing LBS archives.
5 # Usage: lbs-util <repository> <cmd> <args>
12 use LBS qw(parse_headers);
14 die "Too few arguments!\n" unless scalar(@ARGV) >= 2;
15 die "Must specify a repository!\n" unless -d $ARGV[0];
17 my $store = new LBS::Store $ARGV[0];
19 my @args = @ARGV[2 .. $#ARGV];
21 if ($cmd eq "--list-snapshots") {
22 foreach ($store->list_snapshots()) {
25 } elsif ($cmd eq "--list-segments") {
26 foreach ($store->list_segments()) {
29 } elsif ($cmd eq "--verify-snapshot") {
30 my $snapshot = $store->load_snapshot($args[0]);
31 my %info = parse_headers($snapshot);
32 print "Root: $info{Root}\n";
34 my $metadata = new LBS::MetadataParser $store, $info{Root};
35 while ((my %item = $metadata->get_item())) {
36 print $item{name}, "\n";
37 if ($item{type} eq '-') {
39 my $verifier = new LBS::ChecksumVerifier $item{checksum};
40 foreach (split /\s+/, $item{data}) {
41 my $data = $store->load_ref($_);
42 $verifier->add($data);
43 $size += length($data);
45 if (!$verifier->verify() || $size != $item{size}) {
46 fprintf STDERR "Verification failure for $item{name}\n";
51 die "Unknown command: $cmd\n";