diff options
| -rw-r--r-- | SBO-Lib/MANIFEST | 1 | ||||
| -rwxr-xr-x | SBO-Lib/lib/SBO/App/Snap.pm | 78 | ||||
| -rwxr-xr-x | sbosnap | 47 | 
3 files changed, 82 insertions, 44 deletions
diff --git a/SBO-Lib/MANIFEST b/SBO-Lib/MANIFEST index 2e48b3f..a00cb9d 100644 --- a/SBO-Lib/MANIFEST +++ b/SBO-Lib/MANIFEST @@ -6,6 +6,7 @@ t/SBO-Lib.t  t/versions.t  lib/SBO/App.pm  lib/SBO/App/Remove.pm +lib/SBO/App/Snap.pm  lib/SBO/Lib.pm  lib/SBO/Lib/Build.pm  lib/SBO/Lib/Download.pm diff --git a/SBO-Lib/lib/SBO/App/Snap.pm b/SBO-Lib/lib/SBO/App/Snap.pm new file mode 100755 index 0000000..a00f977 --- /dev/null +++ b/SBO-Lib/lib/SBO/App/Snap.pm @@ -0,0 +1,78 @@ +#!/usr/bin/perl +# +# vim: ts=2:et +# +# sbosnap +# script to pull down / update a local copy of the slackbuilds.org tree. +# +# authors: Jacob Pipkin <j@dawnrazor.net> +#          Luke Williams <xocel@iquidus.org> +#          Andreas Guldstrand <andreas.guldstrand@gmail.com> +# license: WTFPL <http://sam.zoy.org/wtfpl/COPYING> + +use 5.16.0; +use strict; +use warnings FATAL => 'all'; +use SBO::Lib qw/ fetch_tree update_tree %config show_version /; +use Getopt::Long qw/ GetOptionsFromArray /; + +use parent 'SBO::App'; + +sub _parse_opts { +  my @ARGS = @_; + +  my ($help, $vers); + +  GetOptionsFromArray( +    \@ARGS, +    'help|h' => \$help, +    'version|v' => \$vers, +  ); + +  return { help => $help, vers => $vers, args => \@ARGS, }; +} + +sub show_usage { +  my $self = shift; +  my $fname = $self->{fname}; +  print <<"EOF"; +Usage: $fname [options|command] + +Options: +  -h|--help: +    this screen. +  -v|--version: +    version information. + +Commands: +  fetch: initialize a local copy of the slackbuilds.org tree. +  update: update an existing local copy of the slackbuilds.org tree. +          (generally, you may prefer "sbocheck" over "$fname update") + +EOF +	return 1; +} + +sub run { +  my $self = shift; +  my @args = @{ $self->{args} }; + +  if ($self->{help}) { $self->show_usage(); return 0 } +  if ($self->{vers}) { $self->show_version(); return 0 } + +  # check for a command and, if found, execute it +  $args[0] //= ''; + +  if ($args[0] eq 'fetch') { +    fetch_tree() +  } elsif ($args[0] eq 'update') { +    update_tree() +  } else { +    $self->show_usage(); +    return 1; +  } + +  return 0; +} + +1; @@ -13,49 +13,8 @@  use 5.16.0;  use strict;  use warnings FATAL => 'all'; -use SBO::Lib qw/ fetch_tree update_tree %config show_version /; -use File::Basename; -use Getopt::Long; +use SBO::App::Snap; -my $sbo_home = $config{SBO_HOME}; -my $self = basename($0); +my $app = SBO::App::Snap->new(@ARGV); -sub show_usage { -	print <<"EOF"; -Usage: $self [options|command] - -Options: -  -h|--help: -    this screen. -  -v|--version: -    version information. - -Commands: -  fetch: initialize a local copy of the slackbuilds.org tree. -  update: update an existing local copy of the slackbuilds.org tree. -          (generally, you may prefer "sbocheck" over "$self update") - -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 } - -# check for a command and, if found, execute it -$ARGV[0] //= ''; - -if ($ARGV[0] eq 'fetch') { -	fetch_tree() -} elsif ($ARGV[0] eq 'update') { -	update_tree() -} else { -	show_usage(); -	exit 1; -} - -exit 0; +exit $app->run();  | 
