1#! /usr/bin/perl -w 2 3use strict; 4 5use File::Temp qw/tempfile/; 6 7use FileHandle; 8 9my $prefix = "j"; 10 11if (-f "./ex_dir_list") 12 { $prefix = "./ex_"; } 13 14my $dir_name = undef; 15 16use Getopt::Long; 17use Pod::Usage; 18 19my $man = 0; 20my $help = 0; 21 22my $filter_def_args = "-A .. --deny-name-beg . -D index.html -D dir_list.css --acpt-name-end .tar.gz --deny-name-end .gz --acpt-name-end .tar.bz2 --deny-name-end .bz2 --deny-name-end .tmp --deny-name-end '~' --deny-name-end '#'"; 23my $filter_args = $filter_def_args; 24 25my $sort_def_args = "--sort=version"; 26my $sort_args = $sort_def_args; 27my $html_def_args = "--css-filename http://www.and.org/dir_list.css"; 28my $html_args = $html_def_args; 29my $index_loc = undef; 30 31pod2usage(0) if ! 32GetOptions ("filter-args=s@" => \$filter_args, 33 "sort-args=s@" => \$sort_args, 34 "html-args=s@" => \$html_args, 35 "dir-name|dirname|d=s" => \$dir_name, 36 "output|o=s" => \$index_loc, 37 "prefix-exes|P=s" => \$prefix, 38 "help|?" => \$help, 39 "man" => \$man); 40pod2usage(-exitstatus => 0, -verbose => 1) if $help; 41pod2usage(-exitstatus => 0, -verbose => 2) if $man; 42 43if (ref $filter_args) 44 { $filter_args = join " ", map { $_ eq "--default" ? $filter_def_args : $_ } 45 @$filter_args; } 46if (ref $sort_args) 47 { $sort_args = join " ", map { $_ eq "--default" ? $sort_def_args : $_ } 48 @$sort_args; } 49if (ref $html_args) 50 { $html_args = join " ", map { $_ eq "--default" ? $html_def_args : $_ } 51 @$html_args; } 52 53pod2usage(0) if (scalar @ARGV != 1); 54 55my $dir_loc = shift @ARGV; 56 57pod2usage(0) if (! -d $dir_loc); 58 59if (!defined ($index_loc)) 60 { $index_loc = $dir_loc . "/index.html"; } 61if (!defined ($dir_name)) 62 { 63 $dir_name = $dir_loc; 64 $dir_name =~ m!/([^/]+)/*$!; 65 if ($1 ne '') 66 { $dir_name = $1; } 67 else 68 { $dir_name = "Unknown"; } 69 } 70 71$dir_loc =~ s/'/'"'"'/g; 72$dir_name =~ s/'/'"'"'/g; 73$index_loc =~ s/'/'"'"'/g; 74 75my $cmds = <<EOL; 76 ${prefix}dir_list --size --follow -- '$dir_loc' | \ 77 ${prefix}dir_filter $filter_args | \ 78 ${prefix}dir_sort $sort_args | \ 79 ${prefix}dir_list2html --name '$dir_name' $html_args > '$index_loc' 80EOL 81 82system($cmds); 83 84__END__ 85 86=head1 NAME 87 88make_index.pl - Make index.html files from directories 89 90=head1 SYNOPSIS 91 92make_index.pl [options] <dir> 93 94 Options: 95 --help -? brief help message 96 --man full documentation 97 --filter-args Filter arguments 98 --sort-args Sort arguments 99 --html-args HTML conversion arguments 100 --dir-name Directory name 101 --prefix-exes prefix for executables 102 103=head1 OPTIONS 104 105=over 8 106 107=item B<--help> 108 109Print a brief help message and exits. 110 111=item B<--man> 112 113Prints the manual page and exits. 114 115=item B<--filter-args> 116 117Args to pass the dir_filter. 118 119=item B<--sort-args> 120 121Args to pass the dir_sort. 122 123=item B<--html-args> 124 125Args to pass the dir_list2html. 126 127=item B<--dir-name> 128 129Name of directory for the title. 130 131=item B<--prefix> 132 133Prefix to add the executable names (can be a path). 134 135=back 136 137 138=head1 DESCRIPTION 139 140B<make_index.pl> will create index.html files from a given directory. 141 It filters the filenames in the directory and can use an executable prefix. 142 143B<make_index.pl> calls the programs dir_list, dir_filter, dir_sort and 144dir_list2html. 145 146=cut 147