diff options
Diffstat (limited to 'sbocheck')
-rwxr-xr-x | sbocheck | 149 |
1 files changed, 0 insertions, 149 deletions
diff --git a/sbocheck b/sbocheck deleted file mode 100755 index bf2ddff..0000000 --- a/sbocheck +++ /dev/null @@ -1,149 +0,0 @@ -#!/usr/bin/perl -# -# vim: ts=4:noet -# -# sbocheck -# script to update the local sbo tree and check for updates -# -# authors: Jacob Pipkin <j@dawnrazor.net> -# Luke Williams <xocel@iquidus.org> -# Andreas Guldstrand <andreas.guldstrand@gmail.com> -# maintainer: Slack Coder <slackcoder@server.ky> - -use 5.16.0; -use strict; -use warnings FATAL => 'all'; -use SBO::Lib qw/ _ERR_USAGE update_tree get_available_updates script_error open_fh is_local show_version get_local_outdated_versions /; -use Getopt::Long; -use File::Basename; -use List::Util 'max'; -use Data::Dumper; - -my $self = basename($0); - -sub show_usage { - print <<"EOF"; -Usage: $self - -Options: - -h|--help: - this screen. - -v|--version: - version information. - -EOF - return 1; -} - -my ($help, $vers); - -GetOptions('help|h' => \$help, 'version|v' => \$vers); - -if ($help) { show_usage(); exit 0 } -if ($vers) { show_version(); exit 0 } - -unless ($< == 0) { - warn "This script requires root privileges.\n"; - exit -} - -update_tree(); - -# retrieve and format list of available updates -sub get_update_list { - print "Checking for updated SlackBuilds...\n"; - my @updates = @{ get_available_updates() }; - my @outdated = get_local_outdated_versions(); - return() unless @outdated + @updates; - - my %updates; - for my $update (@updates) { - $updates{$update->{name}} = { - installed => $update->{installed}, - available => $update->{update}, - local => is_local($update->{name}) - }; - } - for my $update (@outdated) { - my $name = $update->{name}; - $updates{$name}{installed} = $update->{version}; - $updates{$name}{sbo} = $update->{orig}; - $updates{$name}{local} = 1; - } - -# Output should look like this where the < is aligned to the longest sboname 1.0 string (excepting ones that would then wrap): -# sboname 1.0 < needs updating (1.1 from overrides) -# sboname 1.0 < needs updating (1.1 from SBo) -# sboname 1.0 < needs updating (1.1 from overrides, 1.2 from SBo) -# sboname 1.0 < override outdated (1.1 from SBo) - - my $max = 0; - foreach my $sbo (keys %updates) { - my $info = $updates{$sbo}; - my $current = sprintf "%s %s", $sbo, $info->{installed}; - - my $available = ''; - if (defined $info->{available} and defined $info->{sbo}) { - $available = sprintf "needs updating (%s from overrides, %s from SBo)", $info->{available}, $info->{sbo}; - } - elsif ($info->{available}) { - $available = sprintf "needs updating (%s from %s)", $info->{available}, $info->{local} ? "overrides" : "SBo"; - } - else { - $available = sprintf "override outdated (%s from SBo)", $info->{sbo}; - } - $info->{name_str} = $current; - $info->{upd_str} = $available; - - my $str = sprintf "%s < %s", $current, $available; - if (length($str) <= 80) { - $max = length($current) if length($current) > $max; - } - } - - my @listing; - foreach my $sbo (sort keys %updates) { - my $info = $updates{$sbo}; - - my $str = sprintf "%s < %s", $info->{name_str}, $info->{upd_str}; - if (length($str) <= 80) { - $str = sprintf "%-*s < %s", $max, $info->{name_str}, $info->{upd_str}; - my $adjust = 1; - while (length($str) > 80) { - $str = sprintf "%-*s < %s", $max-$adjust++, $info->{name_str}, $info->{upd_str}; - } - } - push @listing, $str; - } - return @listing; -} - -# print list of updates -sub print_output { - my @listing = @_; - if (@listing) { - print "\n"; - say $_ for @listing; - print "\n"; - # save a log of available updates - my $logfile = '/var/log/sbocheck.log'; - unlink $logfile if -f $logfile; - my ($log_fh, $exit) = open_fh($logfile, '>'); - # non-fatal - if ($exit) { - warn $log_fh; - } else { - say {$log_fh} $_ for @listing; - close $log_fh; - say "A copy of the above result is kept in $logfile\n"; - } - } else { - say "\nNo updates available."; - } - return 1; -} - -my @listing = get_update_list(); -print_output(@listing); - -exit 0; |