summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2019-03-21 10:23:53 +0100
committerSergey Poznyakoff <gray@gnu.org.ua>2019-03-21 10:23:53 +0100
commit4014ea72424c52d945c1cadfb47f100f192f6923 (patch)
tree69faea5fb85c98406a4cd4c516b0edd6770d0ee6
parenta9845d6973ca7271437a6fbc659f48cd1100add3 (diff)
downloadslackbuilder-4014ea72424c52d945c1cadfb47f100f192f6923.tar.gz
slackbuilder-4014ea72424c52d945c1cadfb47f100f192f6923.tar.bz2
Decode the request in SlackBuilder->run, if needed.
-rw-r--r--lib/SlackBuilder.pm19
-rwxr-xr-xslackbuilder13
2 files changed, 18 insertions, 14 deletions
diff --git a/lib/SlackBuilder.pm b/lib/SlackBuilder.pm
index 924a847..00a1228 100644
--- a/lib/SlackBuilder.pm
+++ b/lib/SlackBuilder.pm
@@ -6,6 +6,7 @@ use SlackBuild::Config;
6use SlackBuild::URI; 6use SlackBuild::URI;
7use SlackBuild::Archive; 7use SlackBuild::Archive;
8use SlackBuild::Registry; 8use SlackBuild::Registry;
9use SlackBuild::Request;
9use SlackBuild::Rc; 10use SlackBuild::Rc;
10use File::Spec; 11use File::Spec;
11use File::Basename; 12use File::Basename;
@@ -14,6 +15,7 @@ use File::Copy;
14use POSIX::Run::Capture qw(:all); 15use POSIX::Run::Capture qw(:all);
15use POSIX qw(:sys_wait_h strerror uname); 16use POSIX qw(:sys_wait_h strerror uname);
16use Log::Log4perl qw(:levels); 17use Log::Log4perl qw(:levels);
18use Try::Tiny;
17use Carp; 19use Carp;
18 20
19use constant { 21use constant {
@@ -260,11 +262,24 @@ sub run {
260 my ($self, $req) = @_; 262 my ($self, $req) = @_;
261 263
262 $self->clear; 264 $self->clear;
265
266 if (!ref($req)) {
267 my $name = $req;
268 $req = try {
269 new SlackBuild::Request($name)
270 } catch {
271 my $err = (split /\n/)[0];
272 $err =~ s{\s+at .* line \d+\.$}{};
273 $self->error("$name: $err");
274 return $self->errno(E_SYNTAX);
275 };
276 }
277
263 unless ($req->package) { 278 unless ($req->package) {
264 $self->error("package: not present"); 279 $self->error("package: not present in request");
265 } 280 }
266 unless ($req->slackbuild_uri) { 281 unless ($req->slackbuild_uri) {
267 $self->error("slackbuild_uri: not present"); 282 $self->error("slackbuild_uri: not present in request");
268 } 283 }
269 if ($self->errors) { 284 if ($self->errors) {
270 return $self->errno(E_SYNTAX); 285 return $self->errno(E_SYNTAX);
diff --git a/slackbuilder b/slackbuilder
index 36f7bdb..5ec4fd0 100755
--- a/slackbuilder
+++ b/slackbuilder
@@ -9,10 +9,8 @@ use File::Basename;
9use File::Spec; 9use File::Spec;
10use Unix::Sysexits; 10use Unix::Sysexits;
11use SlackBuilder; 11use SlackBuilder;
12use SlackBuild::Request;
13use Net::SBo; 12use Net::SBo;
14use JSON; 13use JSON;
15use Try::Tiny;
16 14
17use constant { 15use constant {
18 EX_FAIL => 1 16 EX_FAIL => 1
@@ -45,17 +43,8 @@ GetOptions("h" => sub {
45 ) or exit(EX_USAGE); 43 ) or exit(EX_USAGE);
46 44
47abend(EX_USAGE, "bad number of arguments") unless @ARGV == 1; 45abend(EX_USAGE, "bad number of arguments") unless @ARGV == 1;
48my $reqname = shift @ARGV;
49my $req = try {
50 new SlackBuild::Request($reqname)
51} catch {
52 my $err = (split /\n/)[0];
53 $err =~ s{\s+at .* line \d+\.$}{};
54 abend(EX_NOINPUT, "$reqname: $err")
55};
56
57my $builder = new SlackBuilder(%sbargs); 46my $builder = new SlackBuilder(%sbargs);
58$builder->run($req); 47$builder->run($ARGV[0]);
59if ($builder->is_success) { 48if ($builder->is_success) {
60 if ($builder->output_files == 0) { 49 if ($builder->output_files == 0) {
61 print STDERR "Build exited successfully, but no output files were generated\n"; 50 print STDERR "Build exited successfully, but no output files were generated\n";

Return to:

Send suggestions and report system problems to the System administrator.