1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172
|
#!/usr/bin/perl
# Time-stamp: <2006-11-15 13:25:02 barre>
#
# Extract VTK version and add it to documentation
#
# barre : Sebastien Barre <sebastien@barre.nom.fr>
#
# 0.3 (barre) :
# - update to search for the version infos in a different file
# (i.e. top CMakeLists.txt file instead of vtkVersion.h)
# - --header becomes --revision_file and --version_file
#
# 0.25 (barre) :
# - update useful links for Dart
#
# 0.24 (barre) :
# - update useful links for new public.kitware.com structure
#
# 0.23 (barre) :
# - update useful links
#
# 0.22 (barre) :
# - add more (useful) links to various VTK documentation ressources
#
# 0.21 (barre) :
# - no more --logo defaults
#
# 0.2 (barre) :
# - update to match the new VTK 4.0 tree
# - change default --header so that it can be launched from Utilities/Doxygen
# - change default --to so that it can be launched from Utilities/Doxygen
# - add --logo file : use 'file' as logo
#
# 0.16 (barre) :
# - change default --to to '../vtk-doxygen' to comply with Kitware
# - update VTK home page URL.
#
# 0.15 (barre) :
# - fix RCS/CVS tags problem (regexp replacement when this file is in a CVS)
#
# 0.14 (barre) :
# - as doxygen now handles RCS/CVS tags of the form $word:text$, use them
#
# 0.13 (barre) :
# - change doxygen command style from \ to @ to match javadoc, autodoc, etc.
#
# 0.12 (barre) :
# - change default --to to '../vtk-dox'
#
# 0.11 (barre)
# - fix O_TEXT flag problem
# - switch to Unix CR/LF format
#
# 0.1 (barre)
# - initial release
use Carp;
use Fcntl;
use File::Basename;
use Getopt::Long;
use strict;
my ($VERSION, $PROGNAME, $AUTHOR) = (0.3, $0, "Sebastien Barre");
$PROGNAME =~ s/^.*[\\\/]//;
print "$PROGNAME $VERSION, by $AUTHOR\n";
# -------------------------------------------------------------------------
# Defaults (add options as you want: "verbose" => 1 for default verbose mode)
my %default =
(
version_file => "../../CMake/vtkVersion.cmake",
store => "doc_VTK_version.dox",
to => "../../../VTK-doxygen"
);
# -------------------------------------------------------------------------
# Parse options
my %args;
Getopt::Long::Configure("bundling");
GetOptions (\%args, "help", "version_file=s", "logo=s", "store=s", "to=s");
if (exists $args{"help"}) {
print <<"EOT";
by $AUTHOR
Usage : $PROGNAME [--help] [--version_file file] [--store file] [--to path]
--help : this message
--version_file file : use 'file' to find version info (default: $default{version_file})
--logo file : use 'file' as logo (default: $default{logo})
--store file : use 'file' to store version (default: $default{store})
--to path : use 'path' as destination directory (default: $default{to})
Example:
$PROGNAME
EOT
exit;
}
$args{"version_file"} = $default{"version_file"} if ! exists $args{"version_file"};
$args{"logo"} = $default{"logo"} if ! exists $args{"logo"};
$args{"store"} = $default{"store"} if ! exists $args{"store"};
$args{"to"} = $default{"to"} if ! exists $args{"to"};
$args{"to"} =~ s/[\\\/]*$// if exists $args{"to"};
my $os_is_win = ($^O =~ m/(MSWin32|Cygwin)/i);
my $open_file_as_text = $os_is_win ? O_TEXT : 0;
my $start_time = time();
# -------------------------------------------------------------------------
# Try to get VTK version
my ($major_version, $minor_version, $build_version) = (undef, undef, undef);
sysopen(FILE, $args{"version_file"}, O_RDONLY|$open_file_as_text)
or croak "$PROGNAME: unable to open $args{version_file}\n";
while (<FILE>) {
if ($_ =~ /VTK_MAJOR_VERSION\s+(\d+)/) {
$major_version = $1;
print " major => $major_version\n";
} elsif ($_ =~ /VTK_MINOR_VERSION\s+(\d+)/) {
$minor_version = $1;
print " minor => $minor_version\n";
} elsif ($_ =~ /VTK_BUILD_VERSION\s+(\d+)/) {
$build_version = $1;
print " build => $build_version\n";
}
}
close(FILE);
croak "$PROGNAME: unable to find version in " . $args{"version_file"} . "\n"
if (!defined $major_version || !defined $minor_version || !defined $build_version);
# -------------------------------------------------------------------------
# Build documentation
my $destination_file = $args{"to"} . "/" . $args{"store"};
print "Building version documentation to ", $destination_file, "\n";
sysopen(DEST_FILE,
$destination_file,
O_WRONLY|O_TRUNC|O_CREAT|$open_file_as_text)
or croak "$PROGNAME: unable to open destination file " . $destination_file . "\n";
print DEST_FILE
"/*! \@mainpage VTK $major_version.$minor_version.$build_version Documentation\n\n";
print DEST_FILE
" \@image html " . basename($args{"logo"}) . "\n"
if exists $args{"logo"} && -f $args{"logo"};
print DEST_FILE
" \@par Useful links:\n",
" \@li VTK Home: http://www.vtk.org\n",
" \@li VTK Users Mailing-list: http://www.vtk.org/mailman/listinfo/vtkusers\n",
" \@li VTK Developer Mailing List: http://www.vtk.org/mailman/listinfo/vtk-developers\n",
" \@li VTK FAQ: http://www.vtk.org/Wiki/VTK_FAQ\n",
" \@li VTK Wiki: http://www.vtk.org/Wiki/\n",
" \@li VTK Search: http://www.kitware.com/search.html\n",
" \@li VTK Dashboard: http://www.cdash.org/CDash/index.php?project=VTK\n",
" \@li VTK-Doxygen scripts (Sebastien Barre): http://www.barre.nom.fr/vtk/doc/README\n",
" \@li Kitware Home: http://www.kitware.com\n",
" \@li Sebastien's VTK Links: http://www.barre.nom.fr/vtk/links.html\n",
" \@li Other Links: http://www.vtk.org/links.php\n",
" ",
"*/\n\n";
close(DEST_FILE);
print "Finished in ", time() - $start_time, " s.\n";
|