aboutsummaryrefslogtreecommitdiff
path: root/SBO-Lib/lib/SBO/Lib.pm
diff options
context:
space:
mode:
authorAndreas Guldstrand <andreas.guldstrand@gmail.com>2015-12-08 01:01:15 +0100
committerAndreas Guldstrand <andreas.guldstrand@gmail.com>2015-12-08 01:01:15 +0100
commitcd4678a50013ea928aafa9f73a0529f6308e5675 (patch)
treebfb60936398d0c6700e50ee4cf568c507b94b8fe /SBO-Lib/lib/SBO/Lib.pm
parentfe9b1ecb55fddde8b2ba5ae83bcbdfe824bafbc3 (diff)
downloadsbotools2-cd4678a50013ea928aafa9f73a0529f6308e5675.tar.xz
Start work supporting alternate repositories
See #6
Diffstat (limited to 'SBO-Lib/lib/SBO/Lib.pm')
-rw-r--r--SBO-Lib/lib/SBO/Lib.pm31
1 files changed, 27 insertions, 4 deletions
diff --git a/SBO-Lib/lib/SBO/Lib.pm b/SBO-Lib/lib/SBO/Lib.pm
index 3b88810..3b17e8d 100644
--- a/SBO-Lib/lib/SBO/Lib.pm
+++ b/SBO-Lib/lib/SBO/Lib.pm
@@ -151,6 +151,7 @@ our %config = (
SBO_HOME => 'FALSE',
LOCAL_OVERRIDES => 'FALSE',
SLACKWARE_VERSION => 'FALSE',
+ REPO => 'FALSE',
);
# subroutine to suck in config in order to facilitate unit testing
@@ -229,11 +230,30 @@ sub check_home {
return 1;
}
+sub pull_sbo_tree {
+ my $url = $config{REPO};
+ if ($url eq 'FALSE') {
+ my $slk_version = get_slack_version();
+ $url = "rsync://slackbuilds.org/slackbuilds/$slk_version/";
+ }
+ unlink($slackbuilds_txt);
+ my $res = 0;
+ if ($url =~ m!^rsync://!) { $res = rsync_sbo_tree($url); }
+ elsif ($url =~ m!^git://!) { $res = git_sbo_tree($url); }
+ else { usage_error("Unknown protocol in repo URL: $url"); }
+
+ if ($res and not chk_slackbuilds_txt()) {
+ generate_slackbuilds_txt();
+ }
+}
+
# rsync the sbo tree from slackbuilds.org to $config{SBO_HOME}
sub rsync_sbo_tree {
- my $slk_version = get_slack_version();
+ exists $_[0] or script_error('rsync_sbo_tree requires an argument.');
+ my $url = shift;
+ $url .= '/' unless $url =~ m!/$!; # make sure $url ends with /
my @arg = ('rsync', '-a', '--exclude=*.tar.gz', '--exclude=*.tar.gz.asc');
- push @arg, '--delete', "rsync://slackbuilds.org/slackbuilds/$slk_version/*";
+ push @arg, '--delete', "${url}*";
my $out = system @arg, $config{SBO_HOME};
my $wanted = sub {
$File::Find::name ? chown 0, 0, $File::Find::name
@@ -243,17 +263,20 @@ sub rsync_sbo_tree {
say 'Finished.' and return $out;
}
+sub git_sbo_tree { ... }
+sub generate_slackbuilds_txt { ... }
+
# wrappers for differing checks and output
sub fetch_tree {
check_home();
say 'Pulling SlackBuilds tree...';
- rsync_sbo_tree(), return 1;
+ pull_sbo_tree(), return 1;
}
sub update_tree {
fetch_tree(), return() unless chk_slackbuilds_txt();
say 'Updating SlackBuilds tree...';
- rsync_sbo_tree(), return 1;
+ pull_sbo_tree(), return 1;
}
# if the SLACKBUILDS.TXT is not in $config{SBO_HOME}, we assume the tree has