Getopt::Long::Configure ("bundling");
GetOptions(
"v|verbose" => \ my $v,
- "V|no-verbose" => \ my $nv,
"a|all" => \ $check{a},
"o|optional!" => \ $check{o},
"d|devel!" => \ $check{d},
"r|required!" => \ $check{r},
"h|help" => sub { pod2usage(-verbose => 2) },
"c|color!" => \ ( my $c = 1 ),
- "i|install!" => \ my $apt,
+ "i|install-command!" => \ my $apt,
+ "s|silent" => \ $check{s},
);
my %install_methods = (
cpan => { key => 'name', install => "sudo cpan", system => "CPAN" },
);
-# verbos is default
-if ( $v && $nv ){
- $v = 1;
-}elsif ($nv){
- undef $v;
-}else{
- $v = 1;
-}
-
# if nothing is requested check "required"
my $default_run;
if (!defined $check{a}
}
if ($check{a}) {
- foreach my $check (keys %check) {
- $check{$check} = 1 unless defined $check{$check};
- }
+ $check{$_} //= 1 for qw(o d l r);
}
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_latex();
}
-if (@missing_modules && $apt) {
- print "\nHere are some sample installation lines, choose one apporpriate for your system:\n\n";
+my $fail = @missing_modules;
+print_header('Result');
+print_line('All', $fail ? 'NOT ok' : 'OK', $fail ? 'red' : 'green');
+
+if ($default_run && !$check{s}) {
+ if (@missing_modules) {
+ $apt = 1;
+ print <<"EOL";
+
+HEY! It seems there are modules MISSING! Look for the red lines with "NOT ok"
+above. You'll want to fix those, I've enabled --install-command for you...
+EOL
+ } else {
+ print <<"EOL";
+
+Standard check done, everything is OK and up to date. Have a look at the --help
+section of this script to see some more advanced checks for developer and
+optional dependancies, as well as LaTeX packages you might need.
+EOL
+ }
+}
+
+if (@missing_modules && $apt && !$check{s}) {
+ print "\nHere are some sample installation lines, choose one appropriate for your system:\n\n";
local $Text::Wrap::separator = " \\\n";
for (keys %install_methods) {
}
}
+exit !!@missing_modules;
+
sub check_latex {
my ($res) = check_kpsewhich();
print_result("Looking for LaTeX kpsewhich", $res);
sub check_kpsewhich {
return 1 if SL::InstallationCheck::check_kpsewhich();
- print STDERR <<EOL if $v;
+ print STDERR <<EOL if $v && !$check{s};
+------------------------------------------------------------------------------+
Can't find kpsewhich, is there a proper installed LaTeX?
On Debian you may run "aptitude install texlive-base-bin"
print_result("Looking for LaTeX $type_desc $package", $res);
if (!$res) {
- print STDERR <<EOL if $v;
+ print STDERR <<EOL if $v && !$check{s};
+------------------------------------------------------------------------------+
LaTeX $type_desc $package could not be loaded.
my @source_texts = module_source_texts($module);
local $" = $/;
- print STDERR <<EOL if $v;
+ print STDERR <<EOL if $v && !$check{s};
+------------------------------------------------------------------------------+
$module->{fullname} could not be loaded.
sub module_source_texts {
my ($module) = @_;
my @texts;
- push @texts, <<EOL;
- - You can get it from CPAN:
- perl -MCPAN -e "install $module->{name}"
+ for my $key (keys %install_methods) {
+ my $method = $install_methods{$key};
+ push @texts, <<"EOL" if $module->{$method->{key}};
+ - Using $method->{system} you can install it with $key:
+ $method->{install} $module->{$method->{key}}
EOL
+ }
push @texts, <<EOL if $module->{url};
- You can download it from this URL and install it manually:
$module->{url}
EOL
- push @texts, <<EOL if $module->{debian};
- - On Debian, Ubuntu and other distros you can install it with apt-get:
- sudo apt-get install $module->{debian}
- Note: These may be out of date as well if your system is old.
-EOL
- # TODO: SuSE and Fedora packaging. Windows packaging.
return @texts;
}
sub print_line {
my ($text, $res, $color) = @_;
+ return if $check{s};
print $text, " ", ('.' x (78 - length($text) - length($res))), " ", mycolor($res, $color), $/;
}
sub print_header {
+ return if $check{s};
print $/;
print "$_[0]:", $/;
}
Don't probe for LaTeX document classes and packages in master templates. (Useful in combination with --all)
-=item C<-v, --verbose>
-
-Print additional info for missing dependancies (enabled by default)
-
-=item C<-V, --no-verbose>
+=item C<-v. --verbose>
-Disable verbosity
+Print additional info for missing dependancies
-=item C<-i, --install>
+=item C<-i, --install-command>
Tries to generate installation commands for the most common package managers.
Note that these lists can be slightly off, but it should still save you a lot