diff options
Diffstat (limited to 'slackbuilder')
-rw-r--r-- | slackbuilder | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/slackbuilder b/slackbuilder index c987d54..bf4c081 100644 --- a/slackbuilder +++ b/slackbuilder @@ -1,7 +1,6 @@ # -*- perl -*- use strict; use warnings; -use JSON; use Data::Dumper; use Pod::Usage; use Pod::Man; @@ -9,6 +8,8 @@ use Getopt::Long qw(:config gnu_getopt no_ignore_case); use File::Basename; use Unix::Sysexits; use SlackBuilder; +use SlackBuild::Request; +use JSON; use constant { EX_FAIL => 1 @@ -38,7 +39,7 @@ sub readfile { open(my $fd, $file) or abend(EX_NOINPUT, "can't open file $file: $!"); my $string = <$fd>; close $fd; - return $string; + return decode_json($string); } my %sbargs; @@ -58,11 +59,22 @@ GetOptions("h" => sub { ) or exit(EX_USAGE); abend(EX_USAGE, "bad number of arguments") unless @ARGV == 1; +my $reqname = shift @ARGV; +my $req; -my $text = readfile($ARGV[0]); +unless (-f $reqname) { + if ($reqname =~ m{(?:http|ftp)s?://.*/ + (.+?) \.tar(?:\.(?:[xgl]z|bz2))?}x) { + $req = { package => $1, slackbuild_uri => $reqname }; + } else { + abend(EX_NOINPUT, "request file $reqname does not exist"); + } +} else { + $req = readfile($reqname); +} my $builder = new SlackBuilder(%sbargs); -$builder->run(decode_json($text)); +$builder->run(new SlackBuild::Request($req)); if ($builder->is_success) { if ($builder->output_files == 0) { print STDERR "Build exited successfully, but no output files were generated\n"; |