use strict; BEGIN { use lib qw[bin]; require '_inc.pl'; protoconf->import(); } use File::Basename; use YAML qw[LoadFile DumpFile]; @ARGV or die 'Need at least one source dir'; for my $srcdir (@ARGV ) { ### copy all the relevant files to the repo for my $archive ( qx[find root-* -type f | grep '$Ext\$'] ) { chomp $archive; my $file = basename($archive); print "Copying '$archive'\n"; ### get the metadata out { ### extract to a temp dir my $my_tmp_dir = $Tmpdir . "/$$"; system( qq[mkdir -p $my_tmp_dir] ) and die $?; ### extract the archive to the temp dir system( qq[tar -f $archive -C $my_tmp_dir -xz] ) and die $?; ### got 2 .tgz files in the tmp dir now ### get the meta.info out of hte control.tgz system( qq[tar -f $my_tmp_dir/$Control -C $my_tmp_dir ] . qq[-xz ./$Metafile] ) and die $?; ### rename it to .info in the repodir my $meta_info = $file; $meta_info =~ s/$Ext$/$Metaext/; ### XXX no hierarchy yet system( qq[mv $my_tmp_dir/$Metafile $Repodir/$meta_info] ) and die $?; system( qq[rm -rf $my_tmp_dir] ) and die $?; } ### copy the .jib there too system( qq[cp -f $archive $Repodir/$file] ) and die $?; } print "\n\n\n"; ### start aggregating their metainfo to one file my @metalist; for my $meta ( qx[find $Repodir -type f | grep '$Metaext\$'] ) { chomp $meta; print "Indexing '" . basename($meta) ."'\n"; my $href = LoadFile( $meta ); ### add location to the metadata ### location of .jib is in same dir as $meta ### XXX add other found data to the metadata as well my $archive = $meta; $archive =~ s|^$Repodir|.|; $archive =~ s/$Metaext$/$Ext/; $href->{location} = $archive; push @metalist, $href; } DumpFile( $Repoindex, @metalist ); print "\n\n\nIndex written to: '$Repoindex'\n\n"; }