summaryrefslogtreecommitdiff
path: root/slackbuilder
diff options
context:
space:
mode:
Diffstat (limited to 'slackbuilder')
-rw-r--r--slackbuilder20
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";

Return to:

Send suggestions and report system problems to the System administrator.