#!/usr/bin/env perl # $Id: check-file-coverage 5846 2007-12-23 21:38:57Z preining $ # Copyright 2007 Norbert Preining # This file is licensed under the GNU General Public License version 2 # or any later version. # # check the file coverage of a TLTREE wrt to a texlive.tlpdb BEGIN { $^W = 1; chomp ($mydir = `dirname $0`); unshift (@INC, "$mydir/.."); } use strict; use TeXLive::TLConfig; use TeXLive::TLPSRC; use TeXLive::TLPOBJ; use TeXLive::TLPDB; use TeXLive::TLTREE; use Getopt::Long; use Pod::Usage; use File::Path; chomp (my $opt_master = `cd $::mydir/../.. && pwd`); our $opt_debug = 0; my $help = 0; GetOptions( "master=s" => \$opt_master, # location of the TL tree "debug!", "help|?" => \$help) or pod2usage(1); pod2usage(-exitstatus => 0, -verbose => 2) if $help; exit (&main ()); sub main { if (! -d $opt_master) { die "$0: Master $opt_master not a directory, goodbye.\n"; } # first we check for multiple included files using simple shell magic print "Multiple included files:\n"; print `grep '^ ' $opt_master/tlpkg/texlive.tlpdb | awk '{print"\t"\$1}' | sort | uniq -d`; warn "$0: reading Master tree $opt_master, that takes some time ...\n"; my $tltree = TeXLive::TLTREE->new( "svnroot" => $opt_master ); $tltree->init_from_svn; my %tltreefiles = %{$tltree->{'_allfiles'}}; my @tlpdbfiles = `grep '^ ' $opt_master/tlpkg/texlive.tlpdb | awk '{print\$1}'`; chomp(@tlpdbfiles); my %tlpdbf; for my $f (@tlpdbfiles) { $tlpdbf{$f} = 1; } my @nothit; for my $f (keys %tltreefiles) { if (!defined($tlpdbf{$f})) { push @nothit, $f; } } if (@nothit) { print "NOT COVERED FILES:\n"; for my $f (sort @nothit) { print "\t$f\n"; } } return 0; } __END__ =head1 NAME check-file-coverage - check file coverage TLTREE vs. texlive.tlpdb =head1 SYNOPSIS check-file-coverage [OPTION]... =head1 OPTIONS =over 8 =item B<-master> I The location given by B<-master> must point to a valid svn repository of TeX Live's Master direcory. Defaults to C<../..> of C<$0>. =back The standard options C<-help> and C<-debug> are also accepted. See the tlpfiles documentation for details. =head1 DESCRIPTION Missing =head1 AUTHORS AND COPYRIGHT This script and its documentation were written for the TeX Live distribution (L) and both are licensed under the GNU General Public License Version 2 or later. =cut ### Local Variables: ### perl-indent-level: 2 ### tab-width: 2 ### indent-tabs-mode: nil ### End: # vim:set tabstop=2 expandtab: #