diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2019-03-21 10:23:53 +0100 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2019-03-21 10:23:53 +0100 |
commit | 4014ea72424c52d945c1cadfb47f100f192f6923 (patch) | |
tree | 69faea5fb85c98406a4cd4c516b0edd6770d0ee6 | |
parent | a9845d6973ca7271437a6fbc659f48cd1100add3 (diff) | |
download | slackbuilder-4014ea72424c52d945c1cadfb47f100f192f6923.tar.gz slackbuilder-4014ea72424c52d945c1cadfb47f100f192f6923.tar.bz2 |
Decode the request in SlackBuilder->run, if needed.
-rw-r--r-- | lib/SlackBuilder.pm | 19 | ||||
-rwxr-xr-x | slackbuilder | 13 |
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; | |||
6 | use SlackBuild::URI; | 6 | use SlackBuild::URI; |
7 | use SlackBuild::Archive; | 7 | use SlackBuild::Archive; |
8 | use SlackBuild::Registry; | 8 | use SlackBuild::Registry; |
9 | use SlackBuild::Request; | ||
9 | use SlackBuild::Rc; | 10 | use SlackBuild::Rc; |
10 | use File::Spec; | 11 | use File::Spec; |
11 | use File::Basename; | 12 | use File::Basename; |
@@ -14,6 +15,7 @@ use File::Copy; | |||
14 | use POSIX::Run::Capture qw(:all); | 15 | use POSIX::Run::Capture qw(:all); |
15 | use POSIX qw(:sys_wait_h strerror uname); | 16 | use POSIX qw(:sys_wait_h strerror uname); |
16 | use Log::Log4perl qw(:levels); | 17 | use Log::Log4perl qw(:levels); |
18 | use Try::Tiny; | ||
17 | use Carp; | 19 | use Carp; |
18 | 20 | ||
19 | use constant { | 21 | use 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; | |||
9 | use File::Spec; | 9 | use File::Spec; |
10 | use Unix::Sysexits; | 10 | use Unix::Sysexits; |
11 | use SlackBuilder; | 11 | use SlackBuilder; |
12 | use SlackBuild::Request; | ||
13 | use Net::SBo; | 12 | use Net::SBo; |
14 | use JSON; | 13 | use JSON; |
15 | use Try::Tiny; | ||
16 | 14 | ||
17 | use constant { | 15 | use 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 | ||
47 | abend(EX_USAGE, "bad number of arguments") unless @ARGV == 1; | 45 | abend(EX_USAGE, "bad number of arguments") unless @ARGV == 1; |
48 | my $reqname = shift @ARGV; | ||
49 | my $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 | |||
57 | my $builder = new SlackBuilder(%sbargs); | 46 | my $builder = new SlackBuilder(%sbargs); |
58 | $builder->run($req); | 47 | $builder->run($ARGV[0]); |
59 | if ($builder->is_success) { | 48 | if ($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"; |