Annotation of doc/help/usage.pl, revision 1.3
1.1 albertel 1: #!/usr/bin/perl
2: use strict;
3:
4: use HTML::TokeParser;
5: use Getopt::Long;
6:
1.3 ! albertel 7: my ($usage,$build_unused) = (0,0);
! 8: &GetOptions( "usage" => \$usage,
! 9: "build-unused" => \$build_unused);
1.1 albertel 10:
11: sub get_all_files {
12: my $dir="../../loncom/html/adm/help/tex/";
13: opendir(DIR,$dir);
14: my @files=sort {uc($a) cmp uc($b)} (readdir(DIR));
1.3 ! albertel 15: my @realfiles;
! 16: foreach my $file (@files) {
! 17: if ($file eq '.' || $file eq '..' || $file eq 'CVS' ||
! 18: $file eq 'Latex_Footer.tex' || $file eq 'Latex_Header.tex') {next;}
! 19: push(@realfiles,$file);
! 20: }
! 21: return @realfiles;
1.1 albertel 22: }
23:
24: sub get_usage {
25: my ($which)=@_;
26: my @files;
27: my $p = HTML::TokeParser->new("$which.manual.texxml");
28: while (my $token = $p->get_token()) {
29: if ($token->[0] eq 'S' && $token->[1] eq 'file') {
30: push(@files,$token->[2]{'name'});
31: }
32: }
33: return @files;
34: }
35:
36: sub print_unused {
37: my ($all,$usage)=@_;
38: my %all;
39: my %no_exist;
1.3 ! albertel 40: foreach my $file (@{ $all }) {
! 41: $all{$file}=[];
! 42: }
1.2 albertel 43: my @order=('author','course','developer');
1.1 albertel 44: foreach my $list (@{ $usage }) {
45: foreach my $file (@{ $list }) {
1.2 albertel 46: if (exists($all{$file})) {
47: push(@{$all{$file}},$order[0]);
48: } else {
49: push(@{$no_exist{$file}},$order[0]);
50: }
1.1 albertel 51: }
1.2 albertel 52: shift(@order);
1.1 albertel 53: }
54: print("Usage count for existing Files:\n");
55: foreach my $file (sort {uc($a) cmp uc($b)} (keys(%all))) {
1.2 albertel 56: if (scalar(@{ $all{$file} }) ne 0) {
57: printf("%-50s: %s in %s\n",$file,scalar(@{$all{$file}}),
58: join(',',@{$all{$file}}));
59: } else {
60: printf("%-50s: %s\n",$file,scalar(@{$all{$file}}));
61: }
1.1 albertel 62: }
63: print("Usage count for nonexistint Files:\n");
64: foreach my $file (sort {uc($a) cmp uc($b)} (keys(%no_exist))) {
1.2 albertel 65: printf("%-50s: %s in %s\n",$file,scalar(@{$no_exist{$file}}),
66: join(',',@{$no_exist{$file}}));
1.1 albertel 67: }
68: }
69:
1.3 ! albertel 70: sub texxml_unused {
! 71: my ($all,$usage)=@_;
! 72: my %all;
! 73: foreach my $file (@{ $all }) {$all{$file}='1';}
! 74: foreach my $list (@{ $usage }) {
! 75: foreach my $file (@{ $list }) {
! 76: if (exists($all{$file})) {
! 77: delete($all{$file});
! 78: }
! 79: }
! 80: }
! 81: print("<texxml>\n");
! 82: print("<title name=\"Unused files\" />\n");
! 83: foreach my $file (sort {uc($a) cmp uc($b)} (keys(%all))) {
! 84: print("<section name=\"$file\">\n");
! 85: print("<file name=\"$file\">\n");
! 86: print("</section>\n");
! 87: }
! 88: print("</texxml>\n");
! 89: }
! 90:
1.1 albertel 91: sub main {
92: my @all_files=&get_all_files();
93: my @author_usage=&get_usage('author');
94: my @course_usage=&get_usage('course');
95: my @developer_usage=&get_usage('developer');
96:
1.3 ! albertel 97: if ($usage) {
! 98: &print_unused(\@all_files,[\@author_usage,\@course_usage,
! 99: \@developer_usage]);
! 100: } elsif($build_unused) {
! 101: &texxml_unused(\@all_files,[\@author_usage,\@course_usage,
! 102: \@developer_usage]);
! 103: } else {
! 104: print("Please specify either --usage or --build-unused\n");
! 105: }
1.1 albertel 106: }
107:
108: &main;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>