X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/1f7d4ae37c498547306612a3e9d27cdfad2edbef..6e15c0a98d4f7cb34f6e95b56923ebff659e4825:/scripts/installation_check.pl?ds=sidebyside diff --git a/scripts/installation_check.pl b/scripts/installation_check.pl index 0167cdb9b..c132310ec 100755 --- a/scripts/installation_check.pl +++ b/scripts/installation_check.pl @@ -4,10 +4,13 @@ use strict; use Getopt::Long; use Pod::Usage; use Term::ANSIColor; - +our $master_templates; BEGIN { unshift @INC, "modules/override"; # Use our own versions of various modules (e.g. YAML). push @INC, "modules/fallback"; # Only use our own versions of modules if there's no system version. + + # this is a default dir. may be wrong in your installation, change it then + $master_templates = './templates/print/'; } use SL::InstallationCheck; @@ -19,16 +22,18 @@ GetOptions( "a|all" => \ $check{a}, "o|optional!" => \ $check{o}, "d|devel!" => \ $check{d}, + "l|latex!" => \ $check{l}, "r|required!" => \ $check{r}, "h|help" => sub { pod2usage(-verbose => 2) }, "c|color!" => \ ( my $c = 1 ), ); -# if notihing is requested check "required" +# if nothing is requested check "required" $check{r} = 1 unless defined $check{a} || + defined $check{l} || defined $check{o} || defined $check{d}; - +my $default_run ='1' if $check{r}; # no parameter, therefore print a note after default run if ($check{a}) { foreach my $check (keys %check) { $check{$check} = 1 unless defined $check{$check}; @@ -39,21 +44,94 @@ if ($check{a}) { $| = 1; if ($check{r}) { + print_header('Checking Required Modules'); check_module($_, required => 1) for @SL::InstallationCheck::required_modules; + print_header('Standard check for required modules done. See additional parameters for more checks (-- help)') if $default_run; } if ($check{o}) { + print_header('Checking Optional Modules'); check_module($_, optional => 1) for @SL::InstallationCheck::optional_modules; } if ($check{d}) { + print_header('Checking Developer Modules'); check_module($_, devel => 1) for @SL::InstallationCheck::developer_modules; } +if ($check{l}) { + check_latex(); +} + +sub check_latex { + my ($res) = check_kpsewhich(); + print_result("Looking for LaTeX kpsewhich", $res); + if ($res) { + check_template_dir($_) for SL::InstallationCheck::template_dirs($master_templates); + } +} + +sub check_template_dir { + my ($dir) = @_; + my $path = $master_templates . $dir; + + print_header("Checking LaTeX Dependencies for Master Templates '$dir'"); + kpsewhich($path, 'cls', $_) for SL::InstallationCheck::classes_from_latex($path, '\documentclass'); + kpsewhich($path, 'sty', $_) for SL::InstallationCheck::classes_from_latex($path, '\usepackage'); +} + +our $mastertemplate_path = './templates/print/'; + +sub check_kpsewhich { + return 1 if SL::InstallationCheck::check_kpsewhich(); + + print STDERR < /dev/null|); + my $res = $exit > 0 ? 0 : 1; + + print_result("Looking for LaTeX $type_desc $package", $res); + if (!$res) { + print STDERR <{"name"}, $module->{version}); - print_result($line, $res); + my ($res, $ver) = SL::InstallationCheck::module_available($module->{"name"}, $module->{version}); + if ($res) { + my $ver_string = ref $ver && $ver->can('numify') ? $ver->numify : $ver ? $ver : 'no version'; + print_line($line, $ver_string, 'green'); + } else { + print_result($line, $res); + } + return if $res; @@ -107,12 +185,26 @@ sub mycolor { sub print_result { my ($test, $exit) = @_; - print $test, " ", ('.' x (72 - length $test)); - print $exit ? '.... '. mycolor('ok', 'green') : ' '. mycolor('NOT ok', 'red'); + if ($exit) { + print_line($test, 'ok', 'green'); + } else { + print_line($test, 'NOT ok', 'red'); + } +} + +sub print_line { + my ($text, $res, $color) = @_; + print $text, " ", ('.' x (78 - length($text) - length($res))); + print mycolor($res, $color); print "\n"; return; } +sub print_header { + print $/; + print "$_[0]:", $/; +} + 1; __END__ @@ -130,7 +222,10 @@ scripts/installation_check.pl - check Lx-Office dependancies =head1 DESCRIPTION Check dependencys. List all perl modules needed by Lx-Office, probes for them, -and warns if one is not available. +and warns if one is not available. List all LaTeX document classes and +packages needed by Lx-Office master templates, probes for them, and warns if +one is not available. + =head1 OPTIONS @@ -154,7 +249,7 @@ Probe for perl developer dependancies. (Used for console and tags file) =item C<--no-devel> -Dont't probe for perl developer dependancies. (Usefull in combination with --all) +Don't probe for perl developer dependancies. (Useful in combination with --all) =item C<-h, --help> @@ -166,7 +261,7 @@ Probe for optional modules. =item C<--no-optional> -Dont't probe for optional perl modules. (Usefull in combination with --all) +Don't probe for optional perl modules. (Useful in combination with --all) =item C<-r, --required> @@ -174,7 +269,15 @@ Probe for required perl modules (default). =item C<--no-required> -Dont't probe for required perl modules. (Usefull in combination with --all) +Don't probe for required perl modules. (Useful in combination with --all) + +=item C<-l. --latex> + +Probe for LaTeX documentclasses and packages in master templates. + +=item C<--no-latex> + +Don't probe for LaTeX document classes and packages in master templates. (Useful in combination with --all) =item C<-v. --verbose>